在我的网页项目中,我有以下目录结构
|- target
|- foo
|- bar
|- baz
我正在尝试编写一个Grunt任务,它将所有JSON文件从名称与提供给构建的参数匹配的目录中复制到target
目录中
grunt.registerTask('flavor', function(srcDir) {
var from = './' + srcDir + '/*.json';
var dest = './target/';
grunt.file.expand(from).forEach(function(src) {
grunt.file.copy(src, dest);
});
});
但是当我用
打电话时grunt flavor:foo
我收到错误
警告:无法写入“./target/”文件(错误代码:EISDIR)。使用--force继续。
答案 0 :(得分:1)
正如@DanielApt所提到的,你应该使用grunt-contrib-copy。要根据您对构建参数的评论得出答案,您可以通过grunt-option将其转到task
。
方式一:运行不同的目标
grunt.initConfig({
copy: {
foo: {
files: [
{
'expand': 'true',
'cwd': 'foo/',
'src': [**],
'dest': 'dist/en'
}
]
},
bar: {
files: [/**/]
},
baz: {
files: [/**/]
}
}
});
var target = grunt.option("target") || "foo";
grunt.registerTask("default", ["copy:" + target]);
// run with grunt --target=foo
方式2:带模板的Arbituary文件夹:
var target = grunt.option("target") || "foo";
grunt.initConfig({
target: target,
copy: {
default_target: {
files: [
{
'expand': 'true',
'cwd': '<%= target %>/',
'src': [**],
'dest': 'dist/en'
}
]
},
}
});
grunt.registerTask("default", ["copy"]);
// run with grunt --target=anyfolderhere
答案 1 :(得分:0)
你需要写自己的任务吗?如果你不这样做,我用grunt-contrib-copy实现了这个目标。
copy: {
default: {
files: [
{
expand: true,
src: ['foo/**', 'bar/**'],
dest: 'target/'
}
]
}
}