Tải xuống nguồn từ npm mà không cần cài đặt nó


84

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:


83

Bạn có thể sử dụng npm view [package name] dist.tarballnó 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)

8
npm pack <package's name>là con đường ngắn nhất hiện tại
revelt

Đã phản đối vì điều này không sử dụng thông tin xác thực npm và dẫn đến lỗi 401 cho các gói riêng tư.
Der Hochstapler

59

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


Hoàn hảo. Ngoài ra: 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 tgztệp trong thư mục hiện tại.
Friederbluemle

40

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.


1
Cảm ơn bạn! Đây là những gì tôi đang tìm kiếm
Aditya Vikas Devarapalli

28

npm pack XXX là cách nhập nhanh nhất và nó sẽ tải xuống một kho lưu trữ.

Ngoài ra:

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

lệnh này cũng sẽ:

  • Tải xuống gói với thanh tiến trình
  • Giải nén vào một thư mục có tên package


0

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.