安装没有依赖项的npm包

时间:2015-02-07 13:38:24

标签: node.js npm package.json

我正在寻找如何安装npm软件包的最佳解决方案,而不使用它的package.json文件中描述的依赖项。

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

3 个答案:

答案 0 :(得分:6)

这是一个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

答案 1 :(得分:1)

请检查stackexchange上的simialr问题:https://unix.stackexchange.com/questions/168034/is-there-an-option-to-install-an-npm-package-without-dependencies

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

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

答案 2 :(得分:0)

我补充了上面的脚本以允许指定多个包,避免临时下载的文件并将包直接安装到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 中,直到更新上游依赖项。