J'essaie npm en tant qu'outil de construction.
Un problème que j'ai rencontré est que je dois copier des fichiers javascript d'un dossier à un autre. Le dossier source contient des fichiers TypeScript, des fichiers javascript et des fichiers mappés, mais dans le dossier cible, seuls les fichiers javascript m'intéressent.
Je ne veux pas faire une copie de déclaration pour chaque fichier, mais voudrais copier tous les fichiers .js. De plus, mon dossier source contient des sous-dossiers contenant également des fichiers javascript. Ceux-ci doivent également être copiés et conserver la structure des sous-dossiers.
Ce que j'ai essayé utilise NCP avec un filtre, mais je ne parviens pas à faire fonctionner le filtre. J'ai testé la regex utilisée dans le filtre et elle semble bien fonctionner. Le test a été effectué à Regex Tester avec l'expression régulière .*\.js$
et des chaînes de test comme main.ts
, main.js
main.js.map
etc, et seules les chaînes .js ont été mises en correspondance.
Mon paquet json contient les éléments suivants (abrégés):
{
"scripts": {
"copy": "ncp scripts wwwroot/scripts --filter=\".*(\\\\.js$)\""
},
"devDependencies": {
"ncp": "2.0.0.0"
}
}
Depuis que mon regex est dans une chaîne dans une chaîne, je l'ai échappé deux fois. J'ai aussi essayé d'autres variantes, par exemple:
--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
Je ne suis en aucun cas marié à NCP. Si quelque chose d'autre fonctionne mieux, je l'utiliserai.
Alors: comment, dans la section scripts de package.json, ne copier que les fichiers avec une extension spécifique dans un autre dossier? Je suis presque sûr d'avoir oublié quelque chose d'évident aveuglant ...
cpx pourrait être une bonne substitution.
Il a une CLI, vous permet d'utiliser globs au lieu de regex, peut préserver l'arborescence des répertoires, et est relativement à jour au moment où j'écris ceci ....
Il existe également un module npm appelé copyfiles
https://github.com/calvinmetcalf/copyfiles
Par exemple. copier tous les fichiers *.css
du dossier ./src
dans le dossier ./styles
:
copyfiles --flat src/*.css styles
Vous pouvez utiliser gulp.js pour cela. Ecrivez une tâche gulp pour n’isoler que les fichiers js (/path/to/files/*.js) et déplacez-les vers la destination de votre choix. Il ne faudra que quelques lignes de code. Incluez cela dans la section de script de package.json si nécessaire.
Le lien vers gulp.js: https://gulpjs.com/
var gulp = require('gulp');
gulp.task('jscopy', function(){
return gulp.src('client/templates/*.js')
.pipe(gulp.dest('build/js'))
});