2015-09-25 22 views
7

Tôi có một thư mục (một dự án) với 3 thư mục con (máy khách, máy chủ, tài sản). Mỗi thư mục con có một lệnh khác nhau để bắt đầu và để làm việc trên dự án tôi cần phải bắt đầu 3 ứng dụng. Đây là cách bố trí thư mục và các lệnh tôi sử dụng để bắt đầu mỗi tiểu dự án: Dự ánCó thể sử dụng npm để chạy tập lệnh trong nhiều thư mục con không?

    • client (ion phục vụ)
    • máy chủ (index node)
    • tài sản (http-server -p 8082)

Hiện tại, tôi truy cập từng thư mục và bắt đầu từng ứng dụng. Để làm cho quy trình chuẩn hơn, mỗi tiểu dự án có một package.json với một tập lệnh bắt đầu, vì vậy tôi chỉ cần cd subfolder && npm start.

Câu hỏi của tôi: là nó có thể sử dụng NPM trên thư mục cha (ví dụ: viết một package.json có) theo cách như vậy mà tôi chỉ có thể chạy lệnh sau và có tác dụng tương tự (hoặc tương tự)?

project> NPM bắt đầu

Tôi đã thử bằng cách sử dụng gói parallelshell, nhưng nó làm việc (có thể là do sự cd:

"scripts": { 
    "start": "parallelshell 'cd app && ionic serve' 'cd api && npm start' 'cd assets && npm start'", 
} 

Trả lời

4

Vấn đề là cả ba của bạn scriptmáy chủ khởi chạy giống như tác vụ kịch bản, có nghĩa là chúng không giống như tác vụ xây dựng (ví dụ:) chạy trong 10 giây và ngừng quá trình.

Đối với mỗi một trong số họ, bạn khởi động chúngquá trình này tiếp tục indefinitly.

Bạn có thể khởi động tất cả trong số họ trong một cách daemon với một cái gì đó giống như forever, nhưng trong trường hợp của bạn, bạn đang ở trong chế độ dev (vì vậy bạn muốn tất cả các bản ghibạn không muốn các lỗi từ máy chủ nodejs hỗn hợp với thiết bị ion ...).

Trong trường hợp bạn không nhớ về trộn các bản ghi: https://www.npmjs.com/package/forever (tôi giả sử điều này gần như điều tương tự như parallelshell ...)

20

Bạn có thể sử dụng "đồng thời" để thực hiện điều này. Vì vậy, bạn sẽ tạo ra một package.json trông giống như sau:

... 
"scripts": { 
    "client": "cd client && npm start", 
    "server": "cd server && npm start", 
    "assets": "cd assets && ionic serve", 
    "start": "concurrent \"npm run client\" \"npm run server\" \"npm run assets\" ", 
}, 
... 
"devDependencies": { 
    "concurrently": "^1.0.0" 
} 
... 

Lưu ý: Điều này sẽ bắt đầu cả ba quá trình đồng thời có nghĩa là bạn sẽ có được đầu ra hỗn hợp của cả ba (như topheman đã đề cập)

Các vấn đề liên quan