如何在NX中向目标依赖传递参数
解决NX中向依赖目标传递参数的问题
问题背景
你的项目通过package.json的npm脚本定义NX目标,build-site依赖build目标,但执行nx run-many --target=build-site --all -- --foo=bar时,参数--foo=bar无法传递给依赖的build目标。
可行解决方法
方法1:在NX配置中显式传递参数
修改package.json中的NX配置,在dependsOn里使用带参数传递的语法,让build-site执行时将接收的参数转发给build目标:
{ "name": "project-a", "scripts": { "build": "gulp build", "build-site": "gulp buildFractal" }, "nx": { "build-site": { "dependsOn": [ { "target": "build", "params": "forward" // 转发所有接收到的参数给build目标 } ] } } }
配置完成后,再次执行nx run-many --target=build-site --all -- --foo=bar,参数就会自动传递给build目标。如果只想转发特定参数,可将params改为指定参数数组,比如["--foo"]。
方法2:同时指定多个目标并传递参数
如果不想修改配置,可直接用nx run-many同时指定build和build-site两个目标,统一传递参数:
nx run-many --target=build --target=build-site --all -- --foo=bar
NX会先执行所有项目的build目标(带参数),再执行build-site目标,符合依赖执行逻辑。
方法3:在npm脚本中手动传递参数
若需要更灵活的控制,可修改build-site的npm脚本,在调用build时手动传递参数:
{ "scripts": { "build": "gulp build", "build-site": "npm run build -- $npm_config_foo && gulp buildFractal" } }
执行时用nx run-many --target=build-site --all --foo=bar,参数会通过npm_config_*环境变量传递给build脚本。不过这种方法需要手动处理参数传递逻辑,不如前两种NX原生方案简洁。
内容的提问来源于stack exchange,提问作者puter
相关产品推荐
相关产品推荐

