簡體   English   中英

npm下載源碼,無需安裝

[英]Download source from npm without installing it

如何從 npm 下載 package 的源代碼而不實際安裝它(即不使用npm install thepackage )?

您可以使用npm view [package name] dist.tarball它將返回壓縮包文件的 URL。

這是使用wget下載 tarball 的示例:

wget $(npm view lodash dist.tarball)

一個更簡單的方法是npm pack <package_name> 這將從注冊表中檢索 tarball,將其放入您的 npm 緩存中,並將副本放入當前工作目錄中。 https://docs.npmjs.com/cli/pack

如果您還沒有安裝 npm ,使用當前的公共 API,您還可以從 URL https://registry.npmjs.org/<package-name>/訪問有關 npm 注冊表中包的信息。

然后,您可以在versions > (version number) > dist > tarball處導航 JSON 以獲取代碼存檔的 URL 並下載它。

npm pack XXX是最快的輸入方式,它會下載一個存檔。

或者:

npm v XXX dist.tarball | xargs curl | tar -xz

此命令還將:

  • 下載帶有進度條的包
  • 解壓到名為package的文件夾中

在 linux 上,我通常下載這樣的包的 tarball:

wget `npm v [package-name] dist.tarball`

注意反引號``,在stackoverflow上我看不清楚。

“v”只是視圖的另一個別名:

https://docs.npmjs.com/cli/view

您還可以使用UNPKG訪問 npm package 的內容

https://unpkg.com/browse/[package-name]@[package-version]/

基於Gustavo Rodrigues 的回答,修復了 .tgz 中的“package”目錄,添加了最新的次要版本發現。

#!/bin/bash

if [[ $# -eq 0 ]] ; then
    echo "Usage: $0 jquery bootstrap@3 tinymce@4.5"
    exit 64 ## EX_USAGE
fi

set -e ## So nothing gets deleted if download fails

for pkg_name in "$@"
do

    ## Get latest version, also works with plain name
    url=$( npm v $pkg_name dist.tarball | tail -n 1 | cut -d \' -f 2 )
    tmp_dir=$( mktemp -d -p . "${pkg_name}__XXXXXXXXX" )

    ## Unpacks to directory named after package@version
    curl $url | tar -xzf - --strip 1 --directory $tmp_dir
    rm -rf $pkg_name
    mv $tmp_dir $pkg_name
done

我的團隊創建了OSS Gadget簡化此類操作,尤其是在跨不同生態系統工作時。 該套件中的工具之一稱為oss-download

oss-download pkg:npm/express         # Latest version
oss-download pkg:npm/express@4.17.1  # Specific version
oss-download pkg:npm/express@*       # All versions
oss-download -e pkg:npm/express      # Decompress contents recursively

如果你只對 npm 感興趣,那么npm pack是你最好的選擇,但如果你沒有安裝 npm 或者需要用 PyPI、RubyGems、NuGet 等做類似的事情,那么 OSS Gadget 可能會有所幫助。

為了簡單地查看 npm 包的內容概覽,無需在本地下載任何內容,您可以使用:

npm pack --dry-run <package-name>

演示:

$ npm pack --dry-run express
npm notice
npm notice 📦  express@4.17.2
npm notice === Tarball Contents ===
npm notice 110.6kB History.md
npm notice 1.2kB   LICENSE
npm notice 4.8kB   Readme.md
npm notice 224B    index.js
npm notice 14.3kB  lib/application.js
npm notice 2.4kB   lib/express.js
npm notice 853B    lib/middleware/init.js
npm notice 885B    lib/middleware/query.js
npm notice 12.5kB  lib/request.js
npm notice 27.3kB  lib/response.js
npm notice 15.0kB  lib/router/index.js
npm notice 3.3kB   lib/router/layer.js
npm notice 4.1kB   lib/router/route.js
npm notice 5.9kB   lib/utils.js
npm notice 3.3kB   lib/view.js
npm notice 2.8kB   package.json
npm notice === Tarball Details ===
npm notice name:          express
npm notice version:       4.17.2
npm notice filename:      express-4.17.2.tgz
npm notice package size:  54.7 kB
npm notice unpacked size: 209.6 kB
npm notice shasum:        c18369f265297319beed4e5558753cc8c1364cb3
npm notice integrity:     sha512-oxlxJxcQlYwqP[...]66Ha8jCUo9QGg==
npm notice total files:   16
npm notice
express-4.17.2.tgz

go 關於這個的兩種方法是

  1. 使用解包

    https://unpkg.com/browse/[包名]@[包版本]/

例如下載 ffmpeg,你使用

https://unpkg.com/browse/@ffmpeg/ffmpeg@0.10.0/
  1. 使用像https://kapsave.com/npm-downloader/這樣的下載器網站,它將源代碼下載為 zip。

暫無
暫無

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

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