在一个节点项目中,我发现了两种依赖:
"dependencies": {
"axios": "0.9.1",
"express": "4.13.4",
"lodash": "4.6.1",
"react": "^0.14.7",
"react-dom": "^0.14.7",
"react-redux": "^4.4.0",
"react-router": "^2.0.0",
"redux": "^3.3.1"
},
"devDependencies": {
"babel-core": "^6.5.2"
}
Run Code Online (Sandbox Code Playgroud)
我知道作者通过它安装它 npm install babel-core --save -dev
但这是为了什么?当您推送代码时,devDependencies模块仍然存在.
Dan*_*non 12
我写了一篇关于此的文章然而它被删除了.
文章摘录:
mod-a
dev-dependents:
- mod-b
dependents:
- mod-c
mod-d
? dev-dependents:
- mod-e
dependents:
- mod-a
----
npm install mod-d
installed modules:
- mod-d
- mod-a
- mod-c
----
checkout the mod-d code repository
npm install
installed modules:
- mod-a
- mod-c
- mod-e
Run Code Online (Sandbox Code Playgroud)
如果要发布到npm,则必须为正确的模块使用正确的标志.如果它是你的npm模块需要运行的东西,那么使用"--save"标志将模块保存为依赖项.如果它是您的模块不需要运行但需要进行测试的东西,那么使用"--save-dev"标志.
# For dependent modules
?npm install dependent-module --save
?# For dev-dependent modules
np?m install development-module --save-dev
Run Code Online (Sandbox Code Playgroud)
如果您不发布到npm,从技术上讲,您使用哪个标志并不重要.但是,我发现将"--save"标志用于将非标准代码引入源文件的模块是一种很好的做法.然后对编译器运行所需的模块使用"--sav-dev"标志.
# For modules that introduce non-standard source code
npm install source-module --save
?# For modules that your compiler needs to function
np?m install compiler-module --save-dev
Run Code Online (Sandbox Code Playgroud)
小智 8
依赖与开发依赖
开发依赖项是仅在开发期间需要的模块,而在运行时需要依赖项。如果您正在部署应用程序,则必须安装依赖项,否则您的应用程序将无法运行。您从使程序运行的代码中调用的库可以被视为依赖项。
例如-反应,反应-dom
开发依赖模块不需要安装在生产服务器中,因为你不会在那台机器上开发。将你的代码转换为 javascript 的编译器,测试框架和文档生成器可以被视为开发依赖,因为它们只在开发过程中需要。
例如- ESLint , Babel , webpack
小智 5
两者的主要区别是:
-in devdependencies,开发人员根据需要自定义或修改节点包.例如,在执行grunt任务时,我们根据Gruntfile中的要求更改任务,与您正在使用的babel的情况相同.
-in dependencies,开发人员直接使用节点包而无需更改ex-express.
希望它能清除你的怀疑.
| 归档时间: |
|
| 查看次数: |
20734 次 |
| 最近记录: |