TA的每日心情 | 开心 2022-11-13 00:00 |
---|
签到天数: 33 天 [LV.5]常住居民I
初级工程师
- 积分
- 45
|
发表于
2022-9-27 13:48:07
|
显示全部楼层
我后面还是用回正则了,集成gulp+rollup,在gulp流提取入口文件header,然后直接附加到打包完毕的文件就行。
方案比较简单,不会和现有的rollup配置冲突,而且文件只需读写一遍。
大概这样,可以参考下
- import commonConf from './rollup.config.js';
- gulp.task('rollup', function () {
- const REGEXP_STR_HEAD_END = `\\/\\/[\\t ]*==\\/UserScript==(\\r\\n|\\r|\\n)`
- const REGEXP_USER_HEADER = new RegExp(
- `\\/\\/[\\t ]*==UserScript==(\\r\\n|\\r|\\n)((?!${REGEXP_STR_HEAD_END}).)*` +
- REGEXP_STR_HEAD_END, "gms");
- let userHeader = "";
- return gulp.src(commonConf.input)
- .on("data", function (file) {
- // 提取入口文件的header
- userHeader = file.contents.toString().match(REGEXP_USER_HEADER)?.at(0) || "";
- return file.contents;
- })
- .pipe(gulpStreamRollup(commonConf))
- .on("data", function (file) {
- // 还原header
- const finalOutput = userHeader + "\n" + file.contents.toString();
- return file.contents = Buffer.from(finalOutput);
- })
- .pipe(rename(fileInfo.outputFullName))
- .pipe(gulp.dest(fileInfo.buildDir));
- });
复制代码
我的需求比较简单,就是打包完我的header不变就行。如果是类似这种需要自动生成所有header的,其实感觉要不要做gulp插件更好,因为考虑的东西可以更少,rollup就单纯作为一个打包。 |
|