วิธีการตั้งค่าตัวแปรสภาพแวดล้อมจากภายใน package.json


313

จะตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างจากภายในpackage.jsonเพื่อใช้กับnpm startคำสั่ง like ได้อย่างไร

นี่คือสิ่งที่ฉันมีอยู่ในปัจจุบันของฉันpackage.json:

{
  ...
  "scripts": {
    "help": "tagove help",
    "start": "tagove start"
  }
  ...
}

ฉันต้องการตั้งค่าตัวแปรสภาพแวดล้อม (เช่นNODE_ENV) ในสคริปต์เริ่มต้นในขณะที่ยังสามารถเริ่มต้นแอปได้ด้วยคำสั่งnpm startเดียว


คุณสามารถอ่านคำตอบนี้stackoverflow.com/a/57509175/11127383
Daniel Danielecki

คำตอบ:


433

ตั้งค่าตัวแปรสภาพแวดล้อมในคำสั่งสคริปต์:

...
"scripts": {
  "start": "node app.js",
  "test": "env NODE_ENV=test mocha --reporter spec"
},
...

จากนั้นใช้process.env.NODE_ENVในแอปของคุณ

หมายเหตุ: envตรวจสอบให้แน่ใจว่ามันใช้งานได้บนแพลตฟอร์มต่างๆ คุณสามารถละเว้นได้หากคุณสนใจเฉพาะ Mac / Linux


65
มีบางคนคิดว่าเป็นทางเลือกสำหรับ windows .. ?
อินฟินิตี้

65
@ infinity ใช้cross-envและใช้งานง่ายมาก
mikekidder

106
@ infinity use set NODE_ENV=test&& mocha --reporter spec- ไม่มีช่องว่างระหว่างการทดสอบและ && ในจุดประสงค์
Jamie Penney

18
"test": "NODE_ENV=test mocha --reporter spec"จะไม่ทำงานบนระบบ Windows
Benny Neugebauer

7
@infinity @ jamie-penney env NODE_ENV=test mocha --reporter specจะใช้ตัวแปรสภาพแวดล้อมที่ประกาศไว้ในรูปแบบข้ามแพลตฟอร์ม แต่สิ่งสำคัญคือมันถูกใช้โดย npm ในแบบเฉพาะกิจและแบบครั้งเดียวสำหรับการเรียกใช้สคริปต์ npm (ไม่ได้ตั้งค่าหรือส่งออกสำหรับการอ้างอิงในอนาคต) ตราบใดที่คุณใช้งานคำสั่งของคุณจากสคริปต์ npm จะไม่มีปัญหา นอกจากนี้ต้องลบ "&&" เมื่อทำเช่นนี้
estaples

219

เพียงแค่ใช้แพคเกจ NPM ข้าม env ง่ายสุด ๆ ทำงานบน Windows, Linux และทุกสภาพแวดล้อม โปรดสังเกตว่าคุณไม่ได้ใช้ && เพื่อย้ายไปยังงานต่อไป คุณเพิ่งตั้งค่า env แล้วเริ่มงานถัดไป ขอมอบเครดิตให้แก่@mikekidderสำหรับคำแนะนำจากหนึ่งในความคิดเห็นที่นี่

จากเอกสาร:

{
  "scripts": {
    "build": "cross-env NODE_ENV=production OTHERFLAG=myValue webpack --config build/webpack.config.js"
  }
}

โปรดสังเกตว่าหากคุณต้องการตั้งค่า vars ทั่วโลกหลายใบคุณเพียงแค่ระบุอย่างต่อเนื่องตามด้วยคำสั่งของคุณที่จะดำเนินการ

ในที่สุดคำสั่งที่ดำเนินการ (ใช้วางไข่) คือ:

webpack --config build/webpack.config.js

NODE_ENVตัวแปรสภาพแวดล้อมจะถูกกำหนดโดยข้าม env


แบ็กสแลชสามตัวสามารถใช้เพื่อหลีกเลี่ยงคำพูดที่ต้องการ:"test": "cross-env TS_NODE_COMPILER_OPTIONS='{\\\"module\\\":\\\"commonjs\\\"}' mocha"
bvj

1
ทางออกที่ดีที่สุดเพราะข้ามแพลตฟอร์ม
bernardn

