【问题标题】:Install npm package without dependencies安装不依赖的 npm 包
【发布时间】:2015-04-07 14:22:30
【问题描述】:

我正在寻找最佳解决方案,如何在没有 package.json 文件中描述的依赖项的情况下安装 npm 包。

目标是在安装包之前更改依赖版本。我可以通过下载源代码为一个包手动完成,但如果您有许多嵌套依赖项,它就会成为问题。

【问题讨论】:

标签: node.js npm package.json


【解决方案1】:

这是一个 shell 脚本,似乎可以为您提供所需的提取文件。

#!/bin/bash
package="$1"
version=$(npm show ${package} version)
archive="${package}-${version}.tgz"
curl --silent --remote-name \
  "https://registry.npmjs.org/${package}/-/${archive}"
mkdir "${package}"
tar xzf "${archive}" --strip-components 1 -C "${package}"
rm "${archive}"

将其保存为npm_download.sh 并使用您想要的包的名称运行它:

./npm_download.sh pathval

【讨论】:

  • 如果你有自己的 npm 注册表;将 https://registry.npmjs.org 替换为变量,例如${regurl},并将其作为参数传递,例如regurl="$2"
【解决方案2】:

请在 stackexchange 上查看类似问题:https://unix.stackexchange.com/questions/168034/is-there-an-option-to-install-an-npm-package-without-dependencies

我的解决方案是在安装前将 package.json 重命名为 package.bak,然后在安装后恢复重命名:

RENAME package.json package.bak
npm install <package_name> --no-save
RENAME package.bak package.json

【讨论】:

    【解决方案3】:

    我补充了上面的脚本,允许指定多个包,避免临时下载文件,直接安装包到node_modules

    #!/bin/sh
    # filename suggestion: `npm-i-no-deps`
    
    while [ $# -gt 0 ]
    do
      package="$1"
      version=$(npm show ${package} version)
      mkdir -p "node_modules/${package}"
      echo "Installing ${package}-${version}"
      curl --silent "https://registry.npmjs.org/${package}/-/${package}-${version}.tgz" | tar xz --strip-components 1 -C "node_modules/${package}"
      shift
    done
    

    我发现此脚本对于依赖项对其依赖项要求过于严格的情况很有用,您可以安装您知道可以正常工作的 deps,而无需将它们添加到您的 package.json,直到更新上游依赖项。

    【讨论】:

      【解决方案4】:

      我改编了 mxcl 中的脚本来处理作用域包 (@user/package)

      #!/bin/sh
      # filename suggestion: `npm-i-no-deps`
      
      while [ $# -gt 0 ]
      do
        package="$1"
        version=$(npm show ${package} version)
        mkdir -p "node_modules/${package}"
        echo "Installing ${package}-${version}"
        packagename=$(echo $package | sed 's/@.*\///g')
        curl --silent "https://registry.npmjs.org/${package}/-/${packagename}-${version}.tgz" | tar xz --strip-components 1 -C "node_modules/${package}" 
        shift
      done
      
      
      

      警告:mac 有一个奇怪的 sed 版本,它应该可以工作,但我不能保证。

      【讨论】:

        猜你喜欢
        • 2017-04-08
        • 2017-09-30
        • 1970-01-01
        • 2015-12-15
        • 1970-01-01
        • 2021-11-14
        • 1970-01-01
        • 2016-03-14
        • 2013-08-26
        相关资源
        最近更新 更多