วิธีที่ดีมากในการทำตัวแปรสภาพแวดล้อมที่ฉันใช้สำเร็จอยู่ด้านล่าง:
A. มีไฟล์ปรับแต่งต่าง ๆ :
dev.js // นี่มีตัวแปรสภาพแวดล้อมทั้งหมดสำหรับการพัฒนาเท่านั้น
ไฟล์ประกอบด้วย:
module.exports = {
ENV: 'dev',
someEnvKey1 : 'some DEV Value1',
someEnvKey2 : 'some DEV Value2'
};
stage.js // นี่มีตัวแปรสภาพแวดล้อมทั้งหมดสำหรับการพัฒนาเท่านั้น
..
qa.js // นี่มีตัวแปรสภาพแวดล้อมทั้งหมดสำหรับการทดสอบ qa เท่านั้น
ไฟล์ประกอบด้วย:
module.exports = {
ENV: 'dev',
someEnvKey1 : 'some QA Value1',
someEnvKey2 : 'some QA Value2'
};
หมายเหตุ : ค่ากำลังเปลี่ยนแปลงไปตามสภาพแวดล้อมส่วนใหญ่ แต่ปุ่มยังคงเหมือนเดิม
คุณสามารถมีมากขึ้น
z__prod.js // นี่มีตัวแปรสภาพแวดล้อมทั้งหมดสำหรับการผลิต / ถ่ายทอดสดเท่านั้น
หมายเหตุ: ไฟล์นี้จะไม่ถูกรวมสำหรับการปรับใช้
ใส่ไฟล์ปรับแต่งทั้งหมดเหล่านี้ใน / config / โฟลเดอร์
<projectRoot>/config/dev.js
<projectRoot>/config/qa.js
<projectRoot>/config/z__prod.js
<projectRoot>/setenv.js
<projectRoot>/setenv.bat
<projectRoot>/setenv.sh
หมายเหตุ : ชื่อของ prod นั้นแตกต่างจากชื่ออื่นเนื่องจากจะไม่ถูกใช้โดยทุกคน
B. ตั้งค่าตัวแปรสภาพแวดล้อม OS / Lambda / AzureFunction / GoogleCloudFunction จากไฟล์ปรับแต่ง
ตอนนี้ความนึกคิดตัวแปรกำหนดค่าในไฟล์ควรเป็นตัวแปรสภาพแวดล้อมระบบปฏิบัติการ (หรือตัวแปรฟังก์ชัน LAMBDA หรือตัวแปรฟังก์ชัน Azure, ฟังก์ชั่น Google Cloud ฯลฯ )
ดังนั้นเราจึงเขียนระบบอัตโนมัติใน Windows OS (หรืออื่น ๆ )
สมมติว่าเราเขียนไฟล์ค้างคาว ' setenv ' ซึ่งรับหนึ่งอาร์กิวเมนต์ที่เป็นสภาพแวดล้อมที่เราต้องการตั้งค่า
ตอนนี้เรียกใช้ " setenv dev "
a) สิ่งนี้ใช้อินพุตจากตัวแปรอาร์กิวเมนต์ที่ส่งผ่าน ('dev' สำหรับตอนนี้)
b) อ่านไฟล์ที่เกี่ยวข้อง ('config \ dev.js')
c) ตั้งค่าตัวแปรสภาพแวดล้อมใน Windows OS (หรืออื่น ๆ )
ตัวอย่างเช่น,
เนื้อหา setenv.bat อาจเป็น:
node setenv.js
เนื้อหา setenv.js อาจเป็น:
// import "process.env.ENV".js file (dev.js example)
// loop the imported file contents
// set the environment variables in Windows OS (or, Lambda, etc.)
เพียงเท่านี้สภาพแวดล้อมของคุณก็พร้อมใช้งานแล้ว
เมื่อคุณทำ ' setenv qa ' ตัวแปรสภาพแวดล้อม qa ทั้งหมดจะพร้อมใช้งานจาก qa.js และพร้อมใช้งานโดยโปรแกรมเดียวกัน (ซึ่งมักจะถามหา process.env.someEnvKey1 แต่ค่าที่ได้รับคือ qa หนึ่ง)
หวังว่าจะช่วย
fish
แทนคุณจะต้องใช้งาน:bash
env USER_ID=239482 my_command
ตัวอย่างเช่นสำหรับการตั้งค่าตัวแปรสภาพแวดล้อมสำหรับdebug
ไลบรารีenv DEBUG='*' node some_file.js
node.js