Eva*_*bbs 88 javascript gruntjs
我正在尝试将目录中的所有文件复制到另一个目录中,作为构建过程的一部分.它适用于我明确指定的单个文件,但是当我尝试复制整个目录时,它会像复制整个目录结构(或根本没有任何内容)那样奇怪.这是我的GruntFile.js中的相关部分:
copy: {
myvoice: {
files: [
{ src:"src/html/index.html", dest:"dist/myvoice/index.html" },
{ src:"src/html/css/style.css", dest:"dist/myvoice/css/style.css" },
{ src:"src/html/js/require.js", dest:"dist/myvoice/js/require.js" },
{ src:"build/myvoice/main.js", dest:"dist/myvoice/js/main.js" },
{ src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" }
]
}
},
Run Code Online (Sandbox Code Playgroud)
具体来说,这是我无法工作的最后一行:
{ src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" }
Run Code Online (Sandbox Code Playgroud)
Bri*_*kau 145
flatten: true在这个答案中的选项可能适用于某些情况,但在我看来,更常见的要求(如我的情况)是将文件夹及其子文件夹结构按原样复制到dest.似乎在大多数情况下,如果你有子文件夹,它们可能在代码中被引用.执行此操作的关键是cwd选项,它将保留相对于指定工作目录的文件夹结构:
copy: {
files: {
cwd: 'path/to/files', // set working folder / root to copy
src: '**/*', // copy all files and subfolders
dest: 'dist/files', // destination folder
expand: true // required when using cwd
}
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*Ben 43
如果指定文件glob,此任务将维护文件夹结构.你想要的是flatten将删除结构的选项.
{
expand: true,
flatten: true,
src: ['src/html/css/fonts/**'],
dest: 'dist/myvoice/css/fonts/',
filter: 'isFile'
}
Run Code Online (Sandbox Code Playgroud)
找到Github仓库中的其他可用选项.希望这可以帮助.
Jor*_*ran 23
我想补充一点,在src中更改glob的格式将修改副本的工作方式.
正如上面的bmoeskau所指出的,以下内容将复制内部的所有内容dist/并将其移动到path/to/dir(如果目标已经存在,则覆盖目标).
copy: {
files: {
expand: true,
dest: 'path/to/dir',
cwd: 'dist/',
src: '**'
}
}
Run Code Online (Sandbox Code Playgroud)
但请注意:
copy: {
files: {
expand: true,
dest: 'path/to/dir',
cwd: 'dist/',
src: '*'
}
}
Run Code Online (Sandbox Code Playgroud)
只会复制文件内部dist/和目录,但不会将这些目录的内容复制到目标.
此外,在下面src: '*/*'将只复制目录里面的内容dist/.也就是说,内部的文件dist/不会被复制.
copy: {
files: {
expand: true,
dest: 'path/to/dir',
cwd: 'dist/',
src: '*/*'
}
}
Run Code Online (Sandbox Code Playgroud)
最后,与上面相同,但只src: '**/**'复制文件内部以及子目录中的文件.所以目的地内没有文件夹.dist/dist/path/to/dir
copy: {
files: {
expand: true,
dest: 'path/to/dir',
cwd: 'dist/',
src: '*/*',
flatten: true,
filter: 'isFile'
}
}
Run Code Online (Sandbox Code Playgroud)