ในที่สุดใครบางคนสามารถช่วยฉันตัดสินใจว่าฉันควรใช้envหรือcross-envไม่? ในอีกด้านหนึ่ง env ไม่ต้องการให้ฉันติดตั้งอะไรและในทางกลับกันcross-envก็เป็นที่นิยมมากกว่า บางคนได้โปรดยืนยันว่าenvใช้ได้กับทุกแพลตฟอร์มหรือไม่
Rishav

2
@Rishav envไม่ทำงานตามที่เป็นอยู่ในทุกแพลตฟอร์มดังนั้นเหตุผลcross-envที่มีอยู่ เพียงใช้cross-envและทำได้ด้วย
TetraDev

37

ฉันแค่ต้องการเพิ่มสองเซ็นต์ของฉันที่นี่สำหรับนักสำรวจโหนดในอนาคต ใน Ubuntu 14.04 ของฉันใช้งานNODE_ENV=testไม่ได้ฉันต้องใช้export NODE_ENV=testหลังจากนั้นNODE_ENV=testก็เริ่มทำงานด้วยแปลก ๆ

บน Windows ตามที่ได้กล่าวไว้ว่าคุณต้องใช้set NODE_ENV=testแต่สำหรับโซลูชันข้ามแพลตฟอร์มไลบรารี cross-env ดูเหมือนจะไม่ใช้กลอุบายและคุณจำเป็นต้องใช้ไลบรารีจริงๆในการทำสิ่งนี้:

export NODE_ENV=test || set NODE_ENV=test&& yadda yadda

จำเป็นต้องใช้แถบแนวตั้งเนื่องจากไม่เช่นนั้น Windows จะขัดข้องในexport NODE_ENVคำสั่งที่ไม่รู้จัก: D Dunno เกี่ยวกับพื้นที่ต่อท้าย แต่เพื่อให้แน่ใจว่าฉันลบมันด้วย


6
คุณใช้&&? NODE_ENV=test yaddaหมายถึง "การทำงานyadda, การตั้งค่าNODE_ENVภายในyadda. 's ตัวแปรสภาพแวดล้อมNODE_ENV=test && yaddaหมายถึง 'ชุดNODE_ENVภายในสภาพแวดล้อมในท้องถิ่น แต่ไม่ได้ส่งออกไปวิ่งแล้วyadda'. NODE_ENV=test yaddaเป็นแนวทางที่ต้องการ.
จอชเคลลี่

ขออภัยที่ยังไม่ได้ตรวจสอบบัญชี stackoverflow ของฉันในขณะที่ แต่โดยทั่วไปแล้ว Windows ที่โง่เง่าไม่ทำงานNODE_ENV=test && npm run testหรือสิ่งที่คล้ายกัน ฉันสร้างโซลูชันที่ดีขึ้นโดยใช้process.env["NODE_ENV"] = "testing";ไฟล์ testhelper.js ของฉัน
TeemuK

5
@TeemuK เพียงเพิ่มสองเซนต์ของฉันด้วยเมื่อคุณเรียกใช้คำสั่งของคุณกับ&&คุณสูญเสียตัวแปรสภาพแวดล้อมของคุณการตั้งค่าตัวแปรสภาพแวดล้อมโดยไม่ต้องส่งออกงานบนคำสั่งปัจจุบันเท่านั้น (ซึ่งไม่มีอะไร) เพื่อเรียกใช้คำสั่งที่มีตัวแปร env โดยไม่ต้องส่งออกทำ NODE_ENV=test npm run testU: ท้ายที่สุดเหตุผลที่มันทำงานหลังจากที่คุณส่งออกเป็นเพราะตอนนี้ตัวแปร ur ของคุณพร้อมใช้งาน (ส่งออก) ในเซสชัน NODE_ENV ของคุณที่ไม่มีการส่งออกไม่ได้ทำอะไรเลย
Tarek

37

เนื่องจากฉันมักพบว่าตัวเองทำงานกับตัวแปรสภาพแวดล้อมหลายตัวฉันจึงพบว่ามีประโยชน์ที่จะเก็บไว้ใน.envไฟล์แยกต่างหาก(อย่าลืมละเว้นสิ่งนี้จากแหล่งควบคุมของคุณ)

VAR_A=Hello World
VAR_B=format the .env file like this with new vars separated by a line break

จากนั้นเติมexport $(cat .env | xargs) &&หน้าคำสั่งสคริปต์ของคุณ

