首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >grunt.js中目的地的动态映射

grunt.js中目的地的动态映射
EN

Stack Overflow用户
提问于 2013-06-09 21:02:50
回答 1查看 9K关注 0票数 17

配置它们的正确方法是什么?

例如:

来源: /modules/$modulename/js/*.js (几个文件) dest: /modules/$modulename/js/compiled.js

因此,我想要做的是将具有未知/未配置数量的子文件夹($modulename)的js文件编译为每个子文件夹一个文件。

这个是可能的吗?

下面的函数(在以后和现在的78指令中构建)完成这项工作:

代码语言:javascript
复制
grunt.registerTask('preparemodulejs', 'iterates over all module directories and compiles modules js files', function() {

    // read all subdirectories from your modules folder
    grunt.file.expand('./modules/*').forEach(function(dir){

        // get the current concat config
        var concat = grunt.config.get('concat') || {};

        // set the config for this modulename-directory
        concat[dir] = {
            src: [dir + '/js/*.js', '!' + dir + '/js/compiled.js'],
            dest: dir + '/js/compiled.js'
        };

        // save the new concat config
        grunt.config.set('concat', concat);

    });

});

在此之后,在我的默认配置中,我将preparemodulejs放在了concat作业之前。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-11 15:43:49

您可能需要编写自己的任务,在其中迭代子文件夹,并动态附加到concat配置中。

代码语言:javascript
复制
grunt.registerTask("your-task-name", "your description", function() {

  // read all subdirectories from your modules folder
  grunt.file.expand("./modules/*").forEach(function (dir) {

    // get the current concat config
    var concat = grunt.config.get('concat') || {};

    // set the config for this modulename-directory
    concat[dir] = {
     src: ['/modules/' + dir + '/js/*.js', '!/modules/' + dir + '/js/compiled.js'],
     dest: '/modules/' + dir + '/js/compiled.js'
    };

    // save the new concat configuration
    grunt.config.set('concat', concat);
  });
  // when finished run the concatinations
  grunt.task.run('concat');
});

使用以下命令运行此命令:

代码语言:javascript
复制
$ grunt your-task-name

这段代码未经测试,但我认为它应该可以完成您的工作。

提示:如果你想让你的gruntfile保持较小,你可以把这段代码放到一个外部文件中,并包含在你的gruntfile中,例如,把这段代码放到一个任务目录下的文件中:

代码语言:javascript
复制
module.exports = function(grunt) {
  grunt.registerTask("your-task-name", "your description", function() {
    ...
  });
};

并加载到你的gruntfile文件中:

代码语言:javascript
复制
grunt.loadTasks("./tasks");
票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17009874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档