Câu trả lời của @ luke gần như là câu tôi cần! Cảm ơn.
Vì câu trả lời được chọn rất đơn giản (và chính xác), nhưng cũ, tôi muốn đưa ra một cách thay thế để nhập biến từ tệp riêng biệt .env khi chạy tập lệnh của bạn và sửa một số hạn chế cho câu trả lời của Luke. Thử cái này:
::: tập tin .env :::
# This way, you CAN use comments in your .env files
NODE_PATH="src/"
# You can also have extra/empty lines in it
SASS_PATH="node_modules:src/styles"
Sau đó, trong gói json của bạn, bạn sẽ tạo một tập lệnh sẽ đặt các biến và chạy nó trước các tập lệnh bạn cần chúng:
::: pack.json :::
scripts: {
"set-env": "export $(cat .env | grep \"^[^#;]\" |xargs)",
"storybook": "npm run set-env && start-storybook -s public"
}
Một số quan sát:
Biểu thức chính quy trong lệnh mèo grep'ed sẽ xóa các bình luận và các dòng trống.
Các &&
không cần phải "dán mắt" đến npm run set-env
, vì nó sẽ được yêu cầu nếu bạn đã thiết lập các biến trong cùng một lệnh.
Nếu bạn đang sử dụng sợi, bạn có thể thấy một cảnh báo, bạn có thể thay đổi nó yarn set-env
hoặc sử dụng npm run set-env --scripts-prepend-node-path &&
thay thế.
Môi trường khác nhau
Một lợi thế khác khi sử dụng nó là bạn có thể có các biến môi trường khác nhau.
scripts: {
"set-env:production": "export $(cat .production.env | grep \"^[^#;]\" |xargs)",
"set-env:development": "export $(cat .env | grep \"^[^#;]\" |xargs)",
}
Xin vui lòng, đừng nhớ thêm các tệp .env vào kho git của bạn khi bạn có khóa, mật khẩu hoặc dữ liệu hợp lý / cá nhân trong đó!