代码之家  ›  专栏  ›  技术社区  ›  Wenfang Du Saurabh P Bhandari

bash—可以安装列出的NPM全局包的输出命令

  •  2
  • Wenfang Du Saurabh P Bhandari  · 技术社区  · 6 年前

    我知道 npm ls -g --depth=0 将产生输出

    C:\Users\leon\AppData\Roaming\npm
    +-- create-react-app@1.5.2
    +-- eslint@5.2.0
    +-- prettier@1.13.7
    `-- serve@9.4.0
    

    我正在寻找一个bash命令,它可以基于上述输出输出输出以下内容:

    npm i -g create-react-app
    npm i -g eslint
    npm i -g prettier
    npm i -g serve
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   tripleee    6 年前

    以下是对@0.sh发布的答案的一个细微改进。

    npm ls -g --depth=0 |
    sed -n 's/^[^A-Za-z0-9_]*//;s/@.*$//p' |
    xargs -n 1 npm i -g
    

    将代码移入 xargs 使生成的命令被执行,而不仅仅是打印。(如果你不想要,你可以 xargs -n 1 echo npm i -g 还原为仅打印,或移动 npm i -g 回到 sed 替代)

    如果你愿意的话,可以用锥子或者其他的方法来提取。偶数 grep ;

    npm ls -g --depth=0 |
    grep -o '[A-Za-z][^@]*' |
    xargs -n 1 npm i -g
    

    尽管如此,也要注意 npm ls 有生成选项 --parseable --json 输出格式,这通常是脚本中应该使用的格式。

    npm ls --global --parseable --depth=0 |
    xargs -n 1 npm install --global
    
        2
  •  2
  •   tripleee    6 年前

    你可以使用 sed 处理此问题的工具

    npm ls -g --depth=0 | sed -nE 's/^\W+/npm i -g /p'