在我的项目中,运行dependencies
的devDependencies
,或者实际上是devDependencies
时,没有安装
npm install
或
npm install --include=dev
从很多方面看,这似乎是明智的。但是当devDependency
不可用时,其中一个依赖项可能不正确地失败。
这是要工作吗?npm
确实安装了子dependencies
,它似乎只是忽略了devDependencies
。
我的一个依赖项package.json
的示例
{
"name": "test-helper-chai",
"version": "1.0.11",
"description": "chai extended with specific assertions",
"license": "MIT",
"main": "dist/index.js",
"devMain": "src/index.js",
"engines": {
"node": ">=14"
},
"devDependencies": {
"chai": "^4.3.4",
"eslint": "^8.24.0",
"prettier": "^2.7.1",
"sinon": "^9.2.4"
},
"dependencies": {
"check-error": "^1.0.2",
"lodash": "^4.17.21"
},
"scripts": {
"build": "yarn build:src",
"build:src": "build -dest \"./dist\" -src \"./src\" -js -ts -maps",
"test": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
"test:browser": "test --integration --unit --runner karma",
"test:integration": "test --integration --runner mocha",
"test:style": "eslint ./src/**/*.*",
"test:unit": "test --unit --runner jest"
}
}
这里没有安装chai
,但安装了check-error
。
1条答案
按热度按时间bxgwgixi1#
这是预期行为。
当您在与包相同的目录中运行
npm install
时。json文件,npm将同时安装devDependencies和该包的依赖。json。假定该包。JSON是正在开发的包。嵌套依赖项的工作方式不同。只有嵌套依赖项的常规依赖项才会被安装。这是为了减少肿胀。想象一下,如果每个包都附带了所有的构建工具、开发包和linter沿着它们的生产代码!
对于您开发的软件包,值得牢记这一点。如果需要依赖项才能运行生产包,则应将其安装在
dependencies
中。如果它只用于构建/开发,它应该放在devDependencies中。