2016-06-25 34 views
22

Próbuję out npm jako narzędzie do kompilacji.Jak używać skryptów package.json do kopiowania plików o określonym rozszerzeniu pliku

Jedną z przeszkód, z jakimi się zetknąłem, jest to, że muszę skopiować pliki javascript z jednego folderu do drugiego. Folder źródłowy zawiera pliki maszynopisu, pliki javascript i pliki map, ale w folderze docelowym interesują mnie tylko pliki javascript.

Nie chcę tworzyć instrukcji-kopii dla każdego pliku, ale chcę skopiować wszystkie pliki .js. Ponadto mój folder źródłowy zawiera podfoldery zawierające również pliki javascript. Należy je również skopiować i zachować strukturę podfolderów.

Próbowałem użyć filtra NCP, ale nie mogę uruchomić filtru. Przetestowałem regex używany w filtrze i wygląda na to, że działa dobrze. Test został przeprowadzony pod numerem Regex Tester z wyrażeniem regularnym .*\.js$ i łańcuchami testowymi, takimi jak main.ts, main.jsmain.js.map itd. I dopasowano tylko ciągi .js.

Mój pakiet zawiera następujące JSON (w skrócie):

{ 
    "scripts": { 
     "copy": "ncp scripts wwwroot/scripts --filter=\".*(\\\\.js$)\"" 
    }, 
    "devDependencies": { 
     "ncp": "2.0.0.0" 
    } 
} 

Ponieważ mój regex jest w ciągu w ciągu znaków mam dwukrotnie uniknął go. Próbowałem także innych odmian, na przykład:

--filter=/.*\.js$/g  - compilation error 
--filter=/.*\\.js$/g  - no files copied 
--filter=\".*\\.js$\"  - no files copied 
--filter=\"/.*\\.js$/g\" - no files copied 
(no filter)    - all files copied 

Nie jestem w żaden sposób żonaty z KPK. Jeśli coś jeszcze działa lepiej, wykorzystam to.

Tak: Jak to zrobić, w sekcji skrypty package.json kopiować tylko pliki ze specjalnym rozszerzeniem do innego folderu? Jestem prawie pewien, że przeoczyłem coś oślepiająco oczywiste ...

Odpowiedz

38

cpx może być dobrym substytutu.

Ma CLI, pozwala na korzystanie z globs zamiast regex, można zachować drzewo katalogów i jest stosunkowo up-to-date, jak to piszę ....

+8

Idealny. Teraz mój skrypt to "copy": "cpx \" scripts/**/*. Js \ "wwwroot/scripts", z devDependency "cpx": "1.3.1". Dokładnie tego szukałem. –

3

Można użyć gulp.js dla tego. Napisz zadanie gulp, aby wyizolować tylko pliki js (/path/to/files/*.js) i przenieść je do wybranego miejsca docelowego. Wymagają tylko kilku linii kodu. Włącz to w sekcji skryptu package.json, jeśli to konieczne.

Link do gulp.js: https://gulpjs.com/

var gulp = require('gulp'); 
gulp.task('jscopy', function(){ 
    return gulp.src('client/templates/*.js') 
    .pipe(gulp.dest('build/js')) 
});