grunt-babel 不能作为多任务工作

grunt-babel not working as multi-task

以下配置按预期工作,但是当 //build: { 内容取消注释时,它要么默默地失败,要么做了一些我意想不到的事情。

    babel: {
        //build: {
            options: {
                sourceMap: true,
                presets: ['es2015']
            },
            dist: {
                files: [{
                    expand: true,
                    cwd: 'build/src/app',
                    src: ['**/*.js'],
                    dest: 'build/src/es5-app'
                }]
            }
        //}
    },

因此,在 //build: { 被注释掉的情况下,es5-app 目录在 build/src 处创建,但是 //build: { 未被注释,该目录不会被创建。在这两种情况下,g运行t 都是 运行 作为 grunt babel,它 returns Done, without errors.

由于 g运行t-babel 注册为多任务,dist 实际上是目标的名称,files 在配置的第一级。所以当你 运行 没有 build 的 babel 时,它实际上是 运行ning babel:dist(你应该在日志中看到)。

要使其按您希望的方式工作,您需要如下内容:

babel: {
    options: {
        sourceMap: true,
        presets: ['es2015']
    },
    dist: {
        files: [{
            expand: true,
            cwd: 'build/src/app',
            src: ['**/*.js'],
            dest: 'build/src/es5-app'
        }]
    }
    build: {
        files: [{
            expand: true,
            cwd: 'build/src/app/test',
            src: ['test/**/*.js'],
            dest: 'build/test/es5-app'
        }]
    }
},

这将允许您 运行 babel:dist 或 babel:build。

有关多任务的详细信息,请参阅 http://gruntjs.com/creating-tasks