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
เพื่อให้เส้นด้ายเท่านั้นที่จะเห็นมัน :-(