从npm下载包作为tar(不将其安装到模块)

cal*_*lum 31 npm

是否有一些URL我可以从npm下载给定的包(作为tarball或其他东西)?我需要最初上传到npm的确切文件.

npm install例如,使用获取不同的生成的package.json.我想要发布的确切原始文件集.

Ken*_*nan 68

您可以使用npm view获取注册表的tarball的URL(在此示例中为模块level):

$ npm view level dist.tarball
Run Code Online (Sandbox Code Playgroud)

要下载tarball,您可以使用npm pack:

$ npm pack level
Run Code Online (Sandbox Code Playgroud)

  • @VincentiusDaniel,您可以指定包的版本,如“npm view react@16.0.0 dist.tarball”,它会生成“https://registry.npmjs.org/react/-/react-16.0.0.tgz”,尽管目前最新版本是“react@17.0.2”。 (4认同)
  • `npm pack <module_name>` 正是我在将其复制到最后阶段(无法访问凭据)之前在 dockerfile 的第一阶段从经过身份验证的注册表下载 npm 模块所需的内容 (3认同)
  • 只是再次强调一下,因为它相当不直观:“npm pack <package-name>”确实会下载 tarball,无论您可能从命名中期望什么。无需使用“npm view”命令。 (3认同)

小智 8

如果您需要在未安装 npm 的情况下获取 tarball ,您可以使用curl和 usejq从 JSON获取包信息:

curl https://registry.npmjs.org/PACKAGE-NAME/ \
    | jq '.versions[."dist-tags".latest].dist.tarball'
Run Code Online (Sandbox Code Playgroud)

例如,如果您正在构建一个需要一个 npm 包的 Docker 容器,并且不想为此安装 npm,这将非常有用。


Zan*_*der 7

运行npm pack PACKAGE_NAME将在 npm 上下载任何包的 tarball。

要提取它,只需运行 tar -xzf DOWNLOADED_FILE.tgz

例子:

npm pack react
Run Code Online (Sandbox Code Playgroud)

然后提取:

tar -xzf react-16.6.3.tgz
Run Code Online (Sandbox Code Playgroud)


Ama*_*ain 6

只需运行命令

npm view [package name] dist.tarball
Run Code Online (Sandbox Code Playgroud)

它将返回一个tar url.