Tôi có một package.json với sau (giản thể) nội dung trong kịch bản chính:biến môi trường Passing trong NPM-scripts
...
scripts: {
"start": "NODE_ENV=${NODE_ENV:=production} node start-app.js",
"poststart": "echo $NODE_ENV"
}
...
Từ dòng lệnh tôi có thể chạy:
npm start
này sẽ chạy tập lệnh start-app.js của tôi và đặt biến môi trường process.env.NODE_ENV thành "production". Xem here để được giải thích cú pháp.
Poststart sẽ tự động chạy sau khi bắt đầu như được mô tả here.
Tuy nhiên poststart sẽ không "kế thừa" biến môi trường shell NODE_ENV, vì vậy lệnh echo sẽ không echo bất cứ điều gì.
Mã sản phẩm của tôi phức tạp hơn một chút, nhưng những gì tôi đang cố gắng hoàn thành là chuyển biến NODE_ENV từ "điểm bắt đầu" sang tập lệnh phụ thuộc. Bất kỳ đề xuất/thực tiễn tốt nhất về cách làm điều đó?
Tôi không muốn hardcode NODE_ENV trong poststart, bởi vì tôi có thể muốn làm:
NODE_ENV=development npm start
và tôi muốn everyting "xuống chuỗi" thừa hưởng cùng một môi trường.
Từ [những gì tôi nhìn thấy] (https://docs.npmjs.com/misc/scripts), lĩnh vực _he package.json là tacked vào npm_package_ prefix_, vì vậy bạn có thể muốn nói 'npm_package_node_env'. – fedorqui
Khi chạy nhiều lệnh, bạn nên 'xuất' biến. 'export NODE_ENV = something' – Michael