以下之间的区别是什么:
npm install [package_name]
和:
npm install [package_name] --save
和:
npm install [package_name] --save-dev
这是什么意思?--save
和-dev
关键字的实际效果是什么?
--save-dev
用于保存包以用于开发目的。示例:单元测试,缩小。。--save
用于保存应用程序运行所需的包。
如果您在自己的项目上都尝试过--save
和--save-dev
,它们之间的区别可能不会立即明显。所以这里有几个例子。。。
假设您正在构建一个使用moment包解析和显示日期的应用程序。您的应用程序是一个调度程序,因此它确实需要这个包才能运行,如:没有它不能运行。在这种情况下,您将使用
npm install moment --save
这将在您的Package.json中创建一个新值
"dependencies": {
...
"moment": "^2.17.1"
}
当你在开发的时候,使用测试套件这样的工具确实很有帮助,可能需要茉莉花-核心和因果报应。在这种情况下,您将使用
npm install jasmine-core --save-dev
npm install karma --save-dev
这还将在您的Package.json中创建一个新值。
"devDependencies": {
...
"jasmine-core": "^2.5.2",
"karma": "^1.4.1",
}
您不需要测试套件在正常状态下运行应用程序,因此它是一个--save-dev
类型依赖项,仅此而已。你可以看到,如果你不理解真正发生的事情,那是多么的难以想象。
直接取自NPM docs docs#dependencies
依赖关系
依赖项在将包名称映射到版本范围的简单对象中指定。版本范围是具有一个或多个以空格分隔的描述符的字符串。依赖项也可以用tarball或git URL来标识。
请不要将测试线束或Transpiler放在dependencies对象中。请参见下面的devDependencies。
即使在文档中,它也会要求您对诸如测试线束之类的模块使用--save-dev。
我希望这能有所帮助,而且很清楚。
默认情况下,NPM只是在node_modules下安装一个包。当您试图为应用程序/模块安装依赖项时,您需要首先安装它们,然后将它们添加到package.json
的dependencies
部分。
--save-dev
将第三方包添加到包的开发依赖项中。当有人直接运行npm install
安装您的软件包时,将不会安装该软件包。通常,只有当某人首先克隆您的源存储库,然后在其中运行npminstall
时,才会安装它。
--save
将第三方包添加到包的依赖项中。每当有人运行NPM安装包
时,它将与包一起安装。
开发依赖项是那些仅在开发包时才需要的依赖项。这可以包括测试运行器,编译器,打包器等。这两种类型的依赖项都存储在包的package.json
文件中。--save
添加到dependencies
,--save-dev
添加到devdependencies
可以在此处参考npm安装文档。
--
请注意,从NPM5开始,--save
现在是默认选项。因此,不再显式地需要它。可以运行npm install
而不使用--save
,以获得相同的结果。