J'essaie de copier tous les fichiers d'un répertoire dans un autre répertoire dans le cadre de mon processus de construction. Cela fonctionne bien pour les fichiers individuels que je spécifie explicitement, mais lorsque j'essaie de copier le répertoire entier, cela fait des choses étranges comme copier la structure complète du répertoire (ou rien du tout). Voici la partie pertinente de mon 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/" }
]
}
},
Plus précisément, c'est la dernière ligne que je ne peux pas obtenir au travail:
{ src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" }
la source
cwd
options, assurez-vous de tournerexpand:true
. Si vous ne définissez pasexpand:true
, cwd ne fonctionnera pas correctement.flatten: false
pour que cela fonctionne.**/*
C'est ce que je cherchais, j'utilisais ** merci mec.Cette tâche conservera la structure des dossiers si vous spécifiez un fichier glob. Ce que vous voulez, c'est l'
flatten
option qui supprimera la structure.Trouvez le reste des options disponibles dans le référentiel Github . J'espère que cela t'aides.
la source
Je voudrais ajouter que changer le format du glob dans src modifiera le fonctionnement de la copie.
Comme indiqué par bmoeskau ci-dessus, ce qui suit copiera tout ce qui se trouve à l' intérieur
dist/
et le déplacera verspath/to/dir
(écrasant la destination si elle existe déjà).Notez cependant que:
Copiera uniquement les fichiers à l'intérieur
dist/
ainsi que les répertoires, mais ne copiera pas le contenu de ces répertoires vers la destination.En outre, ce qui suit avec
src: '*/*'
seront uniquement des répertoires avec copie contenu à l' intérieurdist/
. Autrement dit, les fichiers juste à l'intérieurdist/
ne seront pas copiés.Enfin, comme ci-dessus, mais
src: '**/**'
ne copiera que les fichiers à l'intérieurdist/
ainsi que les fichiers à l'intérieur desdist/
sous-répertoires verspath/to/dir
. Il n'y aura donc aucun dossier à l'intérieur de la destination.la source
**
toujours des fichiers et des répertoires, et*
seulement des fichiers?*
s adjacents utilisés comme un seul modèle correspondront à tous les fichiers et à zéro ou plusieurs répertoires et sous-répertoires . S'il est suivi d'un/
, deux*
s adjacents correspondront uniquement aux répertoires et sous-répertoires .**
correspond à tout , alors que**/
seuls les répertoires et sous-répertoires (pas les fichiers).J'ai dû utiliser egdy à la place des accolades pour le segment des fichiers (dans Coffeescript) ...
la source
Si vous développez avec un yeoman angulaire, c'est la meilleure façon de copier avec grognement. expand: true est requis lors de l'utilisation de cwd. <% = yeoman.app%> est simplement la route de l'application ('.').
la source