npm - cài đặt phụ thuộc cho một gói trong một thư mục khác nhau?


142

Tôi có cấu trúc thư mục sau:

/some_project
    source.js
    package.json

Tôi muốn cài đặt các phụ thuộc cho some_project. Tôi biết tôi có thể cd vào some_project và sau đó chạy cài đặt npm

Nhưng tôi đã tự hỏi nếu nó có thể mà không thay đổi thư mục? Cái gì đó như

npm install some_project/package.json 

Câu trả lời:


344

Bạn có thể sử dụng npm install <folder>biến thể với --prefixtùy chọn. Trong kịch bản của bạn, thư mục và tiền tố sẽ giống nhau:

npm --prefix ./some_project install ./some_project

4
Đây là câu trả lời thực sự cho câu hỏi. Cảm ơn bạn @coudy.
G. Ghez

5
BTW, nó tạo etcthư mục trống ở đích, đó là một lỗi đã biết github.com/npm/npm/pull/7249
Michael Radionov

8
Cảm ơn câu trả lời này. Có bất kỳ rõ ràng hơn về việc thứ hai ./some_projectlà cần thiết?
Aron

12
thứ hai ./some_projectlà không bắt buộc
JRJurman

4
Điều này dường như không hoạt động đối với tôi trên Windows 10. Nó cài đặt các phụ thuộc trong thư mục hiện tại và chỉ đặt một liên kết tượng trưng trong thư mục con.
Herohtar

45

Cập nhật:--prefixtùy chọn tồn tại, bây giờ tôi bỏ phiếu cho câu trả lời của @ coudy cho câu hỏi này. Câu trả lời gốc dưới đây:

Không, npmsẽ luôn cài đặt trong thư mục hiện tại hoặc, với -g, trong nút_modules toàn hệ thống. Mặc dù vậy, bạn có thể thực hiện việc này với một lớp con, điều này sẽ không ảnh hưởng đến thư mục hiện tại của bạn:

(cd some_project && npm install)

Các dấu ngoặc đơn làm cho nó chạy trong một subshell .


Đây cuối cùng là những gì tôi đã làm - cd some_project && npm install. Cảm ơn
Florin

1
Có tương đương với điều này cho Windows?
Meligy

@Meligy bạn có thể sử dụngSTART /D "%my_dir%" /I /WAIT npm install
Không gian mở rộng

1

Trên Windows 10 tôi không thể --prefixlàm việc được, vì vậy tôi phải cdthực hiện nó.

cd PATH_TO_FOLDER && npm install 
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.