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

时间:2016-09-27 05:14:17

标签: 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"
}

我知道作者是通过npm install babel-core --save -dev

安装的

但这是为了什么?当您推送代码时,devDependencies模块仍然存在。

3 个答案:

答案 0 :(得分:11)

我写了一篇关于此的文章,但它被删除了。

文章摘录:

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

发布到npm

如果您要发布到npm,那么为正确的模块使用正确的标志非常重要。如果它是你的npm模块需要运行的东西,那么使用“--save”标志将模块保存为依赖项。如果它是您的模块不需要运行但需要进行测试的东西,那么请使用“--save-dev”标志。

# For dependent modules
npm install dependent-module --save

# For dev-dependent modules
npm install development-module --save-dev

不适用于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
npm install compiler-module --save-dev

答案 1 :(得分:5)

两者之间的主要区别是:

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

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

希望它能清除你的怀疑。

答案 2 :(得分:3)

依赖关系vs开发依赖关系

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

Eg- React,React - dom

不需要在生产服务器中安装Dev依赖模块,因为你不会在那台机器上进行开发。将代码转换为javascript,编译框架和文档生成器的编译器可以被认为是dev依赖项,因为它们仅在需要时才需要发展。

Eg- ESLint,Babel,webpack