对于npm, - dev, - save和--save-dev有什么区别?

时间:2017-02-13 06:37:28

标签: node.js npm

我的理解是:

npm install //Installs everything that is listed in package.json
npm install --production //install everything minus dev packages
npm install $package --save //installs and add it to package.json
npm install $package --dev //install and add it to package.json but under dev
npm install --save-dev //??? isn't same thing as --dev flag

也许没有

之类的东西
npm install $package --dev

2 个答案:

答案 0 :(得分:4)

引自the npm install documentation

  

npm install需要3个独有的可选标志来保存或更新   主package.json中的包版本:

     

-S, - save:包将出现在您的依赖项中。

     

-D, - save-dev:包将出现在你的devDependencies中。

     

-O, - save-optional:包将出现在您的optionalDependencies中。

所以似乎没有npm install $package --dev

这样的选项

答案 1 :(得分:2)

在各种论坛上以及通过npm安装组件的许多文档中发现的许多互联网答案中都提到了--save

本地安装(不需要--save,默认值)

事实证明,如果你没有使用-g标志,那么你将--save作为默认值(现在是--save-prod-P)。所以以下都是一样的:

npm i blabla 
npm install blabla
npm i blabla --save
npm install blabla
npm i blabla --save-prod
npm install blabla -P

这个命令的作用是twosome。

  1. 如果缺少或需要升级,它会安装blabla包及其所有依赖项。安装位置位于node modules文件夹中的项目下。
  2. 它在package.json中的一个名为dependencies的部分中标记了此包。因此,下次执行npm installyarn install时,将根据此列表安装所有正确的软件包。
  3. 预计全局程序包将安装在用户的node_modules文件夹中,以用于全局程序包。您安装的全局程序包未在项目中的任何位置列出。见下一节。

    全局安装(-g - 不写入package.json)

    以下是彼此相同的,但这次他们不会将他们正在做的事情写入package.json文件,而是工作,因为他们是"在路径":

    npm i -g blabla
    npm i blabla -g
    npm i blabla --save-global
    

    如上所述,如果缺少或需要升级,请安装blabla及其所有依赖项,但不要在package.json文件中写入任何内容。

    开发人员/开发安装:

    最后但并非最不重要的是dev选项。以下都是等效的

    npm i -d blabla
    npm i blabla -d
    npm install blabla --save-dev
    npm install blabla --d
    

    执行以下操作:

    1. 它会将blabla和所有依赖项安装到名为node modules的项目下的文件夹中。以及

    2. 它在package.json 中列出了blabla包和blabla需要的任何其他包,但这一次在一个名为Dev-Dependencies的特殊部分下。

    3. 然后你可以运行npm i(或yan i),现在它取决于你。如果您作为开发人员打包,一切都会像往常一样安装。 (在project.json中无需编写任何内容,因为我们只是准确地从列表中读取所有内容!!)

      但是,如果你为生产安装(不是这个答案范围的一部分,怎么做),所有的Dev软件包都不会安装。它们只是你想要开发阶段的东西,比如Linters读取并检查你的代码是否有错误。