2016-04-29 88 views
-1

我正在学习Node,但仍然不明白为什么我应该使用(或不应该?)键--save--save-dev事件后读https://docs.npmjs.com/cli/installNPM安装 - 保存密钥

好吧,我明白有package.json之后出现npm init。我真的需要这个文件吗?

接下来,在这个文件中有几个部分,如dependenciesdependenciesDev。我明白,最后一个指定仅在开发应用程序时使用的模块。但为什么我应该添加一些东西到dependencies部分?例如,我想使用react-loopback,但是在指定的文档中,应该在不保存相关性的情况下安装它(即,没有--save密钥,只需npm install react-loopback)。为什么?

最后:我应该如何决定保存在package.json什么 - 不保存?

+2

您可以使用package.json指定项目的所有依赖关系,而无需在您的代码库中实际提供它们。这在使用版本控制时非常有用,例如git或svn,因为那样你就不必将它们添加到你的仓库。克隆你的项目的每个人都必须执行“npm install”,并且应该很好。 – puelo

+0

@puelo明白了。但为什么有些软件包说它应该在不保存'dependencies'的情况下安装?文档写入时错过了这一点?或故意省略? –

+1

在文档中不提及'--save'的原因可能是他们认为开发人员自己知道它。 – puelo

回答

1

--save适用于您的nodejs依赖关系,用作应用程序的一部分,--save-dev用于加载不属于应用程序但在开发时需要的开发依赖关系。

这些一个很好的例子是express包,因为它需要为应用程序的一部分的应用程序dependecy而gulp/ grunt包,因为它需要对应用程序的开发和建设,但一个开发的依赖并不像你的应用程序的一部分

0

当运行npm install --save--save-dev

  • NPM将保存NPM包的副本./node_modules/目录内
  • NPM会写故宫PAC kage名称和版本package.json
  • 当您的节点应用程序需要/导入该代码中的模块时,它将使用./node_modules/中的副本。否则它会继续在父目录中查看。

npm install --save

运行npm install --save当它是你需要在运行时为您的节点应用一个NPM包。 这将是有用的,当有一些像Heroku这样的部署平台,将只安装依赖关系列在package.json。在这种情况下,您将不得不发送到Heroku已经预建的包,因为它不会安装devDependencies

例如。快递,要求,伐木工人


npm install --save-dev

运行npm install --save-dev的包,你将在你的客户的捆绑,你需要运行单元测试等JavaScript文件或工具的构建只使用

例如。 React,eslint,mocha,babel

+0

感谢您澄清,我只是对你在devDependencies之间提到React有点混淆。如果未在'dependencies'中指定它,那么一旦部署到Heroku的应用程序将不可用。你能澄清一下你的意思吗? –

+0

它将在您的** bundle.js **中可用,因为浏览器不使用node_modules。浏览器使用bundle.js,其中包含您的单页应用程序所需的所有npm包。 如果您使用React在服务器端进行渲染,那么您确实需要在*依赖关系中包含React,因为它将被您的节点应用程序使用 – cuadraman