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中克隆一个新项目时,我遇到了这个问题。 我通过以下步骤解决了这个问题:

  1. 转到项目terminal中package.json所在的根文件夹
  2. 然后运行以下命令。

$ npm install