自动化构建脚本中无需cd,如何指定目录运行ng build?
不用cd命令指定ng build运行目录的几种方法
针对你的场景,不用切换目录就能让ng build找到project-client里的package.json和项目配置,有几个靠谱的方案:
1. 用子shell执行命令(最兼容的方案)
如果你的bash切换目录有问题,子shell的方式完全不会影响当前脚本的工作目录,执行完自动回到原路径:
(cd ./project-client && ng build)
括号会创建一个独立的子shell环境,在这个环境里切换到目标目录并执行构建,子shell结束后,父脚本的工作目录不会有任何变化,完美规避cd命令的问题。
2. 用Angular CLI的--cwd参数(简洁直接)
较新版本的Angular CLI支持--cwd参数,直接指定命令的工作目录,不需要任何目录切换:
ng build --cwd ./project-client
这个参数会让ng命令直接在你指定的project-client目录下查找配置文件和执行构建,非常直观。
3. 借助npm的--prefix参数(适合用npm脚本的场景)
如果你习惯通过npm run build执行构建,npm本身提供了--prefix参数来指定项目目录:
npm run build --prefix ./project-client
这个命令会让npm切换到project-client目录下,执行package.json里定义的build脚本,效果和cd过去执行一样,但不用手动切换目录。
你可以根据自己的Angular CLI版本和脚本需求选择最适合的方案,前两种都能直接解决ng build找不到配置文件的问题~
内容的提问来源于stack exchange,提问作者JGrindal
相关产品推荐
相关产品推荐

