gpt4 book ai didi

coffeescript - grunt-contrib-coffee 一对一编译

转载 作者:行者123 更新时间:2023-12-04 04:48:42 24 4
gpt4 key购买 nike

我有几个文件名为:

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

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

    虽然我猜这种行为在某些情况下可能很好,但我想让它们编译成不同的文件,比如 jquery.a.b.js , jquery.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');

    };

    谢谢你的帮助!

    最佳答案

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

    这是一个已知的 issue (扩展仅在上一期之后)和 grunt 开发人员是故意这样做的。
    这是其中一位的引述:

    There's two ways ext could work; it could consider everything after the first dot the extension, or everything after the last dot the extension. We chose the former because the use-case is more common (we encounter .min.js files all the time). That being said, you can use the rename option to specify a function that will use whatever custom naming logic you need.



    因此,目前唯一的解决方法是删除 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 option连同 ext
    ext: '.js',
    extDot: 'last'

    关于coffeescript - grunt-contrib-coffee 一对一编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17804610/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com