Eslint следует указывать в зависимостях проекта, а не devDependencies

Либо я не понимаю dependencies vs. devDependencies в node 100%, либо eslint здесь просто неправильно (не способен правильно это проанализировать):

   3:1   error  'chai' should be listed in the project dependencies, not devDependencies              import/no-extraneous-dependencies
   4:1   error  'chai-enzyme' should be listed in the project dependencies, not devDependencies       import/no-extraneous-dependencies
   5:1   error  'enzyme' should be listed in the project dependencies, not devDependencies            import/no-extraneous-dependencies
   7:1   error  'sinon' should be listed in the project dependencies, not devDependencies             import/no-extraneous-dependencies
   9:1   error  'redux-mock-store' should be listed in the project dependencies, not devDependencies  import/no-extraneous-dependencies

Это тестовые зависимости, поэтому почему они говорят, что они должны быть перечислены в dependencies?

Дополнительное примечание: мы используем Travis как наш CI, поэтому я не знаю, действительно ли это имеет значение для этого.

Ответ 1

Решил это, добавив это в мой .eslintrc:

"import/no-extraneous-dependencies": ["error", {"devDependencies": true}]

[no-extraneous-dependencies] Добавить исключения? # 422

Основываясь на этом ответе пользователя:

вы можете установить опцию devDependencies: true в .eslintrc в вашем тестовая папка:

rules: import/no-extraneous-dependencies: [error, {devDependencies: true}] Затем вы получите отчеты о любых пакетах, на которые ссылаются, которые не включены зависимости или devDependencies. Затем вы получаете добротность правила, без шума от отключенных комментариев.

Я думаю, что это может сработать для вас? Вот как я бы использовал правило, в ваш случай, так как ваш тестовый код разделен на тест каталог.

Также этот пост был полезен, чтобы подтвердить, что я не был сумасшедшим, чтобы не хотеть некоторых из них в моем списке зависимостей: Sharable ESLint Config

Ответ 2

Если вы хотите разрешить импорт devDependencies в тестовых файлах, вы можете использовать array of globs, поскольку документация о состоянии no-extraneous-dependencies:

При использовании массива глобусов для параметра будет задано значение true (об ошибках не сообщается), если имя помеченного файла совпадает с одним глобусом в массиве, и false в противном случае.

Следующая настройка отключит пух только для тестовых файлов.

"import/no-extraneous-dependencies": ["error", {"devDependencies": ["**/*.test.ts", "**/*.test.tsx"]}]

Таким образом, импорт из devDependencies по-прежнему регистрируется как ошибки.

Ответ 3

Вы devdeependencies не используются в производстве.

Я так понимаю, вы все еще хотите запустить свои тесты в режиме производства, правда?

Поэтому имеет смысл иметь их в зависимостях