繁体   English   中英

NPM 模块中的 bash 脚本如何访问其 NPM 环境变量?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM