簡體   English   中英

安裝無依賴的 npm 包

[英]Install npm package without dependencies

我正在尋找如何安裝 npm 包的最佳解決方案,而沒有它的 package.json 文件中描述的依賴項。

目標是在安裝包之前更改依賴項版本。 我可以通過下載源代碼手動為一個包執行此操作,但是如果您有許多嵌套的依賴項,這將成為一個問題。

這是一個 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

請在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="$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直到更新上游依賴項。

我改編了 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 版本,它應該可以工作,但我不能保證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM