From 15704ea1c97ad0178d5f57c8bb961a0b8caf24ca Mon Sep 17 00:00:00 2001 From: xream Date: Fri, 2 Feb 2024 19:53:14 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E5=A2=9E=E5=8A=A0=20esbuild=20bundle(?= =?UTF-8?q?=E6=9A=82=E4=B8=8D=E5=90=AF=E7=94=A8=20=E4=BB=85=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E4=BD=BF=E7=94=A8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/bundle-esbuild.js | 63 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 backend/bundle-esbuild.js diff --git a/backend/bundle-esbuild.js b/backend/bundle-esbuild.js new file mode 100644 index 0000000..26ca95b --- /dev/null +++ b/backend/bundle-esbuild.js @@ -0,0 +1,63 @@ +#!/usr/bin/env node +const fs = require('fs'); +const path = require('path'); +const { build } = require('esbuild'); + +!(async () => { + 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/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' }, + ]; + + for await (const artifact of artifacts) { + await build({ + entryPoints: [artifact.src], + bundle: true, + minify: true, + sourcemap: false, + platform: 'browser', + format: 'iife', + outfile: artifact.dest, + }); + } + + let content = fs.readFileSync(path.join(__dirname, 'sub-store.min.js'), { + encoding: 'utf8', + }); + content = content.replace( + /eval\(('|")(require\(('|").*?('|")\))('|")\)/g, + '$2', + ); + fs.writeFileSync( + path.join(__dirname, 'dist/sub-store.no-bundle.js'), + content, + { + encoding: 'utf8', + }, + ); + + await build({ + entryPoints: ['dist/sub-store.no-bundle.js'], + bundle: true, + minify: true, + sourcemap: false, + platform: 'node', + format: 'cjs', + outfile: 'dist/sub-store.bundle.js', + }); +})() + .catch((e) => { + console.log(e); + }) + .finally(() => { + console.log('done'); + });