Question

Je suis en train de monter un projet à partir d'un répertoire de travail à un serveur (même machine).En utilisant le code suivant:

gulp.src([
    'index.php',
    'css/**',
    'js/**',
    'src/**',
])
.pipe(gulp.dest('/var/www/'));

Je m'attends à voir tous les fichiers copiés.Cependant, il aplatit le dir de la structure de tous les répertoires sont copiés, mais chaque fichier est placé dans la racine /var/www

Gulp semble comme un grand outil de construction, mais la copie d'éléments devrait être un processus simple, sûrement?

Était-ce utile?

La solution 2

S'avère que pour copier un répertoire complet de la structure gulp doit être fourni avec une base de votre gulp.src() la méthode.

Donc gulp.src( [ files ], { "base" : "." }) peut être utilisé dans la structure ci-dessus pour copier tous les répertoires de manière récursive.

Si, comme moi, vous risquez d'oublier ce alors essayer:

gulp.copy=function(src,dest){
    return gulp.src(src, {base:"."})
        .pipe(gulp.dest(dest));
};

Autres conseils

Les ouvrages suivants, sans l'aplatissement de la structure de dossiers:

gulp.src(['input/folder/**/*']).pipe(gulp.dest('output/folder'));

L' '**/*' est la partie importante.Cette expression est un glob qui est un puissant outil de sélection de fichier de l'outil.Par exemple, pour copier seulement .js fichiers, utilisez: 'input/folder/**/*.js'

Donc, la solution, qui est de fournir une base de travail étant donné que tous les chemins ont le même chemin d'accès de base.Mais si vous voulez fournir une base différente chemins, cela ne fonctionne toujours pas.

Une façon, j'ai résolu ce problème a été de faire le début du chemin d'accès relatif.Pour votre cas:

gulp.src([
    'index.php',
    '*css/**/*',
    '*js/**/*',
    '*src/**/*',
])
.pipe(gulp.dest('/var/www/'));

La raison pour laquelle cela fonctionne est que Gulp ensembles de la base à la fin de la première explicite morceau - le leader des * causes à l'ensemble de la base à la mdc (qui est le résultat que nous voulons tous!)

Cela ne fonctionne que si vous pouvez vous assurer que votre structure de dossier de ne pas avoir de certains chemins qui pourraient correspondre à deux fois.Par exemple, si vous avez eu randomjs/ au même niveau que js, vous vous retrouvez correspondant à la fois.

C'est le seul moyen que j'ai trouvé pour les inclure dans le cadre d'un niveau supérieur gulp.src fonction.Il serait probablement plus simple que de créer un plugin/fonction qui pourrait se séparer chacune de ces boules de sorte que vous pouvez spécifier le répertoire de base pour eux, cependant.

Si vous souhaitez copier l'intégralité du contenu d'un dossier de façon récursive dans un autre dossier, vous pouvez exécuter la commande windows suivante de gulp:

xcopy /path/to/srcfolder /path/to/destfolder /s /e /y

L' /y option à la fin est de supprimer le message de confirmation de l'écrasement.

Sous Linux, vous pouvez exécuter la commande suivante à partir de gulp:

cp -R /path/to/srcfolder /path/to/destfolder

vous pouvez utiliser gulp-exec ou gulp-run plugin pour exécuter des commandes système de gulp.

Liens Connexes:

  1. xcopy utilisation

  2. gulp-exec et gulp-run

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top