我是Angular 5的相对新手,我正在尝试为我的团队设置开发设置来构建Angular 5应用程序。
我希望团队能够运行linting& amp;每次进行更改时进行单元测试,然后提供更改,以便开发人员可以立即看到她所做的更改。
我尝试了以下内容:
ng lint
会使项目失效ng test
启动了Karma测试运行器,对代码所做的任何更改都会立即启动测试并向开发人员提供反馈,如果刚刚引入的任何更改导致测试中断。ng serve
将在内部启动webpack-dev-server并构建项目并提供服务,以便开发人员可以立即看到添加/修改的功能,以便在浏览器上进行验证。我想要实现的是让开发人员在上述所有这三个方面得到持续的反馈 - 掉线错误,破坏测试,并提供功能 - 因为他们继续致力于开发项目。 / p>
有没有办法让所有这三个一起运行并且对开发人员可见,并对代码进行每次更改?
答案 0 :(得分:1)
可以使用Angular构建器执行此操作。通过创建自己的构建器,您可以轻松调用现有的Angular CLI构建器。例如:
import { merge } from 'rxjs';
import { executeKarmaBuilder, executeDevServerBuilder } from '@angular-devkit/build-angular';
export function runTestAndServe(context: BuilderContext): Observable<BuilderOutput> {
return merge(
executeKarmaBuilder(KARMA_OPTIONS, context),
executeDevServerBuilder(DEV_SERVER_OPTIONS, context)
);
}
确保您的KARMA_OPTIONS
正在使用--watch
。
答案 1 :(得分:0)
您可以使用&
运算符同时运行所有三个命令(不要与&&
混淆)。操作员将生成进程,但在下一个进程中在控制台中共享输出。
例如
ng test & ng server & ng lint
所有三个都会立即运行。您可以将上述内容放入bash脚本中以使其更容易。
我确实尝试将其添加到package.json
作为可运行的脚本,但它没有用。
答案 2 :(得分:0)
问题是你无法一直运行ng lint
和ng test
,而ng serve
将会运行,并且会一直保持实时重新加载,直到你终止它为止。
这就是为什么一般来说,人们会将单元测试集成到一个持续集成周期中,一般使用Jenkins作业/管道,并通过WebHook或类似的东西链接到他们的存储库。
详细说来,就像在每个commit
/ merge request
/ etc ...之后,Jenkins作业将运行ng lint
和ng test
命令并输出如果测试通过,结果将允许commit
/ push
/ merge request
。
这样,开发人员不需要一直手动运行ng test
和ng lint
命令,因为无论他们做什么,如果运行它们的作业没有通过它们就会被卡住。
您可以做的是为您的存储库强制执行持续集成流程,或者强制您的团队在工作完成后检查并运行命令。
显然,第一选择更好。
答案 3 :(得分:0)
@Reactgular 如果你想把它作为脚本添加到 package.json 中,你应该像这样添加:
adc
}