不安装依赖项的 npm 包安装

7

我正在寻找最佳解决方案,以安装npm包而不需要在其package.json文件中描述的依赖项。

目标是在安装软件包之前更改依赖关系版本。我可以手动为一个软件包下载源代码,但如果您有许多嵌套的依赖关系,这将成为问题。


2
这是一个独特的问题,我怀疑是否有一种方法或工具可以解决它。你可能需要自己编写代码来解决它。安装后脚本可能会对你有所帮助。 - laggingreflex
4个回答

9
这是一个似乎可以获取所需提取文件的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" - Eliran Malka

2

0

我修改了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版本,它应该可以工作,但我不能保证。


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

我发现这个脚本在依赖关系要求过于严格的情况下非常有用,你可以安装已知可正常工作的依赖项,而无需将它们添加到你的package.json中,直到上游依赖项得到更新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接