依次运行两个Angular CLI任务,使用--watch
我有两个任务,需要互相跟踪:依次运行两个Angular CLI任务,使用--watch,angular,angular-cli,angular-cli-v6,Angular,Angular Cli,Angular Cli V6,我有两个任务,需要互相跟踪: ng build <library-name> && ng serve ng构建和ng服务 我想在上监视文件更改,因此我添加了以下内容: ng build <library-name> --watch && ng serve ng构建--监视和服务(&G) 这显然不起作用,因为手表永远不会结束,所以ng发球永远不会被叫来 ng build <library-name> --watch &am
ng build <library-name> && ng serve
ng构建和ng服务
我想在
上监视文件更改,因此我添加了以下内容:
ng build <library-name> --watch && ng serve
ng构建--监视和服务(&G)
这显然不起作用,因为手表永远不会结束,所以ng发球永远不会被叫来
ng build <library-name> --watch & ng serve
ng构建--监视和ng服务
这种解决方案也不好,因为ng服务在ng构建完成之前就开始了
有没有办法从第一个ng构建捕获编译完成消息,然后让file watcher运行?有什么方法可以启动观察者吗?可能是这样:
ng build <library-name> && --watch-the-libary-please & ng serve
ng build&&--请观看图书馆&ng service
?好的,我可能已经为您找到了解决方案。我已经编写了简单的Python脚本,它将通过计算目录的sha1sum来检查目录(在本例中是您的库)是否已被更改。如果它实际上已更改,则它将运行您的命令,用于ng build和ng serve
导入时间
导入操作系统
从checksumdir导入dirhash
目录='/YOUR/PATH/TO/LIBRARY'
initial_sha1=dirhash(目录'sha1')
修改=错误
“修改”为False时:
当前_sha1=dirhash(目录'sha1')
如果首字母_sha1!=现任主席1:
打印(“文件已挂起”)
操作系统(“ng构建”)
操作系统(“ng服务”)
修改=真
其他:
时间。睡眠(10)
如果您希望无限期地运行此操作,而不是将标志modified
更改为True,请将初始值sha更改为当前值initial\u sha1=current\u sha1
,并在需要时终止程序
您可能需要安装此软件包:
pip install checksumdir
这在Python2.7和3.X下工作(为此,您可能需要使用pip3安装checksumdir)
编辑
您可能需要在构建应用程序的目录下执行此脚本,或在ng buld
操作系统('cd/PATH/WHERE/YOU/BUILD')
您可以使用npm包,它允许并行运行多个命令。我也有同样的问题,我可以想出一个解决方案。所以,把它留在这里 有了以下脚本,
npm start
将同时启动ng build my lib
和ng build service
,无论您在my app
或my lib
中做什么更改,都将触发生成
要执行的步骤包括:
dist lib
--watch
选项开始构建我的库等待lib.js
直到创建my lib输出目录{
“脚本”:{
“开始”:“npm运行所有清理:lib——并行开始:*”,
“start:app”:“node./scripts/wait-for-lib.js&&ng serve”,
“start:lib”:“ng构建我的库——观察”,
“clean:lib”:“shx rm-rf./dist lib”
},
“依赖性”:{
“npm全部运行”:“^4.1.5”,
“shx”:“^0.3.3”
}
}
angular.json
{
“项目”:{
“我的应用程序”:{
...
“建筑师”:{
“构建”:{
...
“选择”:{
“outputPath”:“dist”
},
...
}
}
},
“我的自由”:{
...
“建筑师”:{
“构建”:{
...
“选择”:{
“outputPath”:“dist lib”
},
...
}
}
},
},
“defaultProject”:“我的应用程序”
}
./scripts/wait-for-lib.js
const fs=require('fs');
常量pathToMyLib='./dist-lib/my-lib';
函数waitFor(路径){
log(`Waiting for${path}已创建…`);
如果(!fs.existsSync(路径))
setTimeout(()=>waitFor(路径),1000);
}
waitFor(pathToMyLib);
如果不查看第一个,则只能让它们一个接一个地执行。另一种方法是在单独的会话中执行构建命令。是的,这是我们现在的解决方法,但我希望有更好的解决方案。编写一个bash脚本来实现这一点。如果需要定期触发,您甚至可以创建自定义服务。@ForestG您可以看看我的解决方案,它对您有用吗?它将在对lib进行任何更改后重建并提供服务。所以现在您不需要--wach标志,因为脚本正在保护更改。或者我把它复杂化了。无论如何,我想知道你的想法。谢谢,但这并不能解决我的问题:我需要在第一个构建完成后启动第二个进程。你可以运行ng build&&并发“ng build--watch“ng serve”
。是的,这个解决方案很有效,但是,您也可以不使用它:这基本上与ng构建关税库&&(ng构建关税库--监视和服务)
Hmmm。。。这个答案是“足够好”,但实际上并没有达到OP的要求。这会并发(obv)运行它们,而不是按顺序运行。谢谢你,但是仅仅为了这一点而使用python是一种过分的做法。此外,我相信此脚本每次都会重新运行ng serve,而不会停止前一个脚本?@ForestG Yep它不会重新运行ng serve,但这很容易实现。我只是一开始没想清楚。