我有几个名为的文件:
并将它们全部编译到输出目录中的一个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');
};
感谢您的帮助!
答案 0 :(得分:10)
问题在于有多个点的文件名 如果它是 jquery-a-b.coffee , jquery-a-c.coffee 等,你会看到预期的输出。
这是一个众所周知的issue(扩展仅在上一个时期之后),而咕噜咕噜的开发人员故意这样做。
以下是其中一个的引用:
分机有两种方式可以工作;它可以考虑之后的一切 第一个点是扩展名,或者是最后一个点后面的所有内容 延期。我们选择前者是因为用例更常见(我们 一直遇到.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
option和ext
ext: '.js',
extDot: 'last'
答案 1 :(得分:3)
这样可以让您无需在gruntFile中手动添加文件:
coffee: {
glob_to_multiple: {
expand: true,
flatten: true,
cwd: 'app/webroot/coffee/',
src: ['*.coffee'],
dest: 'app/webroot/',
ext: '.js'
}
},
有关示例用法,请参阅https://github.com/gruntjs/grunt-contrib-coffee#usage-examples