ale*_*cxe 21 javascript build angularjs gruntjs protractor
故事:
我们有一个测试人员团队致力于使用量角器为我们的内部AngularJS应用程序自动化端到端测试.以下是他们通常为"本地"测试运行的任务:
grunt.registerTask('e2e:local', [
'build:prod',
'connect:test',
'protractor:local'
]);
Run Code Online (Sandbox Code Playgroud)
它运行"构建"任务,启动Web服务器并针对本地构建运行e2e测试.
该build:prod
任务本身被定义为:
grunt.registerTask(
'build:prod', [
'clean',
'copy:all',
'copy:assets',
'wiredep',
'ngtemplates',
'useminPrepare',
'concat',
'ngAnnotate',
'autoprefixer',
'uglify',
'cssmin',
'copy:cssfix',
'usemin',
'copy:html',
'bowercopy',
'template:setProdVersion'
]
);
Run Code Online (Sandbox Code Playgroud)
在这里我们有很多子任务(它肯定可以改进,但这就是它现在的样子).
问题:
目前,构建完成大约需要25秒.而且,每当一个人运行端到端测试时,都会执行构建任务.
问题:
build:prod
如果src
目录中有更改,我该如何运行任务?
请注意,此处的要求是使运行测试的测试人员透明.我不希望他们记住何时需要执行构建,何时不需要.
换句话说,该过程应该是自动化的.目标是自动检测是否需要构建.
请注意,理想情况下,我希望保持构建任务不变,因此,如果通过grunt build:prod
它直接调用它,则无论前一个构建的日期戳是什么,都将重建.
思考和尝试:
有一个密切相关的grunt-newer
包,但是,因为我们有一个相当复杂的构建,clean
在开始时有一个任务,我不知道如何在我的情况下应用它
我也想的是,里面e2e:local
的任务,手动检查文件的时间戳内dist
和src
,并此基础上,决定是否build:prod
需要被调用.我认为这grunt-newer
就是在内部做的事情
我们开始使用jit-grunt
它有助于提高性能
如何使用像grunt-gitinfo这样的东西并使用HEAD中的最后一次提交作为基础?
这个想法是:
gitignore
(并且不在clean
文件夹中,通常可以在repo的根目录中)fs
模块可以轻松地进行读/写)build:prod
任务然后保存新的提交哈希build:prod
直接你可以使用类似grunt-githooks的东西并创建一个在pull之后运行并调用git的git钩子build:prod
,然后你可以从测试人员运行的grunt任务的依赖项中删除它.
您可能有另一个代码来检查githook并在必要时安装它,这可能是测试人员的一次性额外步骤,或者可能是他们调用的grunt任务.
我很惊讶没有人提到grunt-contrib-watch(它在gruntjs.com示例文件中,我认为它是众所周知的!).来自github:"每当添加,更改或删除观看的文件模式时运行预定义的任务." - 下面是一个样本grunt文件,它可以在src /或test /中修改任何.js文件时运行你的任务,或者如果修改了Gruntfile.
var filesToWatch = ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'];
grunt.initConfig({
watch: {
files: filesToWatch,
tasks: ['build:prod',
'connect:test',
'protractor:local']
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
Run Code Online (Sandbox Code Playgroud)
您让开发人员grunt watch
在开始修改文件之前打开终端并运行,每次修改这些文件时,任务都会自动运行(不再grunt build:prod
每次都要返回终端运行).
这是一个很好的包,我建议你看一下.- github - npmjs.org
npm install grunt-contrib-watch --save-dev
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1274 次 |
最近记录: |