ตัวอย่าง:

{
  ...
  "scripts": {
    ...
    "start": "export $(cat .env | xargs) && echo do your thing here",
    "env": "export $(cat .env | xargs) && env",
    "env-windows": "export $(cat .env | xargs) && set"
  }
  ...
}

สำหรับการทดสอบคุณสามารถดูตัวแปร env ได้โดยการรันnpm run env(linux) หรือnpm run env-windows(windows)


ดีมากมันเกือบจะทำงานให้ฉันได้! ฉันต้องการเพิ่มความคิดเห็นบางส่วน: - คุณไม่มีบรรทัดว่างในไฟล์. env ของคุณ - ความคิดเห็นในไฟล์. env ของคุณจะทำให้สคริปต์ของคุณแตกสลาย - หากสคริปต์หลาย ๆ ไฟล์ใช้ไฟล์. env เดียวกันคุณจะต้องทำซ้ำ - ฉันต้องลบพื้นที่ก่อนที่&&มันจะทำงาน - ถ้าคุณมีไฟล์. env หลายไฟล์มันอาจจะยากกว่านิดหน่อยในการรักษาคำตอบของคุณเป็นแรงบันดาลใจให้ฉันเตรียมคำแนะนำนี้: stackoverflow.com/questions/25112510/ …
เฟลิ N มูร่า

19

ลองสิ่งนี้บน Windows โดยแทนที่YOURENV:

  {
    ...
     "scripts": {
       "help": "set NODE_ENV=YOURENV && tagove help",
       "start": "set NODE_ENV=YOURENV && tagove start"
     }
    ...
  }

1
ใช่ ขอบคุณ! นี่คือคำตอบที่ฉันกำลังมองหา! : D
Daniel Tonon

6
ฉันต้องลบพื้นที่ก่อน &&
Kenneth Solberg

ความเห็นของ @ KennethSolberg เป็นสัมผัสสุดท้ายที่ทำให้ฉัน (Windows เท่านั้น)
ulu

ฉันก็มีปัญหาเรื่องพื้นที่เช่นกัน เมื่อบันทึกความยาวสตริงฉันสามารถบอกได้ว่ามีการเพิ่มพื้นที่ว่าง ฉันพยายามหนีคำพูด - และพวกเขาถูกเก็บไว้ในปากจริง ฉันลองตัวคั่นอื่น ๆ โดยไม่มีประโยชน์ การลบพื้นที่หรือตัดค่าซึ่งรู้สึกผิดกับฉันเป็นเพียงวิธีเดียวในการแก้ไขปัญหานี้
Neil Guy Lindberg

8

ทันใดนั้นฉันก็พบว่า actionhero ใช้รหัสต่อไปนี้ซึ่งแก้ไขปัญหาของฉันโดยเพียงแค่ผ่าน--NODE_ENV=productionตัวเลือกคำสั่งเริ่มต้นสคริปต์

if(argv['NODE_ENV'] != null){
  api.env = argv['NODE_ENV'];
} else if(process.env.NODE_ENV != null){
  api.env = process.env.NODE_ENV;
}

ฉันขอขอบคุณที่ยอมรับคำตอบของคนอื่นที่รู้วิธีที่ดีกว่าในการตั้งค่าตัวแปรสภาพแวดล้อมใน package.json หรือ init script หรือสิ่งที่คล้าย ๆ กันโดยที่แอพเริ่มต้นโดยคนอื่น


4

env-cmdสำหรับชุดขนาดใหญ่ของตัวแปรสภาพแวดล้อมหรือเมื่อคุณต้องการที่จะนำมาใช้ใหม่ที่คุณสามารถใช้

./.env ไฟล์:

# This is a comment
ENV1=THANKS
ENV2=FOR ALL
ENV3=THE FISH

./package.json:

{
  "scripts": {
    "test": "env-cmd mocha -R spec"
  }
}

คุณใช้ ENV1 ในสคริปต์อย่างไร
ValRob

ปกติprocess.env.ENV1
KARASZI István

แต่ข้างใน package.json ฉันได้อ่านแล้วว่าเป็นไปไม่ได้ (?)
ValRob

ฉันไม่เข้าใจ ทำไมคุณจะทำเช่นนั้น?
KARASZI István

