npm – 将安装的软件包保存为依赖项
我已经通过npm install $package
安装了一些软件包,而不是先设置package.json
。 现在我想创build一个package.json
文件,但保留所有安装的包作为依赖项。 简单的运行npm init
不提供这个选项,我能自动实现吗?
2016年1月更新
npm现在支持这个开箱即用的function。 我有npm版本3.5.2 。
所以只需安装一个带有下划线的node_modules文件夹。
npm init --yes
然后:
cat package.json
包含在package.json中:
"dependencies": { "underscore": "^1.8.3" },
更新:随着npm v3的推出,这个技巧会在你的package.json
文件中创build很多不需要的条目。 这是因为模块的依赖关系现在被压扁,正如@ sunny-mittal指出的那样。
就我所知, npm
并不支持这一点。 你必须重新安装每个软件包 – 保存每个软件包。
但是,如果你使用基于Unix的系统,那么有一个解决方法。 从项目根文件夹中,已经创build了一个package.json
文件( npm init
,如您所述),运行:
npm install $(ls node_modules/) --save
它将重新安装包,并将其作为dependencies
保存到package.json
中。
由于NPM node_modules
现在是平坦的,而node_modules
并不好。
这是我编织在一起。
npm list --depth=0 | sed "1d" | sed -E "s/^[\`+-]+\s//" | sed -E "s/@(.*)$//"
这实际上是ls node_modules
之前做的。
单线保存安装。
npm install $(npm ls | sed "1d" | sed -E "s/^[\`+-]+\s//" | sed -E "s/@(.*)$//") --save
我在用着
$ npm --version 3.5.3
像这样的列表。
$ npm list --depth=0 x@0.1.0 /home/victor/x +-- babel-eslint@5.0.0-beta6 +-- babel-preset-es2015@6.3.13 +-- gulp@3.9.0 +-- gulp-babel@6.1.1 `-- gulp-eslint@1.1.1
我写了一个名为pkg-save的模块。
如果你的npm版本是“2.xx”,你可以尝试一下。
我还没有在npm v3中testing过,所以我不知道它在npm v3中是否有用。
当我从bitbucket中克隆一个新项目时,我遇到了这个问题。 我通过以下步骤解决了这个问题:
- 转到项目terminal中package.json所在的根文件夹 。
- 然后运行以下命令。
$ npm install