导出导入npm全局包

mat*_*ter 6 npm

我想从头开始重新安装npm.我想重新安装已在全球安装的软件包故宫,重装后.导出和导入全局安装模块的最安全(和非手动)方式是什么?

实现说明:我的旧npm还需要sudo用于全局安装,所以我并不是真的想重用同一个目录,而是让新的npm安装与旧的相同的包列表.

sep*_*ehr 9

TL;博士

# Export
npm list --global --parseable --depth=0 | sed '1d' | awk '{gsub(/\/.*\//,"",$1); print}' > path/to/npmfile

# Import
xargs npm install --global < path/to/npmfile
Run Code Online (Sandbox Code Playgroud)

说明

即使接受的答案给出了指针,但它没有清楚地显示如何导出/导入全局NPM包.

简单的输出npm list很难解析:

$ npm list` --global --depth=0

/usr/local/lib
??? api-designer@0.1.2
??? bower@1.7.9
??? browserify@13.1.0
??? grunt@1.0.1
??? gulp@3.9.1
??? kong-dashboard@1.1.2
??? npm@3.10.9
??? typescript@2.0.3
??? vue-cli@2.3.1
??? webpack@1.13.2
??? webpack-dev-server@1.16.1
??? yo@1.8.4
Run Code Online (Sandbox Code Playgroud)

这个输出有3个问题:

  1. 第一行不是包名
  2. 这些???都很难解析
  3. 版本是不可取的(至少在我的情况下)

幸运的是,NPM开发人员足够周到,可以包含一个--parseable选项:

$ npm list --global --depth=0 --parseable

/usr/local/lib
/usr/local/lib/node_modules/api-designer
/usr/local/lib/node_modules/bower
/usr/local/lib/node_modules/browserify
/usr/local/lib/node_modules/grunt
/usr/local/lib/node_modules/gulp
/usr/local/lib/node_modules/kong-dashboard
/usr/local/lib/node_modules/npm
/usr/local/lib/node_modules/typescript
/usr/local/lib/node_modules/vue-cli
/usr/local/lib/node_modules/webpack
/usr/local/lib/node_modules/webpack-dev-server
/usr/local/lib/node_modules/yo
Run Code Online (Sandbox Code Playgroud)

现在,问题是:

  1. 第一行不像其他人那样以包名结束
  2. 包名前的路径前缀(/usr/local/lib/node_modules/)

如果我们输出到输出sed '1d',我们摆脱第一行.然后我们可以通过管道输出来删除路径前缀,awk以获得已安装包名称的干净列表.

$ npm list --global --parseable --depth=0 | sed '1d' | awk '{gsub(/\/.*\//,"",$1); print}'

api-designer
bower
browserify
grunt
gulp
kong-dashboard
npm
typescript
vue-cli
webpack
webpack-dev-server
yo
Run Code Online (Sandbox Code Playgroud)

您只需附加一个> /path/to/file即可将输出保存到文件中.然后安装这些软件包的最新版本:

xargs npm install --global < path/to/file
Run Code Online (Sandbox Code Playgroud)

您可以安全地删除--globalarg,以导入/导出本地安装的npm软件包.

  • 如果有人想要导出版本,则将第一个更改为 `npm list --global --depth=0 | sed '1d' | awk '{gsub(/[├└]\─*\S/,"",$1); 打印}'&gt; path/to/npmfile` (2认同)

top*_*man 6

npm ls -g --depth=0
Run Code Online (Sandbox Code Playgroud)

将为您提供全局安装的模块(及其版本)列表。从输出中,您将能够生成npm install您需要的命令(取决于您是否不想保留版本/您的操作系统...)