在NX构建中,是否有办法在package.json中获得项目名称?



我有一个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项目。

最新更新