Một cách rất tốt để thực hiện các biến môi trường mà tôi đã sử dụng thành công là dưới đây:
A. Có các tệp cấu hình khác nhau :
dev.js // cái này có tất cả các biến môi trường chỉ để phát triển
Tệp chứa:
module.exports = {
ENV: 'dev',
someEnvKey1 : 'some DEV Value1',
someEnvKey2 : 'some DEV Value2'
};
stage.js // cái này chỉ có tất cả các biến môi trường để phát triển
..
qa.js // cái này có tất cả các biến môi trường để chỉ kiểm tra qa
Tệp chứa:
module.exports = {
ENV: 'dev',
someEnvKey1 : 'some QA Value1',
someEnvKey2 : 'some QA Value2'
};
LƯU Ý : hầu hết các giá trị đang thay đổi theo môi trường, nhưng các khóa vẫn giữ nguyên.
bạn có thể có nhiều hơn
z__prod.js // cái này có tất cả các biến môi trường chỉ để sản xuất / sống
LƯU Ý: Tệp này không bao giờ được đóng gói để triển khai
Đặt tất cả các tệp cấu hình này trong / config / thư mục
<projectRoot>/config/dev.js
<projectRoot>/config/qa.js
<projectRoot>/config/z__prod.js
<projectRoot>/setenv.js
<projectRoot>/setenv.bat
<projectRoot>/setenv.sh
LƯU Ý : Tên của prod khác với những cái khác, vì nó sẽ không được sử dụng bởi tất cả.
B. Đặt các biến môi trường OS / Lambda / AzureFunction / GoogleCloudFunction từ tệp cấu hình
Bây giờ lý tưởng, các biến cấu hình này trong tệp, nên đi dưới dạng các biến môi trường hệ điều hành (hoặc, các biến chức năng LAMBDA hoặc, các biến chức năng Azure, Google Cloud Function, v.v.)
vì vậy, chúng tôi viết tự động hóa trong hệ điều hành Windows (hoặc khác)
Giả sử chúng ta viết tập tin bat ' setenv ', lấy một đối số là môi trường mà chúng ta muốn đặt
Bây giờ hãy chạy " setenv dev "
a) Cái này lấy đầu vào từ biến đối số được truyền ('dev' bây giờ)
b) đọc tệp tương ứng ('config \ dev.js')
c) đặt các biến môi trường trong HĐH Windows (hoặc loại khác)
Ví dụ,
Nội dung setenv.bat có thể là:
node setenv.js
Nội dung setenv.js có thể là:
// import "process.env.ENV".js file (dev.js example)
// loop the imported file contents
// set the environment variables in Windows OS (or, Lambda, etc.)
Đó là tất cả , môi trường của bạn đã sẵn sàng để sử dụng.
Khi bạn thực hiện ' setenv qa ', tất cả các biến môi trường qa sẽ sẵn sàng để sử dụng từ qa.js và sẵn sàng để sử dụng bởi cùng một chương trình (luôn yêu cầu process.env.someEnvKey1, nhưng giá trị mà nó nhận được là qa một).
Mong rằng sẽ giúp.
fish
thay vìbash
, bạn cần sử dụng :env USER_ID=239482 my_command
. Ví dụ: để đặt các biến môi trường chodebug
thư viện của node.js :env DEBUG='*' node some_file.js
fishshell.com/docs/civerse/faq.html#faq-single-env