我有一个Monorepo和使用NX构建系统。
我正试图找出一种方法注入项目名称在我的包。json
package.json
"scripts": {
...
"sampleCmd": "env-cmd -f apps/${projectName}/.env.local"
},
我正在寻找一种方法来注入projectName/appName。
的例子:
如果我执行yarn sampleCmd user-service
sampleCmd应为"env-cmd -f apps/user-service/.env.local"
Yarnrun
命令只是在package.json
中定义的脚本命令的末尾添加参数。不能得到一个特定的参数,也不能改变顺序。
但是作为一种变通方法,我们可以在scripts
文件夹中创建一个专用的脚本,并从package.json
引用它。然后在这个脚本中,我们可以获得参数。
例如,在/scripts/sample-cmd.sh
#!/usr/bin/env bash
cd $(dirname ${0})/..
PROJECT_NAME="${1}"
env-cmd -f apps/$PROJECT_NAME/.env.local
然后在package.json
:
"scripts": {
...
"sampleCmd": "./scripts/sample-cmd.sh"
},
当然,这需要适应目标环境,系统…(bash, linux/mac/windows…)。但主要思想在这里。
请注意,这与NX monorepo无关,并且将适用于每个NPM/YARN项目。