Làm thế nào tôi có thể bắt đầu npm tại một thư mục khác?


291

Tôi thường cdvào thư mục ứng dụng và sau đó chạy npm start.

Tôi cảm thấy rằng phải có một cách nào đó để chạy npm startvới một tham số đường dẫn. Nhưng, tài liệu bắt đầu npm không chứa tính năng này.

Tôi đã cố gắng chỉ để tìm thấy npm start ./myappkhông hoạt động. Có cách nào làm được việc này không?

Câu trả lời:


472

Điều này một lót nên hoạt động:

npm start --prefix path/to/your/app

Tài liệu tương ứng


18
Không làm việc. Đang cố gắng tìm gói.json trong thư mục hiện tại.
Shashwat Kumar

@ShashwatKumar bạn đã bao giờ tìm thấy một cách làm việc này chưa?
Juicy

3
Tôi vừa thử nghiệm để chạy lệnh này trong một thư mục package.jsoncũng có, và npm theo đúng path/to/your/appđể tìm đúng package.json. Phiên bản nào của npm bạn đang sử dụng?
Amaury Liệt

3
Chạy trên macOS10.14.x với nút 10.x và npm 6.9.0, một lớp lót hoạt động hoàn hảo. Cảm ơn bạn.
Tod

3
Tài liệu cho --prefixđây: docs.npmjs.com/misc/config#prefix
lealceldeiro

88

Bên dưới Lệnh, nơi projectchứa một thư mục chứa package.jsontệp

npm run --prefix project ${COMMAND}

đang làm việc như là tốt. Hữu ích trong các ứng dụng dựa trên Docker.


21

npm start --prefix path/to/your/app

& bên trong gói.json thêm tập lệnh sau

"scripts": {
   "preinstall":"cd $(pwd)"
}

6
Bạn có thể giải thích kịch bản cài đặt sẵn không?
Junvar

Đây không phải là đa nền tảng. Nó chỉ hoạt động trên Unix chứ không phải trên các quả bóng lẻ như Windows.
Jack Giffin

18

Tôi đến đây từ google để nó có thể liên quan đến những người khác: vì yarnbạn có thể sử dụng:

yarn --cwd /path/to/your/app run start 

6

Điều này một lót cũng nên làm việc:

(cd /path/to/your/app && npm start)

Lưu ý rằng thư mục hiện tại sẽ được thay đổi thành / path / thành / your / app sau khi thực hiện lệnh này. Để bảo quản thư mục làm việc:

(cd /path/to/your/app && npm start && cd -)

Tôi đã sử dụng giải pháp này vì một tệp cấu hình chương trình tôi đã chỉnh sửa lại sau đó không hỗ trợ chỉ định đối số dòng lệnh.


2
Vui lòng khi sử dụng nút "-1", hãy thêm nhận xét để khách truy cập có manh mối "tại sao nó không ổn" ...
Cyril CHAPON

6
Tôi đã không downvote. Nhưng tôi tin rằng nó bị hạ thấp vì các tác dụng phụ. Giải pháp không thuần túy, nó thay đổi thư mục hiện tại.
Vladimir Serykh

Đây thực sự là một giải pháp rất phổ biến, cải tiến duy nhất sẽ được thực hiện là thêm dấu ngoặc đơn để tránh các tác dụng phụ được đề cập. Tuy nhiên, các giải pháp trên tốt hơn trong quan điểm của tôi, vì chúng hoàn toàn dựa vào NPM.
Rafał Wrzeszcz

Bạn có thể thêm cd -vào cuối để loại bỏ tác dụng phụ.
babca

@babca trừ khi npm startthất bại ... bạn cần chia nó thành nhiều câu
Andreas

2

Theo danh sách vấn đề npm này , một công việc xung quanh có thể được thực hiện thông qua cấu hình npm

name: 'foo'
config: { path: "baz" },
scripts: { start: "node ./$npm_package_config_path" }

Dưới cửa sổ, scripts có thể là{ start: "node ./%npm_package_config_path%" }

Sau đó chạy dòng lệnh như dưới đây

npm start --foo:path=myapp

kịch bản nào có thể làm cho các gói đã tải xuống? Giả sử tôi muốn truy cập tệp js từ gói npm đã tải xuống
Hardik Rana
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.