Utilisez gulp pour sélectionner et déplacer les répertoires et leurs fichiers

voix
90

J'utilise actuellement gulp pour appeler un script bash qui nettoie mon dist/répertoire et déplace les fichiers appropriés dans le répertoire propre. Je voudrais que cela soit fait avec gulp parce que je ne suis pas sûr le script travaillerait sur un système de fichiers non nix *.
Jusqu'à présent, j'utilise le module engouffreur-propre pour nettoyer le dist/répertoire , mais lorsque je tente de déplacer les répertoires nécessaires et leurs fichiers dans le dossier dist, les répertoires 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']);

appelant les gulp distrésultats dans le le dist/répertoire étant rempli avec les répertoires corrects mais ils sont tous vides

$ ls dist/*
dist/manifest.json

dist/_locales:

dist/icons:

dist/page_action:

Comment puis-je copier les répertoires et leur contenu au dist/dossier?

Créé 04/02/2014 à 09:00
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
147

Vous devez inclure l' baseoption de la Src, qui préservera la structure du 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'));
});

, Vous aussi allez probablement avoir du mal sur la route si vous avez tous ces fichiers source dans la racine de votre projet.

Si vous le pouvez, je vous recommande d' utiliser un seul src/dossier et déplacer tous vos fichiers spécifiques à l' application en là. Cela facilite l' entretien aller de l' avant, et empêche vos fichiers spécifiques à construire à partir de se mélanger avec vos fichiers spécifiques à l' application.

Si vous faites cela, alors il suffit de remplacer toutes les occurrences ./avec src/dans l'exemple ci - dessus.

Créé 04/02/2014 à 16:51
source utilisateur

voix
1

Les cibles d'interrogation d ' origine répertoires (aka dossiers) dans son gulp.src, à savoir gulp.src(['_locales', ...dans cet exemple, _localesest le nom d'un répertoire .

La réponse acceptée utilise un globmodèle dans son gulp.srcpour cibler des fichiers partout dans ces répertoires, par exemple gulp.src(['./_locales/**/*.*', ..., (remarquez les doubles astérisques et les filename.extension astérisques). La réponse acceptée fonctionne ...

... mais la réponse acceptée souligne que l' baseoption de :

Vous devez inclure l' baseoption de Src ...

J'ai expérimenté et trouvé:

  1. Au sens strict, il est inutile d'utiliser l' baseoption pour obtenir ce que l'OP a demandé: « ... et déplace les appropriés fichiers dans le répertoire propre. » L' baseoption de ne conserve en effet le dossier + fichier la structure (comme décrit dans la réponse acceptée), mais l' baseoption est insuffisante pour déplacer les fichiers que l'OP a demandé . Préserver le dossier + structure de fichier est probablement ce que l'OP attend , donc la réponse acceptée est bonne, mais ...

  2. Il suffit de répéter ce ne déplace les fichiers, ce sont les globmodèles:

    1. Double-astérisque ( .../**/...) recherche récursive dans tous les sous - dossiers et de sous - dossiers, etc. sous - dossiers

    2. Astérisques filename.extension ( .../*.*) trouve les fichiers de tous les noms et toutes les extensions . Je pense donc que cette partie mérite le plus l' accent!

  3. La réponse acceptée change autre chose; il ajoute un préfixe ./à chaque arguments de chemin passés à gulp.src. Je pense que est inutile / redondante; s'il n'y a pas ./, (comme dans la question OP), les chemins sont résolus par rapport au répertoire courant - qui entraîne le même comportement . Mais peut - être est une bonne pratique d'être explicite avec la./

Permettez-moi de savoir si je me trompe ...

Créé 30/03/2017 à 05:22
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more