我正在学习咕噜咕噜并尝试做我认为简单的事情:复制一个文本文件。
copy: {
main: {
src: 'app/text.txt',
dest: 'build/copied.txt'
}
}
运行时不会产生错误,文件被“复制”,但build/copied.txt
包含单个句点字符而不是app/text.txt
文件的内容。
为什么/它会这样做?
后续修改
grunt-copy
个grunt-contrib-copy
模块。这种方式有所不同,并且有一些标点选项,我相信这是神秘时期的来源。app/test.txt
应该是text
。这个QA中的任何人都不明白,因为我没有发布我的文件列表。但是... --verbose
标签进行调试,因为它显示缺少src,这让我发现了愚蠢的错字。以上代码可以工作!
答案 0 :(得分:1)
嗯,我假设你正在使用(grunt-contrib-copy),我调试了这个问题,似乎复制(单个.txt文件名称)不起作用它适用于.js和许多其他文件?但是你可以让.txt文件副本像这样工作,如果再次遇到权限问题,会有一个名为 mode 的选项。
copy: {
main: {
flatten: true,
src: ["app/*.txt"],
dest: "build/",
expand: true,
rename: function (dest, src) {
// rename test.txt to copied.txt
if (src === "test.txt") {
return dest + "copied.txt";
}
return dest + src;
}
}
}
但是我会在不重命名的情况下执行此类操作,很明显build
文件夹包含您复制的文件,所以我更喜欢将它们复制原样:
copy: {
main: {
flatten: true,
src: ["app/*.txt"],
dest: "build/",
expand: true
}
}
请注意,因为单个文件匹配src: ["app/test.txt"]
(对于.txt格式)不起作用,如果您遇到复制太多文本文件的问题,可以将其单独放在不同的文件夹中并像使用它一样这样:
copy: {
single: {
flatten: true,
src: ["app/single/*.txt"],
dest: "build/",
expand: true
},
other: {
/* ... */
}
}
和任务:
grunt.registerTask("testCopy", ["copy:single"]);
并运行它:
grunt testCopy
答案 1 :(得分:0)
默认情况下,copy
任务仅复制,而不是重命名。因此,您正在做的是在copied.txt
目录中创建名为build
的目录。要在副本上重命名文件,您需要使用rename
选项。这不是copy
任务的功能,而是它使用的file
选项的一般功能(许多其他任务使用此常用选项)。您可以看到documentation on the Grunt site,只需在该页面上找到“重命名”。
copy: {
main: {
src: 'app/text.txt',
dest: 'build/',
rename: function(dest, src, options) {
return path.join(dest, "copied.txt");
}
}
}