อาจจะเป็น Aproach โง่ แต่ฉันมีการปรับปรุง MacOS Catalina และตอนนี้ MongoDB mongod --dbpath ~/data/dbคำสั่งไม่ทำงานดังนั้นฉันจะต้องระบุข้อมูล ฉันต้องการเรียกใช้สิ่งที่ต้องการnpm mongodbและจะได้รับ dbpath ตัวแปรสภาพแวดล้อมและเรียกใช้ mondodb เช่นเคย ... และ .. ฉันต้องการแบ่งปันกับสมาชิกคนอื่น ๆ
ValRob

2

แม้ว่าจะไม่ตอบคำถามโดยตรง แต่ฉันต้องการแบ่งปันแนวคิดที่ด้านบนของคำตอบอื่น ๆ จากสิ่งที่ฉันได้รับจากสิ่งเหล่านี้จะมีความซับซ้อนในระดับหนึ่งเพื่อให้เกิดความเป็นอิสระข้ามแพลตฟอร์ม

ในสถานการณ์ของฉันทั้งหมดที่ฉันต้องการในตอนแรกการตั้งค่าตัวแปรเพื่อควบคุมว่าจะให้เซิร์ฟเวอร์ปลอดภัยด้วยการรับรองความถูกต้อง JWT หรือไม่ (เพื่อจุดประสงค์ในการพัฒนา)

หลังจากอ่านคำตอบแล้วฉันตัดสินใจที่จะสร้างไฟล์ 2 ไฟล์ที่แตกต่างกันโดยเปิดและปิดการตรวจสอบตามลำดับ

  "scripts": {
    "dev": "nodemon --debug  index_auth.js",
    "devna": "nodemon --debug  index_no_auth.js",
  }

ไฟล์เป็นไฟล์เสริมที่เรียกไฟล์ index.js ดั้งเดิม (ซึ่งฉันเปลี่ยนชื่อappbootstrapper.js):

//index_no_auth.js authentication turned off
const bootstrapper = require('./appbootstrapper');
bootstrapper(false);

//index_auth.js authentication turned on
const bootstrapper = require('./appbootstrapper');
bootstrapper(true);

class AppBootStrapper {

    init(useauth) {
        //real initialization
    }
}

บางทีนี่อาจช่วยคนอื่นได้



2

สิ่งนี้จะทำงานในคอนโซล Windows :

"scripts": {
  "aaa": "set TMP=test && npm run bbb",
  "bbb": "echo %TMP%"
}

npm run aaa

เอาท์พุท: test

ดูคำตอบนี้สำหรับรายละเอียด


5
set TMP=test&& npm run bbbควรจะเป็น ช่องว่างก่อนหน้า&&นี้จะรวมตัวเป็นส่วนหนึ่งของNODE_ENVสตริงด้วย
FisNaN

ไม่ @FisNaN "ควรจะเป็นกรณีที่หากคุณล้อมรอบด้วยคำพูด
ไกเซอร์

1

คุณไม่ควรตั้งค่าตัวแปร ENV package.jsonเป็น ActionHero ใช้เพื่อให้คุณสามารถตั้งค่าตัวเลือกการเปลี่ยนแปลงที่มีการโหลดจากไฟล์ในNODE_ENV ./configตรวจสอบไฟล์ redis configและดูว่า NODE_ENV ใช้เพื่อเปลี่ยนตัวเลือกฐานข้อมูลอย่างไรNODE_ENV=test

หากคุณต้องการใช้ตัวแปร ENV อื่น ๆ เพื่อตั้งค่า (อาจเป็นพอร์ต HTTP) คุณยังไม่จำเป็นต้องเปลี่ยนแปลงอะไรpackage.jsonเลย ตัวอย่างเช่นหากคุณตั้งค่าเป็นPORT=1234ENV และต้องการใช้พอร์ตนั้นเป็นพอร์ต HTTP NODE_ENV=productionให้อ้างอิงในไฟล์ config ที่เกี่ยวข้อง IE:

# in config/servers/web.js
exports.production = { 
  servers: {
    web: function(api){
      return {
       port: process.env.PORT
      }
    }
  }
}

ยิ่งใหญ่ ฉันคิดว่าคุณไม่ได้อ่านคำถามของฉัน .. ปัญหาของฉันคือวิธีการตั้งค่า NODE_ENV ไม่ใช่สิ่งที่ใช้งาน
dev.meghraj

