build: Split sub-store.min.js for better performance on iOS devices

This commit is contained in:
Peng-YM
2022-09-09 23:11:13 +08:00
parent 1c29771de9
commit 6ee6a9b5e2
17 changed files with 673 additions and 513 deletions

View File

@@ -11,12 +11,11 @@ import tap from 'gulp-tap';
import pkg from './package.json';
export function peggy() {
return gulp.src('src/**/*.peg')
.pipe(tap(function (file) {
const filename = path.basename(file.path).split(".")[0] + ".js";
return gulp.src('src/**/*.peg').pipe(
tap(function (file) {
const filename = path.basename(file.path).split('.')[0] + '.js';
const raw = fs.readFileSync(file.path, 'utf8');
const contents =
`import * as peggy from 'peggy';
const contents = `import * as peggy from 'peggy';
const grammars = String.raw\`\n${raw}\n\`;
let parser;
export default function getParser() {
@@ -25,15 +24,17 @@ export default function getParser() {
}
return parser;
}\n`;
return newFile(filename, contents)
.pipe(gulp.dest(path.dirname(file.path)))
}));
return newFile(filename, contents).pipe(
gulp.dest(path.dirname(file.path)),
);
}),
);
}
export function lint() {
return gulp
.src('src/**/*.js')
.pipe(eslint({fix: true}))
.pipe(eslint({ fix: true }))
.pipe(eslint.fix())
.pipe(eslint.format())
.pipe(eslint.failAfterError());
@@ -42,9 +43,14 @@ export function lint() {
export function styles() {
return gulp
.src('src/**/*.js')
.pipe(prettier({
singleQuote: true, trailingComma: 'all', tabWidth: 4, bracketSpacing: true
}))
.pipe(
prettier({
singleQuote: true,
trailingComma: 'all',
tabWidth: 4,
bracketSpacing: true,
}),
)
.pipe(gulp.dest((file) => file.base));
}
@@ -59,13 +65,13 @@ function scripts(src, dest) {
{
paths: [
{
'rootPathPrefix': '@',
'rootPathSuffix': 'src',
}
]
}
]
]
rootPathPrefix: '@',
rootPathSuffix: 'src',
},
],
},
],
],
})
.plugin('tinyify')
.bundle()
@@ -74,20 +80,39 @@ function scripts(src, dest) {
}
function banner(dest) {
return () => gulp
.src(dest)
.pipe(header(fs.readFileSync('./banner', 'utf-8'), {pkg, updated: new Date().toLocaleString('zh-CN')}))
.pipe(gulp.dest((file) => file.base));
return () =>
gulp
.src(dest)
.pipe(
header(fs.readFileSync('./banner', 'utf-8'), {
pkg,
updated: new Date().toLocaleString('zh-CN'),
}),
)
.pipe(gulp.dest((file) => file.base));
}
const artifacts = [
{src: 'src/main.js', dest: 'sub-store.min.js'},
{src: 'src/products/resource-parser.loon.js', dest: 'dist/sub-store-parser.loon.min.js'},
{src: 'src/products/cron-sync-artifacts.js', dest: 'dist/cron-sync-artifacts.min.js'}
{ src: 'src/main.js', dest: 'sub-store.min.js' },
{
src: 'src/products/resource-parser.loon.js',
dest: 'dist/sub-store-parser.loon.min.js',
},
{
src: 'src/products/cron-sync-artifacts.js',
dest: 'dist/cron-sync-artifacts.min.js',
},
{ src: 'src/products/sub-store-0.js', dest: 'dist/sub-store-0.min.js' },
{ src: 'src/products/sub-store-1.js', dest: 'dist/sub-store-1.min.js' },
];
export const build = gulp.series(gulp.parallel(artifacts.map(artifact => scripts(artifact.src, artifact.dest))), gulp.parallel(artifacts.map(artifact => banner(artifact.dest))));
export const build = gulp.series(
gulp.parallel(
artifacts.map((artifact) => scripts(artifact.src, artifact.dest)),
),
gulp.parallel(artifacts.map((artifact) => banner(artifact.dest))),
);
const all = gulp.series(peggy, lint, styles, build)
const all = gulp.series(peggy, lint, styles, build);
export default all;