我想设置grunt sweet以便我可以让它开始观看我的sweetjs-using文件并在它们发生变化时进行编译。
但是,我是制作gruntfiles的新手,而且在该链接中根本没有足够的信息让我知道如何设置它。搜索使用grunt.loadNpmTasks('grunt-sweet');
的文件我能够找到一个用作模板的文件,但我无法使其正常工作。
这个gruntfile
/*global module:false*/
module.exports = function(grunt) {
'use strict';
grunt.initConfig({
sweet: {
content_dir: 'src',
publish_dir: 'build',
},
watch: {
sweet: {
files: [
'src/**'
],
tasks: 'sweet'
}
}
});
grunt.loadNpmTasks('grunt-sweet');
// Project tasks
grunt.registerTask('default', 'sweet');
};
给我
W:\sweetjs-playground> grunt sweet:watch
Running "sweet:watch" (sweet) task
Fatal error: Object #<Object> has no method 'done'
W:\sweetjs-playground> grunt sweet -v
Initializing
Command-line options: --verbose
Reading "Gruntfile.js" Gruntfile...OK
Registering Gruntfile tasks.
Initializing config...OK
Registering "grunt-sweet" local Npm module tasks.
Reading W:\sweetjs-playground\node_modules\grunt-sweet\package.json...OK
Parsing W:\sweetjs-playground\node_modules\grunt-sweet\package.json...OK
Loading "sweet.js" tasks...OK
+ sweet
Loading "Gruntfile.js" tasks...OK
+ default
Running tasks: sweet
Running "sweet" task
Verifying property sweet exists in config...OK
Fatal error: Object #<Object> has no method 'done'
这似乎是成功的,直到它不成功。我在这里做错了什么?
我想要的只是将src中的文件自动编译为build
答案 0 :(得分:1)
我不是这方面的专家,但你可以尝试这个片段。我希望它能有所帮助。
module.exports = function(grunt) {
grunt.initConfig({
sweetjs: {
src: {
files: [{
expand: true,
cwd: 'src/',
src: ['**/*.js'],
dest: 'build/'
}]
}
},
watch: {
sweetjs: {
files: ['src/**/*.js'],
tasks: ['sweetjs:src']
}
}
});
grunt.event.on('watch', function(action, filepath, target) {
if(action == 'changed' && target == 'sweetjs') {
grunt.config.set('sweetjs.src.src', [filepath]);
grunt.config.set('sweetjs.src.dest', filepath.replace(/^src/, 'build'));
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-sweet.js');
grunt.registerTask('default', ['sweetjs']);
};
如果它不起作用,也许你的files
路径就是问题所在。尝试添加扩展程序src: ['src/**/*{.php,.html}'],
答案 1 :(得分:0)
我不知道这是不是你错误的原因,但我想是的。在最后一次配置属性后删除逗号:
publish_dir: 'build', <--