1
หากคุณต้องการตั้งค่าคุณสมบัติสภาพแวดล้อมหลายรายการคุณไม่ต้องทำในnpm startคำสั่ง การใช้ข้อมูลโค้ดข้างต้นถ้าคุณต้องการที่จะใช้เซิร์ฟเวอร์ของคุณโดยใช้พอร์ต ENV export PORT=1234; npm startมันจะเป็น: คุณสามารถผนวกการประกาศ ENV ได้มากเท่าที่คุณต้องการ แต่สิ่งเหล่านั้นไม่ได้อยู่ในไฟล์ package.json หากคุณกำลังกังวลเกี่ยวกับการทำให้แน่ใจว่าพวกเขามีอยู่ที่คุณควรใช้ค่าเริ่มต้นในไฟล์ config port: process.env.PORT || 8080ของคุณ:
Tony

1
บางทีวิธีอื่นในการอธิบายสิ่งนี้อาจเป็นไปได้ว่า NODE_ENV (และตัวแปรสภาพแวดล้อมอื่น ๆ ) เป็นส่วนหนึ่งของสภาพแวดล้อม (ด้วยเหตุนี้ชื่อ) โดยปกติแล้วจะเป็นคุณสมบัติของเซิร์ฟเวอร์ที่คุณใช้งานแอปพลิเคชันแทนแอปพลิเคชันของคุณ คุณสามารถตั้งค่าได้ด้วยตนเองผ่านคำสั่งที่คุณทำคือ: NODE_ENV=test npm startหรือตั้งค่าโดยเชลล์
Evan

3
ฉันไม่เห็นด้วย. การใช้. / config สำหรับทุกสภาพแวดล้อม จำกัด ให้คุณใช้สภาพแวดล้อมแบบคงที่เมื่อคุณปรับใช้แอปของคุณ นี่คือปรัชญาที่ล้าสมัยที่จะไม่อนุญาตให้คุณหมุนสภาพแวดล้อมชนิดใหม่เมื่อจำเป็น IE สำหรับทุกสภาพแวดล้อมใหม่ที่คุณต้องการคุณจะต้องเพิ่ม. config การตั้งค่าตัวแปรสภาพแวดล้อมที่รันไทม์สามารถเป็นตัวเลือกที่ดีกว่าเมื่อกองเทคโนโลยีของคุณต้องการความยืดหยุ่นมากขึ้น ฉันคิดว่า. / config ของคุณจะดีสำหรับการตั้งค่า "ประเภท" ของสภาพแวดล้อม แต่แอปของคุณจะมีความยืดหยุ่นมากขึ้นหากคุณสามารถกำหนดสิ่งต่าง ๆ เช่นสตริง dsn และจุดสิ้นสุด api ที่รันไทม์
Jesse Greathouse

@JesseGreathouse - ฉันมีแอปพลิเคชั่น node.js และฉันจำเป็นต้องตั้งค่าตัวแปรสภาพแวดล้อมที่รันไทม์ - ฉันจะตั้งค่าไฟล์ใดในพวกเขา
Roger Dodger

1

npm (และ yarn) ส่งผ่านข้อมูลจำนวนมากจาก package.json ไปยังสคริปต์เป็นตัวแปรสภาพแวดล้อม ใช้npm run envเพื่อดูพวกเขาทั้งหมด นี้ถูกบันทึกไว้ในhttps://docs.npmjs.com/misc/scripts#environmentและไม่ได้เป็นเพียงสำหรับ "วงจรชีวิต" สคริปต์เหมือนprepublishแต่ยังสคริปต์ใด ๆ npm runดำเนินการโดย

คุณสามารถเข้าถึงโค้ดภายในเหล่านี้ (เช่นprocess.env.npm_package_config_portใน JS) แต่เชลล์เหล่านี้มีอยู่แล้วที่ใช้สคริปต์เพื่อให้คุณสามารถเข้าถึงพวกเขาเป็นส่วน$npm_...ขยายใน "สคริปต์" (ไวยากรณ์ยูนิกซ์อาจไม่ทำงานบน windows?)

ส่วน "การตั้งค่า"ดูเหมือนว่ามีไว้สำหรับการใช้งานนี้:

  "name": "myproject",
  ...
  "config": {
    "port": "8010"
  },
  "scripts": {
    "start": "node server.js $npm_package_config_port",
    "test": "wait-on http://localhost:$npm_package_config_port/ && node test.js http://localhost:$npm_package_config_port/"
  } 

