我最近发现我可以使用npm作为任务运行器而不是gulp或grunt,到目前为止一切都很棒(lint,stylus,jade,uglify,watch ......等)但是连接部分,我似乎无法实现那。 gulp就像是:
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/**"
}
}
答案 0 :(得分:14)
试试这个
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",
...
},
答案 1 :(得分:2)
作为替代方案,我现在正在使用buildify。 可能会有点矫枉过正,但它确实有效。
ViewPager.setOffscreenPageLimit(int)
答案 2 :(得分:2)
我正在使用concat-files
我注意到还有concatenate-files
两者都很简单。
另请注意,编写自己的内容也非常简单:
var output = files.map((f)=>{
return fs.readFileSync(f).toString();
}).join(';')
fs.writeFileSync('dist/bundle.js', output)
答案 3 :(得分:1)
concat
包已不再可用。我建议使用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;
答案 4 :(得分:0)
您还可以使用Shell的功能来执行所需的操作:
"scripts": {
"concat": "cat www/js/**/*.js > all.js"},