J'utilise actuellement gulp pour appeler un script bash qui nettoie mon répertoire dist/
Et déplace les fichiers appropriés dans le répertoire clean. Je voudrais que cela se fasse avec gulp car je ne suis pas sûr que le script fonctionnerait sur un système de fichiers non * nix.
Jusqu'à présent, j'utilise le module gulp-clean pour nettoyer le répertoire dist/
, Mais lorsque j'essaie de déplacer les répertoires requis et leurs fichiers dans le dossier dist, ceux-ci sont vides.
var gulp = require('gulp'),
clean = require('gulp-clean');
gulp.task('clean', function(){
return gulp.src(['dist/*'], {read:false})
.pipe(clean());
});
gulp.task('move',['clean'], function(){
gulp.src(['_locales', 'icons', 'src/page_action', 'manifest.json'])
.pipe(gulp.dest('dist'));
});
gulp.task('dist', ['move']);
en appelant gulp dist
, le répertoire dist/
est rempli avec les répertoires appropriés, mais ils sont tous vides.
$ ls dist/*
dist/manifest.json
dist/_locales:
dist/icons:
dist/page_action:
Comment copier les répertoires et leur contenu dans le dossier dist/
?
Vous devez inclure l'option base
à src, qui préservera la structure de fichier comme vous le souhaitez:
var filesToMove = [
'./_locales/**/*.*',
'./icons/**/*.*',
'./src/page_action/**/*.*',
'./manifest.json'
];
gulp.task('move',['clean'], function(){
// the base option sets the relative root for the set of files,
// preserving the folder structure
gulp.src(filesToMove, { base: './' })
.pipe(gulp.dest('dist'));
});
En outre, vous aurez probablement des problèmes sur la route si vous avez tous ces fichiers sources à la racine de votre projet.
Si vous le pouvez, je vous recommande d'utiliser un seul src/
dossier et déplacez tous vos fichiers spécifiques à l’application. Cela facilite la maintenance et empêche vos fichiers spécifiques à la construction de se mélanger à ceux de votre application.
Si vous faites cela, alors remplacez simplement toutes les occurrences de ./
avec src/
dans l'exemple ci-dessus.
La question d'origine cible uniquement les répertoires (dossiers a.k.a.) de son répertoire gulp.src
, c'est à dire. gulp.src(['_locales', ...
dans cet exemple, _locales
est le nom d’un répertoire .
La réponse acceptée utilise un motif glob
dans son gulp.src
pour cibler les fichiers n’importe où dans ces répertoires, c.-à-d. gulp.src(['./_locales/**/*.*', ...
, (notez les doubles astérisques, et les nomfichier.extension astérisques). La réponse acceptée fonctionne ...
... mais la réponse acceptée ne met que l'accent sur l'option base
:
Vous devez inclure l'option
base
à src ...
J'ai expérimenté et trouvé:
Strictement parlant, il n’est pas nécessaire d’utiliser l’option base
pour obtenir ce que le PO a demandé: "... et déplace les fichiers appropriés dans le répertoire clean. " La base
option fait préserve bien la structure dossier + fichier (comme décrit dans la réponse acceptée), mais l'option base
est non suffisante pour déplacer les fichiers en tant que OP demandé . Préserver la structure du dossier + fichier correspond probablement à ce que l'OP attend , donc la réponse acceptée est bonne, mais ...
Juste pour répéter ce que fait déplace les fichiers, ce sont les patterns glob
:
Double astérisque (.../**/...
) effectue une recherche récursive dans tous les sous-dossiers et sous-dossiers "sous-dossiers", etc.
Nom de fichier.extension astérisques (.../*.*
) trouve des fichiers de tous noms, et de tous extensions. Je pense donc que cette partie mérite le plus d'emphase!
La réponse acceptée change quelque chose d'autre; il ajoute un préfixe de ./
à chaque chemin des arguments passés à gulp.src
. Je pense que c'est inutile/redondant; si il n'y a pas ./
, (comme dans la question OP), les chemins sont résolus par rapport au répertoire actuel - entraînant le même comportement. Mais c'est peut-être une bonne pratique d'être explicite avec le ./
Faites-moi savoir si je me trompe ...