2016-08-26 21 views
38

Hãy nói rằng tôi cóChạy kịch bản NPM tuần tự

"scripts": { 
    "pre-build": "echo \"Welcome\" && exit 1", 
    "build_logic": "start cmd.exe @cmd /k \"yo esri-appbuilder-js:widget && exit 1\"", 
    "post_build": "start C:\\WebAppBuilderForArcGIS\\startupShortcut", 
    "exit" : "start cmd.exe @cmd /k \"echo \"goodbye\" && exit 1\"" 
    }, 

lệnh NPM Những gì tôi có thể chạy để cho tất cả các kịch bản khởi động tuần tự. Khi tôi sử dụng trước/sau sửa chữa chúng khởi chạy tuần tự nhưng chúng không chờ đợi cho kịch bản gốc hoàn thành trước khi thực hiện. Tôi giả định giải pháp duy nhất là: How do I get Gulp tasks to fire sequentially when firing shell commands in an async.series helper function?? Tôi biết điều này có thể được thực hiện với Gulp nhưng tôi muốn gắn bó với NPM để khám phá khả năng của mình. Cảm ơn vì bất kì sự giúp đỡ!

Trả lời

89

Gọi các kịch bản qua NPM chạy và chuỗi chúng với dấu và đôi &&:

npm run pre-build && npm run build_logic && npm run post_build && npm run exit 

Giải thích:

  • Sử dụng && (double và) để thực hiện tuần tự.
  • Sử dụng & (đơn ampersand) để thực thi song song.
+1

Điều này làm việc tốt nhất bởi vì nó thực hiện theo thứ tự, là mỗi lệnh không thực thi cho đến khi các giá trị được hoàn thành, như được yêu cầu trong OP. Cảm ơn – Rice

13

Bạn chỉ có thể xâu chuỗi chúng thành một tập lệnh khác. "start": "pre-build && build_logic && post_build && exit"

+0

Tôi sẽ yêu cầu họ đợi nhau để hoàn thành, những điều này sẽ kích hoạt tuần tự nhưng sẽ không đợi. – Rice

+0

Tôi không nghĩ đây là vấn đề nút/npm. Lệnh 'start' bạn đang thực hiện trong cửa sổ về mặt kỹ thuật * là * đã hoàn thành. Sử dụng cờ '/ wait' với' start' để buộc ứng dụng 'start' vẫn mở cho đến khi phương thức nội bộ cũng kết thúc. – dvlsg

+0

Để kiểm tra điều này - chạy 'start notepad' từ dấu nhắc lệnh, sau đó hãy xem dấu nhắc lệnh gốc. Bạn sẽ có thể nhập vào một lệnh khác. Sau đó chạy 'start/wait notepad'. Lệnh 'start' sẽ tiếp tục" chạy "trong khi cửa sổ notepad của bạn đang mở (hãy xem lại dấu nhắc lệnh). Sau đó, khi bạn đóng notepad, 'start' sẽ kết thúc. – dvlsg

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