Obecnie używam gulp do wywołania skryptu bash, który czyści mój dist/
katalog i przenosi odpowiednie pliki do czystego katalogu. Chciałbym, aby było to zrobione za pomocą gulp, ponieważ nie jestem pewien, czy skrypt będzie działał na systemie plików innym niż * nix.
Do tej pory używam modułu gulp-clean do czyszczenia dist/
katalogu, ale kiedy próbuję przenieść wymagane katalogi i ich pliki do folderu dist, katalogi są puste.
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']);
wywołanie gulp dist
powoduje, że dist/
katalog jest wypełniany odpowiednimi katalogami, ale wszystkie są puste
$ ls dist/*
dist/manifest.json
dist/_locales:
dist/icons:
dist/page_action:
Jak skopiować katalogi i ich zawartość do dist/
folderu?
read
opcji w src ustawionej nafalse
(jest ustawionatrue
domyślnie).Oryginalne pytanie dotyczy tylko katalogów (czyli folderów), w jego
gulp.src
, czyligulp.src(['_locales', ...
w tym przykładzie,_locales
jest nazwą katalogu .Zaakceptowana odpowiedź wykorzystuje
glob
wzorzec w swoimgulp.src
do wskazywania plików w dowolnym miejscu w tych katalogach, tj.gulp.src(['./_locales/**/*.*', ...
(Zwróć uwagę na podwójne gwiazdki i gwiazdki nazwa_pliku.rozszerzenie ). Zaakceptowana odpowiedź działa ...... ale zaakceptowana odpowiedź podkreśla tylko
base
opcję :Eksperymentowałem i znalazłem:
Ściśle mówiąc, nie ma potrzeby używania
base
opcji, aby osiągnąć to, o co prosił OP: „... i przenosi odpowiednie pliki do czystego katalogu”.base
Opcja ma rzeczywiście zachowania folderów + plików struktury (jak opisano w przyjętym odpowiedzi), alebase
opcja jest nie wystarczające , aby przenieść pliki jako OP poprosił . Zachowanie struktury folderów + plików jest prawdopodobnie tym, czego oczekuje OP , więc zaakceptowana odpowiedź jest dobra, ale ...Tylko powtórzyć to, co ma przenieść pliki, to te
glob
wzory:Podwójna gwiazdka (
.../**/...
) przeszukuje rekurencyjnie we wszystkich podfolderach, podfolderach, podfolderach itp.Gwiazdka nazwy pliku.rozszerzenie (
.../*.*
) znajduje pliki o wszystkich nazwach i wszystkich rozszerzeniach . Myślę więc, że ta część zasługuje na największy nacisk!Zaakceptowana odpowiedź zmienia coś innego; dodaje przedrostek
./
do każdego przekazanego argumentu ścieżkigulp.src
. Myślę, że to niepotrzebne / zbędne; jeśli nie ma./
, (jak w pytaniu OP), ścieżki są rozwiązywane względem bieżącego katalogu - co skutkuje tym samym zachowaniem . Ale może dobrą praktyką jest wyraźne określenie pliku./
Daj mi znać, jeśli się mylę ...
źródło