คุณภาพที่สำคัญของฟิลด์ "config" เหล่านี้คือผู้ใช้สามารถลบล้างได้โดยไม่ต้องแก้ไข package.json !

$ npm run start

> myproject@0.0.0 start /home/cben/mydir
> node server.js $npm_package_config_port

Serving on localhost:8010

$ npm config set myproject:port 8020
$ git diff package.json  # no change!
$ cat ~/.npmrc
myproject:port=8020

$ npm run start

> myproject@0.0.0 start /home/cben/mydir
> node server.js $npm_package_config_port

Serving on localhost:8020

ดูNPM การตั้งค่าและเส้นด้าย config ของเอกสาร
มันจะปรากฏเส้นด้ายที่อ่าน~/.npmrcเพื่อให้npm config setมีผลกระทบต่อทั้งสอง แต่yarn config setเขียนไป~/.yarnrcเพื่อให้เส้นด้ายเท่านั้นที่จะเห็นมัน :-(


1

คำตอบของ @ luke เกือบจะเป็นสิ่งที่ฉันต้องการ! ขอบคุณ

เนื่องจากคำตอบที่เลือกนั้นตรงไปตรงมา (และถูกต้อง) แต่เก่าฉันต้องการเสนอทางเลือกสำหรับการนำเข้าตัวแปรจากไฟล์. env ที่แยกต่างหากเมื่อรันสคริปต์ของคุณและแก้ไขข้อ จำกัด บางประการสำหรับคำตอบของลุค ลองสิ่งนี้:

::: .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"

จากนั้นในแพคเกจ json คุณจะสร้างสคริปต์ที่จะตั้งค่าตัวแปรและเรียกใช้ก่อนสคริปต์ที่คุณต้องการ:

::: package.json :::

scripts: {
  "set-env": "export $(cat .env | grep \"^[^#;]\" |xargs)",
  "storybook": "npm run set-env && start-storybook -s public"
}

ข้อสังเกตบางอย่าง:

  • การแสดงออกปกติในคำสั่ง grep'ed cat จะล้างความคิดเห็นและบรรทัดว่าง

  • &&ไม่จำเป็นต้องเป็น"กาว"ไปnpm run set-envตามที่มันจะต้องถ้าคุณตั้งค่าตัวแปรในคำสั่งเดียวกัน

  • หากคุณกำลังใช้เส้นด้ายคุณอาจเห็นคำเตือนคุณสามารถเปลี่ยนเป็นyarn set-envหรือใช้npm run set-env --scripts-prepend-node-path &&แทน

สภาพแวดล้อมที่แตกต่างกัน

ข้อดีอีกอย่างเมื่อใช้มันคือคุณสามารถมีตัวแปรสภาพแวดล้อมที่แตกต่างกัน

scripts: {
  "set-env:production": "export $(cat .production.env | grep \"^[^#;]\" |xargs)",
  "set-env:development": "export $(cat .env | grep \"^[^#;]\" |xargs)",
}

โปรดจำไว้ว่าอย่าเพิ่มไฟล์. env ไปยังที่เก็บข้อมูล git ของคุณเมื่อคุณมีรหัสผ่านรหัสผ่านหรือข้อมูลส่วนบุคคลที่เหมาะสม


1

ใช้ทุบตีคอมไพล์ใน windows Git Bash ประมวลผลคำสั่งแตกต่างจาก cmd

พรอมต์คำสั่ง Windows ส่วนใหญ่จะทำให้หายใจไม่ออกเมื่อคุณตั้งค่าตัวแปรสภาพแวดล้อมด้วย NODE_ENV = การผลิตเช่นนั้น (ข้อยกเว้นคือ Bash บน Windows ซึ่งใช้ Native Bash) ในทำนองเดียวกันมีความแตกต่างในวิธีที่คำสั่ง windows และ POSIX ใช้ตัวแปรสภาพแวดล้อม ด้วย POSIX คุณใช้: $ ENV_VAR และในหน้าต่างที่คุณใช้% ENV_VAR% - ข้ามเอกสาร env

{
  ...
  "scripts": {
    "help": "tagove help",
    "start": "env NODE_ENV=production tagove start"
  }
  ...
}

ใช้แพ็คเกจ dotenv เพื่อประกาศตัวแปร env

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.