[英]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.