使用 npm 作为构建工具连接文件
Concatenate files with npm as build tool
我最近发现我可以使用 npm 作为任务运行器而不是 gulp 或 grunt,到目前为止一切都很棒(棉绒、手写笔、玉石、丑陋、手表......等),但串联部分,我似乎无法做到这一点。大口大口地是这样的:
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
您还可以使用 shell 的强大功能来执行您想要的操作:
"scripts": {
"concat": "cat www/js/**/*.js > all.js"},
是的,concat 消失了。在从 gulp 移动到纯节点时,我也在查看这个,发现包丢失了。
作为替代方案,我现在正在使用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-files
我注意到还有连接文件
两者都很简单。
另请注意,编写自己的代码也非常简单:
var output = files.map((f)=>{
return fs.readFileSync(f).toString();
}).join(';')
fs.writeFileSync('dist/bundle.js', output)
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;
相关文章:
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- 如何使用密码检测网络中的状态连接
- 如何处理node.js节点mongodb中的连接和查询队列
- Rails-JQueryUIAutcomplete和AJAX不工作,可以't连接到数据库
- 删除CKEditor工具栏按钮,但不删除功能
- Twilio-显示所有连接参与者的远程参与者视频
- d3.js Chord图的动态工具提示
- 操作放置在画布上的元素之间的连接
- TypeError:_this.store.getState在使用来自Redux的连接时不是函数
- JS和CSS文件连接工具
- 使用 npm 作为构建工具连接文件
- 引导工具提示并没有连接到被点击的按钮上
- 是否可以使用javascript从web工具连接Linux服务器(10.162.120.200)?如果有,请举例说明
- Javascript优化:什么工具可以压缩顺序字符串连接?
- 如何连接jquery工具提示和asp.net文本框
- 我如何使用D3/javascript访问和更改工具提示的连接文本中的变量
- 我不知道如何将我创建的工具提示连接到图像映射