pip冻结Node和npm

这在Python中是惯用的:

pip freeze > requirements.txt pip install -r requirements.txt 

第一个命令将需求列表保存到文件中。 之后,您可以使用该命令将需求安装到您的环境中。

节点有npm install ,但我没有得到如何我应该将我的依赖状态转储到package.json。 我谷歌search,发现这一点 :

 npm ls | grep -E "^(├|└)─" | cut -d" " -f2 | awk '{FS = "@"; print "\""$1"\"", ":", "\""$2"\""}' 

但是正如这条pipe道的作者所说的那样,还有更好的办法呢? 我在这里错过了什么?

我只想把我当前的代码转储到package.json中。 正如https://npmjs.org/doc/shrinkwrap.html所说,

如果你想使用“npm install”,那么“package.json”文件仍然是必需的。

我已经浏览了shrinkwrap的信息,但是我没有看到如何用shrinkwrap简单地完成这个任务。

这可能适合你。 npm收缩包装

 npm shrinkwrap 

这是我得到的最接近的

npm freezelol

npm ls | grep -E "^(├|└)─" | cut -d" " -f2 | awk -v quote='"' 'BEGIN { FS = "@" } ; { print quote $1 quote,":",quote $2 quote"," }' | sed -e 's/ :/:/g'

输出就像

  "bower": "1.3.12", "chai": "2.1.2", "cucumber": "0.4.8", 

仍然需要修剪最后的逗号,但是非常接近!

您可以使用npm init从当前安装的软件包中创build一个package.json。 然后,您可以轻松移动package.json,只需执行npm install即可在任何需要的位置安装软件包。

下面是parsingnpm ls命令的另一个较短版本:

 npm ls | grep -o "\S\+@\S\+$" | tr @ ' ' | awk -vq='"' '{print q$1q": "q"^"$2q","}' 

这里是一个值得添加到你的shell rc文件的别名:

 alias npm-freeze='npm ls | grep -o "\S\+@\S\+$" | tr @ " " | awk -vq='\''"'\'' '\''{print q$1q": "q"^"$2q","}'\''' 

并运行它为:

 npm-freeze 

输出如下所示:

 "backbone": "^1.3.2", "underscore": "^1.8.3", "bootstrap": "^3.3.6", "bootstrap-sass": "^3.3.6", "grunt": "^0.4.5", 

要过滤,只需将其pipe理为grep ,例如

 $ npm-freeze | grep grunt "grunt": "^0.4.5", "grunt-cli": "^0.1.13", "grunt-contrib-watch": "^0.6.1", "grunt-sass": "^1.1.0", "load-grunt-tasks": "^3.4.1", 

下面是将输出保存到package.json并运行npm install的例子:

 printf "{\n"\""name"\"": "\""npm-freeze"\"",\n"\""dependencies"\"": {\n$(npm-freeze | grep grunt | head -c -2)\n}\n}" | tee package.json && npm install