例如,我定义了自己的名为jasmine
的任务。它基于任务server
。
如果我致电grunt server jasmine
- 没关系。但我想在我的任务中声明这种依赖。
grunt.task.run
- 将任务添加到队列中(在我的任务之后)。
grunt.task.requires
- 只检查依赖关系,而不是运行它......
在server
任务之前运行jasmine
任务是否存在任何方法?
P.S。我不想创建jasmine_orig
任务,然后.registerTask('jasmine', 'server jasmine_orig')
。看起来很傻。
答案 0 :(得分:1)
当前写入服务器任务的方式,这是不可能的。但是,您可以使用grunt-connect plugin或rolling your own grunt server
任务执行所需操作。内置源的来源是:
https://github.com/gruntjs/grunt/blob/0.3-stable/tasks/server.js
正如您所看到的,除了读取配置,启动连接服务器以及可能在传递--debug
时进行日志记录,除此之外没有太多内容。事实上,您可以将所有代码复制到一个帮助程序中(我很害怕),并从您的jasmine任务中调用它。
为测试启动一个单独的服务器(用于测试独立性)可能是一个好主意,但是如果由于某种原因需要保存资源,或者你发现其他方式令人讨厌的多个服务器,你将不得不编写一些自定义任务代码以检查服务器是否存在,然后启动服务器(如果不存在)。
可能最好的解决方案如下:
安装grunt-contrib-connect npm包:
npm install grunt-contrib-connect --save-dev
为开发和测试环境进行配置:
connect: {
dev: {
base: 'path/to/serve',
port: 8000
},
test: {
base: 'path/to/serve',
port: 8001
}
}
为您注册运行test
的{{1}}任务。
grunt server:test jasmine
答案 1 :(得分:0)
一个部分解决方案是将特定任务的步骤定义为变量。然后,您可以将它们连接起来:
var buildSteps = [ ... ];
var distDevSteps = [ ... ];
grunt.registerTask('build', buildSteps);
grunt.registerTask('dist_dev', [].concat(buildSteps, distDevSteps));