Dev.des中的Dev依赖关系与依赖关系

Mar*_*ane 14 node.js npm

在一个节点项目中,我发现了两种依赖:

    "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,则必须为正确的模块使用正确的标志.如果它是你的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

如果您不发布到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)

  • 是的我写了aritcle:P (3认同)

小智 8

依赖与开发依赖

开发依赖项是仅在开发期间需要的模块,而在运行时需要依赖项。如果您正在部署应用程序,则必须安装依赖项,否则您的应用程序将无法运行。您从使程序运行的代码中调用的库可以被视为依赖项。

例如-反应,反应-dom

开发依赖模块不需要安装在生产服务器中,因为你不会在那台机器上开发。将你的代码转换为 javascript 的编译器,测试框架和文档生成器可以被视为开发依赖,因为它们只在开发过程中需要。

例如- ESLint , Babel , webpack


小智 5

两者的主要区别是:

-in devdependencies,开发人员根据需要自定义或修改节点包.例如,在执行grunt任务时,我们根据Gruntfile中的要求更改任务,与您正在使用的babel的情况相同.

-in dependencies,开发人员直接使用节点包而无需更改ex-express.

希望它能清除你的怀疑.