NPM:安装包及其自己的devDeps

时间:2015-12-29 00:41:55

标签: npm

我只是熟悉命令行工具,如npm。我一直在寻找答案,但却找不到清楚的答案。

我要做的是将materialize-css包安装到我的测试包中,以及它的devDependencies,如“autoprefixer”。 This is materializeCSS's package.json file

这是我的所作所为: 在我新创建的空白文件夹“testProject”下,我使用npm init为我的测试包创建一个package.json文件:

{
  "name": "create_project",
  "version": "1.0.0",
  "description": "Setting up a project",
  "main": "index.html",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "shenk wen",
  "license": "MIT"
}

然后,我做

npm install materialize-css

我原以为上面的命令会安装materialize-css的所有依赖项和devDependencies,但只安装了依赖项。我读了这个question,并且接受的答案建议在命令中添加--dev。但这似乎不是我要找的答案,因为--dev只会使materialize-css成为我的测试包的devDependency,而不是安装自己的devDependencies。其他答案并不那么简单。我可以使用任何参数来实现这个目标吗?或者我是否必须更改我不知道如何的env_variable?

2 个答案:

答案 0 :(得分:2)

在较旧的npm版本中,'npm install --dev'安装了所有依赖项的所有devDependencies。这也用于以递归方式工作,因此您最终还要下载依赖项的devDependencies的devDependencies等等。这导致非常长的安装时间/下载大小。

此外,该功能的目的是值得怀疑的:你为什么要关心你的dep的devDeps?出于这些原因--dev已从npm中删除:

https://github.com/npm/npm/issues/5554

'npm install'的当前行为是:安装'main'软件包的所有deps和devDeps(首先是你安装的软件包),但是在递归时,只安装deps(并且没有devDeps) )。

如果你想安装&将依赖项保存到package.json,你应该使用--save或--save-dev,我不认为--dev这样做。

答案 1 :(得分:0)

如果您希望将已安装的模块devDependencies作为项目的依赖项安装,那么您几乎肯定希望git clone该模块的回购或代替它。当您在克隆仓库中运行npm install时,也会安装所有模块devDependencies

(我不是贸易开发商,我的npm-fu有点生疏,所以我把自己的想法弄得一团糟.Tomas Kulich的question "你为什么要关心deps的devDeps?" 帮助我意识到我的方式错误。)