Создал новый проект React. Там почти ничего нет - только SSR, разбиение кода и парочка «привет, мир!» страниц. Сверху еслинт добавил похуже. До того, как я добавила более красивое, ворс занимал 10-15 сек c. Теперь у меня есть +2 минуты на почти пустой проект:
time yarn lint
yarn lint 3.19s user 0.49s system 2% cpu 2:35.39 total
Думал, что линяю node_modules. Чтобы проверить, что обновлены 2 файла:
// node_modules/eslint/lib/rules/no-unused-vars.js
...
create(context) {
const sourceCode = context.getSourceCode();
// ########### LOG #############
console.log(`eslint processing file [${+new Date()}] ${context.getFilename()}`);
const REST_PROPERTY_TYPE = /^(?:RestElement|(?:Experimental)?RestProperty)$/u;
и
// node_modules/eslint-plugin-prettier/eslint-plugin-prettier.js
...
const prettierFileInfo = prettier.getFileInfo.sync(
filepath,
Object.assign(
{},
{ resolveConfig: true, ignorePath: '.prettierignore' },
eslintFileInfoOptions
)
);
// ############## LOG ########################
console.log('Prettier processing file', filepath);
// Skip if file is ignored using a .prettierignore file
if (prettierFileInfo.ignored) {
Был бы очень признателен, если бы вы могли сказать мне лучший способ перечислить обработанные файлы. Трюк с
"scripts": {
...
"lint": " DEBUG=eslint:* eslint --ext .js --fix server src tools",
дал слишком много данных.
Не уверен, что мне вообще нужен этот файл
# .prettierignore
# Ignore everything:
/*
# Good guys
!/src
!/server
!/tools
Вывод показал мне, что разница между временными метками первый и последний файл ~ 1.5 se c.
eslint processing file [1592686834050] /Users/...
Prettier processing file...
....
eslint processing file [1592686835724] /Users/...
Prettier processing file ...
Просто интересно, для чего используются остальные 1500 se c?
.eslintr c file
{
"parser": "babel-eslint",
"extends": [
"airbnb",
"plugin:prettier/recommended"
],
"env": {
"browser" : true,
"jest": true
},
"plugins": [
"prettier",
"react-hooks",
"jsdoc",
"jest"
],
"rules": {
"max-len": [2, 120],
"react/jsx-wrap-multilines": ["error", {"declaration": false, "assignment": false}],
"import/prefer-default-export": 0,
"react/jsx-filename-extension": 0,
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",
"arrow-body-style": ["error", "as-needed"],
"curly": ["error", "all"],
"jsdoc/check-indentation": "error",
"jsdoc/check-param-names": "error",
"jsdoc/check-property-names": "error",
"jsdoc/check-tag-names": "error",
"jsdoc/require-hyphen-before-param-description": ["error", "never"],
"jsdoc/require-param-description": "error",
"jsdoc/require-param-name": "error",
"jsdoc/require-param-type": "error",
"jsdoc/require-param": "error",
"jsdoc/require-property": "error",
"jsdoc/require-property-name": "error",
"jsdoc/require-property-type": "error",
"jsdoc/require-returns-description": "error",
"jsdoc/require-returns-type": "error",
"jsdoc/require-returns": "error"
},
"settings": {
"import/resolver": {
"node": {
"paths": ["src", "server", "tools"]
}
}
},
"overrides": [
{
"files": [ "**/*.stories.js", "**/*.story.js" ],
"rules": {
"import/no-extraneous-dependencies": 0
}
}
]
}