安装没有依赖的 npm 包
Install npm package without dependencies
我正在寻找如何安装 npm 包的最佳解决方案,而不需要它的 package.json 文件中描述的依赖项。
目标是在安装包之前更改依赖项版本。我可以通过下载源代码为一个包手动完成,但是如果你有很多嵌套的依赖项,它就会成为一个问题。
这是一个 shell 脚本,似乎可以为您提供所需的提取文件。
#!/bin/bash
package=""
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
请查看 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
我补充了上面的脚本以允许指定多个包,避免临时下载文件并直接将包安装到 node_modules
:
#!/bin/sh
# filename suggestion: `npm-i-no-deps`
while [ $# -gt 0 ]
do
package=""
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
,直到更新上游依赖项。
我改编了 mxcl 的脚本来处理作用域包 (@user/package)
#!/bin/sh
# filename suggestion: `npm-i-no-deps`
while [ $# -gt 0 ]
do
package=""
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 版本,它应该可以工作,但我不能保证。
我正在寻找如何安装 npm 包的最佳解决方案,而不需要它的 package.json 文件中描述的依赖项。
目标是在安装包之前更改依赖项版本。我可以通过下载源代码为一个包手动完成,但是如果你有很多嵌套的依赖项,它就会成为一个问题。
这是一个 shell 脚本,似乎可以为您提供所需的提取文件。
#!/bin/bash
package=""
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
请查看 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
我补充了上面的脚本以允许指定多个包,避免临时下载文件并直接将包安装到 node_modules
:
#!/bin/sh
# filename suggestion: `npm-i-no-deps`
while [ $# -gt 0 ]
do
package=""
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
,直到更新上游依赖项。
我改编了 mxcl 的脚本来处理作用域包 (@user/package)
#!/bin/sh
# filename suggestion: `npm-i-no-deps`
while [ $# -gt 0 ]
do
package=""
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 版本,它应该可以工作,但我不能保证。