eslint应该列在项目的依赖项中,而不是devDependencies

时间:2017-07-06 03:28:05

标签: javascript node.js tdd mocha enzyme

要么我不理解节点100%中的dependenciesdevDependencies,要么eslint在这里错误(无法正确分析):

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

这些是测试依赖项,为什么说它们应该列在dependencies中呢?

补充说明:我们使用Travis作为我们的CI,所以我根本不知道它是否会对此产生影响。

2 个答案:

答案 0 :(得分:44)

将此添加到我的.eslintrc

解决了这个问题

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

[no-extraneous-dependencies] Add exceptions? #422

根据此用户的回复

  

你可以在你的.eslintrc中设置选项devDependencies:true   测试文件夹:

     

规则:import / no-extraneous-dependencies:[error,{devDependencies:   true}]然后你会得到任何被引用的软件包的报告   不包含依赖项或devDependencies。 然后你得到了   规则的优点,没有来自禁用评论的噪音

     

我认为这对你有用吗?这是我将如何使用该规则   你的情况,因为你把你的测试代码分成了一个测试   。目录

这篇文章也有助于确认我并非疯狂,不想在我的依赖列表中找到其中的一些Sharable ESLint Config

答案 1 :(得分:2)

如果您只想允许在{strong>测试文件中导入devDependencies ,则可以使用array of globs,因为no-extraneous-dependencies的{​​{3}} :

  

使用数组数组时,如果要插入的文件名与数组中的单个数组匹配,则设置将设置为true(没有错误报告),否则为false。

以下设置将仅对测试文件禁用皮棉。

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

这样,从devDependencies的导入仍然会报告为错误。