gpt4 book ai didi

npm - 导出导入 npm 全局包

转载 作者:行者123 更新时间:2023-12-04 13:31:35 24 4
gpt4 key购买 nike

我想从头开始重新安装 npm。重新安装后,我希望重新安装已在 npm 中全局安装的软件包。导出和导入全局安装的模块的最安全(和非手动)方法是什么?

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

最佳答案

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

解释

即使接受的答案给出了一个指针,但它并没有清楚地显示如何导出/导入全局 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

此输出存在 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

    现在,问题是:
  • 第一行不像其他人那样以包名结尾
  • 包名前的路径前缀(/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

    您可以简单地附加一个 > /path/to/file将输出保存到文件中。然后安装这些软件包的最新版本:

    xargs npm install --global < path/to/file

    您可以放心地删除 --global arg,导入/导出本地安装的 npm 包。

    关于npm - 导出导入 npm 全局包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32628351/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com