Eslint 应该列在项目的依赖项中,而不是 devDependency 中

要么我还不能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中呢?

附加说明: 我们利用特拉维斯作为我们的线人,所以我不知道这是否有什么不同。

106315 次浏览

把这个加到我的 .eslintrc里就解决了这个问题:

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

[无外部依赖]添加异常? # 422

基于此用户的回复 :

您可以在您的 测试文件夹:

Rules: import/no-extranous-Dependency: [ error,{ devDependency: [ true }]然后您将得到所引用的任何包的报告 不包括依赖项或 devDependency 规则的优点是,禁用注释 .

没有噪音

我想这对你可能有用? 这就是我使用规则的方式 您的用例,因为您已经将您的测试代码分离到了一个测试中 目录。

此外,这篇文章还有助于确认,我不想在我的依赖项列表中包含这些内容并不是疯了。 : < a href = “ https://medium.com/defmethod-works/Sharable-ESLint-Config-b96af3b93960”rel = “ norefrer”> Shaable ESLint Config

如果你想允许在 仅测试文件中导入 devDependencies,你可以使用 array of globs,就像 no-extraneous-dependencies文件所说的:

在使用 globs 数组时,如果被连接的文件名与数组中的一个 globs 匹配,则设置为 true (没有错误报告) ,否则设置为 false。

下面的设置将仅禁用测试文件的 lint。

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

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

我能够通过在 .eslintrc中的 plugins目录中添加缺少的包(在我的例子中是 Typecript 和 Storybook)来解决这个问题。

我在这篇文章中给出了细节: ESLint 错误:@storybook/response 应该列在项目的依赖项中,而不是 devDependency 中

我用

 'import/no-extraneous-dependencies': [
'error',
{
projectDependencies: false,
},
],