【问题标题】:grunt-contrib-coffee one-to-one compilegrunt-contrib-coffee 一对一编译
【发布时间】:2013-07-22 04:38:39
【问题描述】:

我有几个文件名为:

  • jquery.a.b.coffee
  • jquery.a.c.coffee
  • jquery.a.d.coffee

它们都被编译到我的输出目录中的一个jquery.js 文件中。

虽然我猜这种行为在某些情况下可能很好,但我想让它们编译成不同的文件,如 jquery.a.b.jsjquery.a.c.js 等。我如何告诉 grunt-contrib-coffeescript 这样做?

我的 Gruntfile.js 看起来像这样:

module.exports = function (grunt) {
    grunt.initConfig({
        coffee: {
          dist: {
            files: [{
              expand: true,
              flatten: true,
              cwd: 'app/webroot/coffee',
              src: ['{,*/}*.coffee'],
              dest: 'app/webroot/js',
              ext: '.js'
            }]
          }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-coffee');

};

感谢您的帮助!

【问题讨论】:

    标签: coffeescript gruntjs


    【解决方案1】:

    问题在于文件名有多个点。
    如果是 jquery-a-b.coffeejquery-a-c.coffee 等,你会看到预期的输出。

    这是一个已知的issue(仅在上一期之后进行扩展),并且开发人员故意这样做。
    以下是其中一位的引述:

    ext 有两种工作方式;它可以考虑之后的一切 第一个点是扩展名,或最后一个点之后的所有内容 延期。我们选择前者是因为用例更常见(我们 总是遇到 .min.js 文件)。话虽如此,您可以使用 重命名选项指定将使用任何自定义的函数 您需要的命名逻辑。

    因此,目前唯一的解决方法是删除 ext 并像这样使用 rename

    coffee: {
      dist: {
        files: [{
          expand: true,
          cwd: 'app/webroot/coffee',
          src: ['{,*/}*.coffee'],
          dest: 'app/webroot/js',
          rename: function(dest, src) {
            return dest + '/' + src.replace(/\.coffee$/, '.js');
          }
        }]
      }
    }
    

    自 Grunt 0.4.3 起更新:
    您现在可以将extDot optionext 一起使用

    ext: '.js',
    extDot: 'last'
    

    【讨论】:

    • 为什么需要'flatten: true'?
    • @KrisKhaira 我相信在这种情况下flatten 选项不是必需的,因此我将其从答案中删除。感谢您的关注。
    【解决方案2】:

    这样你就不必在你的 gruntFile 中手动添加文件了:

    coffee: {
        glob_to_multiple: {
        expand: true,
        flatten: true,
        cwd: 'app/webroot/coffee/',
        src: ['*.coffee'],
        dest: 'app/webroot/',
        ext: '.js'
        }
    },
    
    1. cwd:您的文件所在的文件夹
    2. src:文件的匹配模式,使用 glob
    3. dest:文件所在的文件夹。

    请参阅https://github.com/gruntjs/grunt-contrib-coffee#usage-examples 了解一些示例用法

    【讨论】:

    • 没有其他选择吗,要提的文件很多
    • 好的,这个解决方案不会编译任何东西。
    • 我已经根据您的需要更改了数据,当您执行 coffee 任务时返回什么? (与grunt coffee
    • 非常感谢,但问题仍然存在:$ grunt coffee Running "coffee:glob_to_multiple" (coffee) task File app/webroot/jquery.js created。
    猜你喜欢
    • 2014-02-25
    • 2013-02-11
    • 2015-06-13
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多