J'ai récemment découvert que je pouvais utiliser npm en tant que coureur de tâches au lieu d'abattre ou de grogner, tout est fantastique jusqu'à présent (peluches, stylet, jade, uglify, regarder, etc.) mais la partie concaténation ne semble pas pouvoir y parvenir. Avec gulp c'était quelque chose comme:
gulp.task('scripts', function() {
return gulp.src('www/js/**/*.js')
.pipe(concat('all.js'))
.pipe(gulp.dest('www/dist'))
.pipe(rename('all.min.js'))
.pipe(uglify())
.pipe(gulp.dest('www/dist'));
});
Y a-t-il un moyen de faire ça avec npm?
Pour être plus clair, mon objectif est de faire quelque chose comme ceci:
// package.json
{
"name": "f_todo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"author": "",
"license": "MIT",
"devDependencies": {
"concat": "^1.0.0",
"rerun-script": "^0.6.0",
"stylus": "^0.53.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"stylus": "stylus ss --compress --out lib/stylesheets",
"concat": "concat dependency code would be here",
"dev": "rerun-script"
},
"watches": {
"stylus": "ss/**"
}
}
essaye ça
var concat = require('concat')
concat(['a.css', 'b.css', 'c.css'], 'all.css')
https://www.npmjs.com/package/concat
et n'oubliez pas de npm install concat
Par commande Utiliser concat-glob-cli
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"concat": "concat-glob-cli -f path/to/**/*.js -o bundle.js",
...
},
Oui, concat est parti. Je regardais cela aussi alors que je passais de gulp à pure node et trouvais le paquet manquant.
Au lieu de cela, j'utilise maintenant buildify . Cela pourrait être un peu excessif, mais cela fonctionne.
var buildify = require('buildify');
var files = [
"./node_modules/moduleA/file1.js",
"./node_modules/moduleB/file2.js",
];
buildify()
.concat(files)
.save("./dist/www/scripts/init.min.js");
J'utilise concat-files
Et j'ai remarqué qu'il y a aussi concatenate-files
Les deux sont assez simples.
Notez également que l'écriture de votre propre est assez simple aussi:
var output = files.map((f)=>{
return fs.readFileSync(f).toString();
}).join(';')
fs.writeFileSync('dist/bundle.js', output)
Le package concat
n'est plus disponible. Je suggère d'utiliser concat-with-sourcemaps
https://www.npmjs.com/package/concat-with-sourcemaps
var concat = new Concat(true, 'all.js', '\n');
concat.add(null, "// (c) John Doe");
concat.add('file1.js', file1Content);
concat.add('file2.js', file2Content, file2SourceMap);
var concatenatedContent = concat.content;
var sourceMapForContent = concat.sourceMap;