我正在编写动态连接文件的咕噜声,因为我的grunt.config变量中有文件数组。如何在grunt concat中使用它。
我正在从动态文本替换函数编写grunt.config('jsResources', targetConfig);
。它作为数组返回。如何在grunt concat中使用它。我试过这种方式,但那不值得。
我的jsResources
是数组。我的咕噜声就像
concat: {
js: {
//Concatenate all of the files in the jsResources configuration property
src: ['app/<%= jsResources %>'],
dest: 'build/views/js/combined.js',
options: {
separator: ';\n'
}
}
}
它的重新定位内容但无法读取内容,并在我的combine.js中连接
我的'jsResources'就像['scripts/modules/allModules.js','scripts/config/constants.js','...']
它创建空文件combine.js
。
答案 0 :(得分:2)
所以我再试了一次,这就是结果:
在将它们放入模板化变量之前,您需要生成路径。模板化变量此处是一个对象,但可以是任何有效的from rest_framework import permissions
class MyViewSet(viewsets.GenericViewSet):
permissions_classes = (permissions.AllowAny, )
more info。在其中,您可以设置具有数组值的属性。
js
这会生成包含内容的module.exports = function(grunt) {
var myFiles = {
jsResources: ['file1.js', 'file2.js']
};
myFiles.jsResources = myFiles.jsResources.map(function(item) { return 'app/' + item; });
// var jsres = myFiles.jsResources; // another way
grunt.initConfig({
// myFiles: myFiles, // this is also possible instead of grunt.config() below
concat: {
dist: {
src: ['<%= myFiles.jsResources %>'], // src: ['<%= jsres %>'],
dest: 'dest.js',
},
options: {
separator: '\n'
}
}
});
grunt.config('myFiles', myFiles);
// grunt.config('jsres', jsres); // another way
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.registerTask('default', ['concat:dist']);
};
。
答案 1 :(得分:1)
艾丁的回答是一个很好的方法来解决这个问题。另一种解决方案是(ab)使用expand
/ cwd
选项,如下所示:
grunt.initConfig({
jsDir: 'app',
jsResources: [ 'one.js', 'two.js' ],
concat: {
app: {
expand: true,
cwd: '<%= jsDir %>',
src: ['<%= jsResources %>'],
dest: 'dest.js',
rename: function (dest) { return dest; }
}
}
});
请注意,expand: true
通常用于具有动态src / dest映射,通常具有许多src / dest对(而不是grunt-contrib-concat
所需的映射到单个目标的源数组) 。但是,在这种情况下,它可以与rename
选项(简要记录here)结合使用,以实现您的目标。
这是一种hacky方法,但它具有声明性(以Grunt的风格)的优点,并且它允许配置工作目录(正如我在上面用jsDir
所示)。