[英]How can I configure my Grunt.js file to copy a directory without a particular subdirectory during the build?
[英]Copy all files from directory to another with Grunt.js copy
我正在嘗試將目錄中的所有文件復制到另一個目錄中,這是我構建過程的一部分。 對於我明確指定的單個文件,它可以正常工作,但是當我嘗試復制整個目錄時,它確實做了一些奇怪的事情,例如復制了完整的目錄結構(或根本沒有復制任何內容)。 這是我的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/" }
]
}
},
具體來說,這是我無法開始的最后一行:
{ src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" }
在此情況下, 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
}
}
如果您指定文件全局,則此任務將維護文件夾結構。 您需要的是flatten
選項,它將刪除結構。
{
expand: true,
flatten: true,
src: ['src/html/css/fonts/**'],
dest: 'dist/myvoice/css/fonts/',
filter: 'isFile'
}
在Github存儲庫中找到其余可用選項。 希望這可以幫助。
我想補充一點,在src中更改glob的格式將修改副本的工作方式。
如上面的bmoeskau所指出的,以下內容將復制dist/
所有內容並將其移動到path/to/dir
(如果目標已經存在,則將其覆蓋)。
copy: {
files: {
expand: true,
dest: 'path/to/dir',
cwd: 'dist/',
src: '**'
}
}
但是請注意:
copy: {
files: {
expand: true,
dest: 'path/to/dir',
cwd: 'dist/',
src: '*'
}
}
只會復制中的文件dist/
以及目錄,但不會這些目錄中的內容復制到目標。
同樣,以下帶有src: '*/*'
將僅復制內容在dist/
內的目錄。 也就是說,位於dist/
內的文件將不會被復制。
copy: {
files: {
expand: true,
dest: 'path/to/dir',
cwd: 'dist/',
src: '*/*'
}
}
最后,與上面相同,但是src: '**/**'
僅將dist/
內的文件以及dist/
子目錄內的文件復制到path/to/dir
。 因此,目的地內將沒有文件夾。
copy: {
files: {
expand: true,
dest: 'path/to/dir',
cwd: 'dist/',
src: '*/*',
flatten: true,
filter: 'isFile'
}
}
必須在文件段中使用egdy而不是花括號(在Coffeescript中)...
copy: {
files: [
cwd: 'path/to/files'
src: '**/*'
dest: 'dist/files'
expand: true
]
}
如果您正在使用有角度的yeoman進行顯影,那么這是使用grunt復制的更好方法。 expand:使用cwd時需要true。 <%= yeoman.app%>只是應用程序路由('。')。
{
expand: true,
cwd: '<%= yeoman.app %>/data',
dest: '<%= yeoman.dist %>/data',
src: ['**']
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.