我打算在sails(0.10 rc5)grunt构建系统中添加一个任务。
任务/配置/资产versioning.js
module.exports = function(grunt) {
grunt.config.set('asset-versioning', {
copy: {
src: '.tmp/public/min/production.js',
dest: '.tmp/public/min/production2.js'
}
});
grunt.task.registerTask('asset-versioning', ['copy']);
grunt.loadNpmTasks('grunt-contrib-copy');
};
任务/注册/ prod.js
module.exports = function (grunt) {
grunt.registerTask('prod', [
'compileAssets',
'concat',
'uglify',
'cssmin',
'sails-linker:prodJs',
'sails-linker:prodStyles',
'sails-linker:devTpl',
'asset-versioning' // Added the task config here
]);
};
运行sails lift --prod --verbose
后,我收到以下错误:
Grunt :: Warning: Task "asset-versioning" not found.
** Grunt :: An error occurred. **
我缺少什么?
修改
显然我缺少注册我的任务。
将grunt.task.registerTask('asset-versioning');
添加到第一个文件。我没有收到任何错误,但我的任务没有运行!什么也没发生。
答案 0 :(得分:0)
好的,你把这一切搞混了。复制是一个预定义的任务,你只需要调整它的配置。转到tasks / config / copy.js并添加自定义配置(在grunt.config.set调用中)
productionfiles: {
src: '.tmp/public/min/production.min.js',
dest: '.tmp/public/min/production2.min.js'
}
然后,在tasks / register / prod.js中,确保你调用copy:productionfiles,它会发挥魔力。
<强> Copy.js 强>
module.exports = function(grunt) {
grunt.config.set('copy', {
dev: {
files: [{
expand: true,
cwd: './assets',
src: ['**/*.!(coffee|less)'],
dest: '.tmp/public'
}]
},
build: {
files: [{
expand: true,
cwd: '.tmp/public',
src: ['**/*'],
dest: 'www'
}]
},
productionfiles: {
src: '.tmp/public/min/production.min.js',
dest: '.tmp/public/min/production2.min.js'
}
});
grunt.loadNpmTasks('grunt-contrib-copy');
};
<强> Prod.js 强>
module.exports = function (grunt) {
grunt.registerTask('prod', [
'compileAssets',
'concat',
'uglify',
'cssmin',
'sails-linker:prodJs',
'sails-linker:prodStyles',
'sails-linker:devTpl',
'sails-linker:prodJsJade',
'sails-linker:prodStylesJade',
'sails-linker:devTplJade',
'copy:productionfiles'
]);
};