我如何使用grunt-sweet?

时间:2014-02-02 03:32:21

标签: gruntjs sweet.js

我想设置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

2 个答案:

答案 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', <--