Làm cách nào tôi có thể tải xuống mã nguồn của một gói từ npm mà không thực sự cài đặt nó (tức là không sử dụng npm install thepackage
)?
Câu trả lời:
Bạn có thể sử dụng npm view [package name] dist.tarball
nó sẽ trả về URL của tệp gói nén.
Đây là một ví dụ sử dụng wget
để tải xuống tarball:
wget $(npm view lodash dist.tarball)
Một cách đơn giản hơn để làm điều này là npm pack <package_name>
. Thao tác này sẽ lấy tarball từ sổ đăng ký, đặt nó vào bộ nhớ cache npm của bạn và đặt một bản sao vào thư mục làm việc hiện tại. Xem https://docs.npmjs.com/cli/pack
npm pack --dry-run <package_name>
sẽ tạo ra cùng một đầu ra chính xác mà không cần đặt tgz
tệp trong thư mục hiện tại.
Nếu bạn chưa cài đặt npm , với API công khai hiện tại, bạn cũng có thể truy cập thông tin về một gói trong sổ đăng ký npm từ URL https://registry.npmjs.org/<package-name>/
.
Sau đó, bạn có thể điều hướng JSON tại versions > (version number) > dist > tarball
để lấy URL của kho lưu trữ mã và tải xuống.
Trên linux, tôi thường tải xuống tarball của một gói như thế này:
wget `npm v [package-name] dist.tarball`
Lưu ý các dấu gạch ngược '', trên stackoverflow, tôi không thể nhìn thấy chúng rõ ràng.
"v" chỉ là một bí danh khác để xem:
Dựa trên câu trả lời của Gustavo Rodrigues , sửa thư mục "gói" trong .tgz, bổ sung khám phá phiên bản nhỏ mới nhất.
#!/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
npm pack <package's name>
là con đường ngắn nhất hiện tại