用npm作为构build工具连接文件

我最近发现我可以使用npm作为任务运行,而不是吞咽或咕噜声,到目前为止,一切都非常棒(皮棉,手写笔,玉器,uglify,手表等),但是连接部分,我似乎无法实现。 一口吞下了这样的东西:

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')); }); 

有没有办法,我可以用npm做到这一点?

为了更清楚一点,我的目标是做这样的事情:

// 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/**" } } 

尝试这个

 var concat = require('concat') concat(['a.css', 'b.css', 'c.css'], 'all.css') 

https://www.npmjs.com/package/concat

不要忘记npm install concat

通过命令使用concat-glob-cli

 "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "concat": "concat-glob-cli -f path/to/**/*.js -o bundle.js", ... }, 

https://www.npmjs.com/package/concat-glob-cli

是的,concat不见了 我正在看着这个,同时从一口气转移到纯节点,发现包丢失。

作为替代,我现在使用buildify 。 可能是一个微小的矫枉过正,但它的作品。

 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"); 

我正在使用concat文件

我注意到还有连接文件

两者都很简单。

另外注意写你自己也很简单:

 var output = files.map((f)=>{ return fs.readFileSync(f).toString(); }).join(';') fs.writeFileSync('dist/bundle.js', output) 

concat包不再可用。 我会build议使用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;