Grunt concat结果

时间:2015-06-30 06:00:09

标签: node.js gruntjs grunt-contrib-concat

我正在使用Grunt进行构建任务,并且我已经细分了连接活动。特别是,我有一个用于Bootstrap的concat,一个用于DataTables,然后用于获取那些加jQuery并尝试制作一个整体。

我很确定我的失败是由于异步调用造成的。我试图连接"炼狱"中的文件。在它们存在之前!但是,我不确定如何解决这个问题,而不是创建一个重复所有已完成的任务的新任务。

以下是我如何将其可视化,但我完全清楚该任务的异步性质使其无法实现:

grunt.initConfig({
/* ... other initConfig stuff ... */
  concat: {
    options: {
        stripBanners: false
    },
    bootstrapJS: {
        banner: '/*!\n' +
            ' * Bootstrap v<%= bootstrapInfo.version %> (<%= bootstrapInfo.homepage %>)\n' +
            ' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= bootstrapInfo.author %>\n' +
            ' * Licensed under the <%= bootstrapInfo.license %> license\n' +
            ' */\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>',
        src: [
            '/lib/bootstrap/js/transition.js',
            '/lib/bootstrap/js/alert.js',
            '/lib/bootstrap/js/button.js',
            '/lib/bootstrap/js/carousel.js',
            '/lib/bootstrap/js/collapse.js',
            '/lib/bootstrap/js/dropdown.js',
            '/lib/bootstrap/js/modal.js',
            '/lib/bootstrap/js/tooltip.js',
            '/lib/bootstrap/js/popover.js',
            '/lib/bootstrap/js/scrollspy.js',
            '/lib/bootstrap/js/tab.js',
            '/lib/bootstrap/js/affix.js'],
        dest:
            'purgatory/js/bootstrap.js'
    },
    dataTablesJS: {
        src: [
            '/lib/js/datatables/jquery.dataTables.js',
            '/lib/js/datatables/dataTables.bootstrap.js'],
        dest:
            'purgatory/js/dataTables.js'
    },
    noCompMonolith: {
        src: [
            'lib/jquery.js',
            'purgatory/js/bootstrap.js',
            'purgatory/js/dataTables.js'],
        dest:
            'dev/js/application_monolith.js'
    }
  }
});

或者试图聪明并使用标签,noCompMonolith看起来更像这样(如果我正确地格式化标签,这实际上是同样的事情):

noCompMonolith: {
    src: [
        'lib/jquery.js',
        '<%= concat.dataTablesJS.dest %>',
        '<%= concat.bootstrapJS.dest %>'],
    dest:
        'dev/js/application_monolith.js'
}

我也尝试过使用一个函数,但是initConfig必须对正确的数组进行健全性检查,而不是返回数组的函数。或者,我有语法错误!在这种情况下,我实际上会尝试连接整个以前的集合,而不是复制粘贴,试图明白它:

noCompMonolith: {
    src: function() {
        var src = [];
        src.push.apply(src, 'lib/jquery.js');
        src.push.apply(src, concat.bootstrapJS.src);
        src.push.apply(src, concat.dataTablesJS.src);
        return src;
    },
    dest: 'dev/js/application_monolith.js'
}

底线:

  1. Concat不同的&#34;组件&#34;分别。当我开发Grunt任务时,我可能想要Bootstrap而不是整体。或DataTables作为单独的文件。我想把我的担忧分开在&#34;炼狱&#34;直到我与他们做更多的事情。

  2. 对这些不同的&#34;组件进行第二次结束&#34;

  3. 在Grunt中有没有已知的技术?我的一些想法没问题,但语法错了吗?

1 个答案:

答案 0 :(得分:0)

哦,gawd。所以这只是错别字。我有正确的方法开始。

我在我的 $var = htmlspecialchars(str_replace("'", "&rsquo;", $v), ENT_QUOTES, 'ISO-8859-1'); 数组中使用前导斜杠开始我的路径。显然这并不好。我没有注意到它生成了0字节的Bootstrap和DataTables文件。当您连接空文件时......好......结果很明显。

作为我自己疏忽的记录,这是一个正确且有效的src对象:

concat