mirror of
https://git.mirrors.martin98.com/https://github.com/sub-store-org/Sub-Store.git
synced 2026-05-02 03:28:05 +08:00
Sub-Store 2.0 major release
- Used Peggy.js to replace the original parsers for Loon, QX and Surge. - Added support for vmess + ws, vmess + http, snell, socks 5 parsing. - Added various test cases for parsing.
This commit is contained in:
@@ -4,65 +4,67 @@ import gulp from 'gulp';
|
||||
import prettier from 'gulp-prettier';
|
||||
import header from 'gulp-header';
|
||||
import eslint from 'gulp-eslint-new';
|
||||
import newFile from 'gulp-file';
|
||||
import path from 'path';
|
||||
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";
|
||||
const raw = fs.readFileSync(file.path, 'utf8');
|
||||
const contents = `const grammars = String.raw\`\n${raw}\n\`;\nexport default grammars;`;
|
||||
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())
|
||||
.pipe(eslint.format())
|
||||
.pipe(eslint.failAfterError());
|
||||
return gulp
|
||||
.src('src/**/*.js')
|
||||
.pipe(eslint({fix: true}))
|
||||
.pipe(eslint.fix())
|
||||
.pipe(eslint.format())
|
||||
.pipe(eslint.failAfterError());
|
||||
}
|
||||
|
||||
export function styles() {
|
||||
return gulp
|
||||
.src('src/**/*.js')
|
||||
.pipe(
|
||||
prettier({
|
||||
singleQuote: true,
|
||||
trailingComma: 'all',
|
||||
tabWidth: 4,
|
||||
bracketSpacing: true
|
||||
})
|
||||
)
|
||||
.pipe(gulp.dest((file) => file.base));
|
||||
return gulp
|
||||
.src('src/**/*.js')
|
||||
.pipe(prettier({
|
||||
singleQuote: true, trailingComma: 'all', tabWidth: 4, bracketSpacing: true
|
||||
}))
|
||||
.pipe(gulp.dest((file) => file.base));
|
||||
}
|
||||
|
||||
function scripts(src, dest) {
|
||||
return () => {
|
||||
return browserify(src)
|
||||
.transform('babelify', {
|
||||
presets: [ [ '@babel/preset-env' ] ]
|
||||
})
|
||||
.plugin('tinyify')
|
||||
.bundle()
|
||||
.pipe(fs.createWriteStream(dest));
|
||||
};
|
||||
return () => {
|
||||
return browserify(src)
|
||||
.transform('babelify', {
|
||||
presets: [['@babel/preset-env']]
|
||||
})
|
||||
.plugin('tinyify')
|
||||
.bundle()
|
||||
.pipe(fs.createWriteStream(dest));
|
||||
};
|
||||
}
|
||||
|
||||
function banner(dest) {
|
||||
return () => gulp
|
||||
.src(dest)
|
||||
.pipe(header(fs.readFileSync('./banner', 'utf-8'), { pkg, updated: new Date().toLocaleString() }))
|
||||
.pipe(gulp.dest((file) => file.base));
|
||||
return () => gulp
|
||||
.src(dest)
|
||||
.pipe(header(fs.readFileSync('./banner', 'utf-8'), {pkg, updated: new Date().toLocaleString()}))
|
||||
.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/main.js', dest: 'sub-store.min.js'},
|
||||
{src: 'src/products/resource-parser.loon.js', dest: 'dist/sub-store-parser.loon.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(
|
||||
lint,
|
||||
styles,
|
||||
build
|
||||
)
|
||||
const all = gulp.series(peggy, lint, styles, build)
|
||||
|
||||
export default all;
|
||||
|
||||
Reference in New Issue
Block a user