[英]How to run bash script from npm script that exports environment variables
[英]How can a bash script in an NPM module access its NPM environment variables?
當從父 NPM 模塊調用時,我需要訪問其中運行的 bash 腳本中子模塊的 npm 環境變量。
項目偽結構:
Parent NPM Project
│
├── node_modules
│ │
│ ├── npm-submodule
│ │ │
│ │ ├── bash-script.sh
│ │ │
│ │ └── package.json
│ .
│
├── package.json
│
.
父 NPM 項目 — package.json
:
{
"name": "parent-project",
"scripts": {
"get-package-name": "echo $npm_package_name",
"get-submodule-name": "npm-submodule"
},
"dependencies": {
"npm-submodule": "1.0.0"
}
}
NPM 子模塊 — package.json
:
{
"name": "npm-submodule",
"bin": "./bash-script.sh",
"scripts": {
"get-package-name": "echo $npm_package_name"
}
}
NPM 子模塊 — bash-script.sh
:
#!/bin/bash
npm run get-package-name
問題
在父模塊中,當我運行npm run get-package-name
時,可以預見會返回parent-project
。
當我運行npm run get-submodule-name
時,沒有返回任何內容——當以這種方式調用時,子模塊的 npm 環境變量似乎沒有填充到子模塊中。
在基於bash 的上下文中,子模塊如何訪問它自己的 NPM 環境值,或者如果失敗,直接從package.json
讀取它們?
我提出的一個可行的解決方案是獲取 bash 腳本所在的文件夾,然后執行以下操作:
#!/bin/bash
MODULE_DIR=$(dirname "$(realpath "$0")")
cd "$MODULE_DIR" && npm run get-package-name -s
我用npm link
測試了它,它在任何其他 NPM 項目中全局工作,但我仍然對其他解決方案感興趣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.