eslint 应该列在项目的依赖项中,而不是 devDependencies
Posted
技术标签:
【中文标题】eslint 应该列在项目的依赖项中,而不是 devDependencies【英文标题】:eslint should be listed in the project's dependencies, not devDependencies 【发布时间】:2017-12-09 21:27:38 【问题描述】:要么我不理解 dependencies
与 devDependencies
在节点 100% 中的区别,要么 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,所以我也不知道这是否会有所不同。
【问题讨论】:
【参考方案1】:通过将其添加到我的.eslintrc
来解决它:
"import/no-extraneous-dependencies": ["error", "devDependencies": true]
[no-extraneous-dependencies] Add exceptions? #422
根据该用户的回复:
你可以在你的 .eslintrc 中设置选项 devDependencies: true 测试文件夹:
规则:import/no-extraneous-dependencies:[错误, devDependencies: true ] 然后你会得到任何被引用的包的报告 不包括依赖项或 devDependencies。 然后你得到 规则的优点,没有来自禁用 cmets 的噪音。
我认为这可能对你有用?这就是我使用规则的方式,在 您的情况,因为您将测试代码分成了一个测试 目录。
此外,这篇文章有助于确认我不想在我的依赖项列表中加入其中的一些内容并没有发疯:Sharable ESLint Config
【讨论】:
确保使用 CTRL-C 和npm start
重新启动你的 node.js 服务器,这样才能赶上
如果您只想对某些文件(即测试)禁用 lint,请查看我的回答。
这可能会导致在非开发模式下运行时缺少依赖项。我认为@magic_al 答案是更好的选择。
@magic_al 的答案更好,因为它将 eslint 配置保存在一个地方 - 更易于理解和维护。【参考方案2】:
如果您想允许在仅测试文件中导入devDependencies
,您可以使用array of globs
,正如no-extraneous-dependencies
中的documentation 所述:
使用 glob 数组时,如果要检查的文件的名称与数组中的单个 glob 匹配,则该设置将设置为 true(不报告错误),否则设置为 false。
以下设置将仅禁用测试文件的 lint。
"import/no-extraneous-dependencies": ["error", "devDependencies": ["**/*.test.ts", "**/*.test.tsx"]]
这样,从devDependencies
导入的内容仍会报告为错误。
【讨论】:
任何人都知道为什么在 VScode 中添加Unexpected top-level property "import/no-extraneous-dependencies"
... 而报告的错误是 'yaml' should be listed in the project's dependencies, not devDependencies. eslint(import/no-extraneous-dependencies)
@Marvin 你的 eslint 文件中有 rules
对象的属性吗?
@DavidGilbertson 嗯。我以为我有,但现在尝试添加它,它工作正常。谢谢。【参考方案3】:
我能够通过将缺少的包(在我的例子中是 Typescript 和 Storybook)添加到我的 plugins
目录中的 .eslintrc
来解决它。
我在这篇文章中给出了细节:ESLint error: '@storybook/react' should be listed in the project's dependencies, not devDependencies
【讨论】:
以上是关于eslint 应该列在项目的依赖项中,而不是 devDependencies的主要内容,如果未能解决你的问题,请参考以下文章
Eslint 'rxjs/operators' 应该列在项目的依赖中