0

我正在使用 grunt 在我的项目中构建咖啡脚本和更少的文件。现在我想转向 gulp ......但我面临一些问题。

在我的 grunt 文件中,如果一个全局对象包含我所有源目录和目标目录的路径。每个任务都使用此路径来查找要处理的文件。

grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),   
    // Global configuration
    globalConfig: {
        //Source Paths
        src: {
            styleDirectory: "styles/",
            customStyleDirectory: '<%= globalConfig.src.styleDirectory %>_Custom/',
            scriptDirectory: "scripts/",
            customScriptDirectory: '<%= globalConfig.src.scriptDirectory %>_Custom/',
        },
        //Destination Paths
        dest: {
            outputRoot: "../",
            styleOutput: "<%= globalConfig.dest.outputRoot %>css/",
            scriptOutput: "<%= globalConfig.dest.outputRoot %>js/",
        }
    },
    // Compile coffee script to java script -----------------------------------------
    coffee: {
        options: { .. },
        customOut: {
            files: {
                '<%= globalConfig.dest.scriptOutput %>Main.js': [
                    '<%= globalConfig.src.customScriptDirectory %>_Root.coffee',
                    '<%= globalConfig.src.customScriptDirectory %>Logic/_Helpers.coffee',
                    '<%= globalConfig.src.customScriptDirectory %>**/*.coffee'
                ]
            }
        }
    }
});

怎么能用 gulp 做这样的事情?<%= %> 似乎不起作用。

4

1 回答 1

1

以同样的方式,您可以在配置文件中使用multidimensional objectfrom :gulpfile.js

var directories = {
    styles: 'styles/',
    scripts: 'scripts/',
    dest: 'dest/'
};

var paths = {
    src: {
        customStyles: directories.styles+'_Custom/',
        customScripts: directories.scripts+'_Custom/'
    },
    dest: {
        styles: directories.dest + directories.styles,
        scripts: directories.dest + directories.scripts
    }
};

然后,您可以从 Gulp 任务中引用该对象,如下所示:

gulp.task('styles', function() {
  return gulp.src(paths.src.styles + 'main.css')
    ...
});

// Rerun the task when a file changes
gulp.task('watch', function() {
  gulp.watch(paths.src.styles, ['styles']);
  ...
});
于 2015-05-07T07:38:26.373 回答