From 2d6402f87ac3de21aa21554df1ab205086c74ec2 Mon Sep 17 00:00:00 2001 From: Lancelot Lewis Date: Tue, 30 Dec 2025 18:53:59 +0800 Subject: [PATCH 1/3] feat(plugin-blocklet): support custom chunkSizeLimit --- plugins/vite-plugin-blocklet/libs/config.js | 75 +++++++++++++++++++-- 1 file changed, 70 insertions(+), 5 deletions(-) diff --git a/plugins/vite-plugin-blocklet/libs/config.js b/plugins/vite-plugin-blocklet/libs/config.js index f06bdcb3..410ca3f4 100644 --- a/plugins/vite-plugin-blocklet/libs/config.js +++ b/plugins/vite-plugin-blocklet/libs/config.js @@ -1,7 +1,11 @@ +import fs from 'fs'; +import path from 'path'; import { isEqual, joinURL, withTrailingSlash } from 'ufo'; import { toBlockletDid, isInBlocklet, blockletPort, blockletPrefix, getBlockletYAML } from './utils.js'; -export default function createConfigPlugin() { +export default function createConfigPlugin({ chunkSizeLimit = 2048 }) { + let resolvedConfig; + return { name: 'blocklet:config', configureServer(server) { @@ -35,6 +39,11 @@ export default function createConfigPlugin() { } if (command === 'build') { + let targetConfig = { + build: { + chunkSizeWarningLimit: chunkSizeLimit, + }, + }; if (!config.base) { try { let { name, did } = await getBlockletYAML(); @@ -43,18 +52,74 @@ export default function createConfigPlugin() { } if (did) { const base = `/.blocklet/proxy/${did}/`; - return { - base, - }; + targetConfig.base = base; + return targetConfig; } } catch (err) { console.error(err); - return {}; + return targetConfig; } } } return {}; }, + configResolved(config) { + resolvedConfig = config; + }, + closeBundle() { + const limitInKB = chunkSizeLimit; + const outDir = resolvedConfig.build.outDir || 'dist'; + const distPath = path.resolve(resolvedConfig.root, outDir); + + if (!fs.existsSync(distPath)) return; + + // 递归获取所有文件(包含子目录,如 assets/) + const getAllFiles = (dirPath, arrayOfFiles = []) => { + const files = fs.readdirSync(dirPath); + files.forEach((file) => { + const fullPath = path.join(dirPath, file); + if (fs.statSync(fullPath).isDirectory()) { + getAllFiles(fullPath, arrayOfFiles); + } else { + arrayOfFiles.push(fullPath); + } + }); + return arrayOfFiles; + }; + + const allFiles = getAllFiles(distPath); + const overSizedFiles = []; + + allFiles.forEach((filePath) => { + // 只检查 JS 和 CSS + if (filePath.endsWith('.js') || filePath.endsWith('.css')) { + const stats = fs.statSync(filePath); + const sizeKB = Number((stats.size / 1024).toFixed(2)); + + if (sizeKB > limitInKB) { + overSizedFiles.push({ + // 显示相对路径,方便查看是哪个 chunk + File: path.relative(distPath, filePath), + 'Size(KB)': sizeKB, + 'Limit(KB)': limitInKB, + }); + } + } + }); + + if (overSizedFiles.length > 0) { + overSizedFiles.sort((a, b) => b['Size(KB)'] - a['Size(KB)']); + console.log('\n\x1b[41m\x1b[37m ERROR \x1b[0m \x1b[31mChunk Size Limit Exceeded:\x1b[0m'); + console.table(overSizedFiles); // 以表格形式漂亮地打印 + + console.error(`\x1b[31mTotal ${overSizedFiles.length} files exceeded the ${limitInKB}KB limit.\x1b[0m\n`); + + // 强制退出,确保 CI/CD 流程中断 + process.exit(1); + } else { + console.log('\n\x1b[42m\x1b[30m DONE \x1b[0m All chunks are within the size limit.'); + } + }, }; } From eb6bd4decb5245f9bccdbcc3b0309e06a4c881e7 Mon Sep 17 00:00:00 2001 From: Lancelot Lewis Date: Tue, 30 Dec 2025 18:55:07 +0800 Subject: [PATCH 2/3] chore(release): v0.14.0 --- CHANGELOG.md | 4 ++++ package.json | 2 +- packages/create-app/package.json | 2 +- packages/create-app/templates/component-studio/package.json | 2 +- packages/create-app/templates/did-connect-dapp/package.json | 2 +- packages/create-app/templates/did-wallet-dapp/package.json | 2 +- packages/create-app/templates/react-aigne-dapp/package.json | 2 +- packages/create-app/templates/react-dapp-ts/package.json | 2 +- packages/create-app/templates/react-dapp/package.json | 2 +- packages/create-app/templates/react-gun-dapp/package.json | 2 +- packages/create-app/templates/react-static/package.json | 2 +- packages/create-app/templates/solidjs-dapp/package.json | 2 +- packages/create-app/templates/solidjs-static/package.json | 2 +- packages/create-app/templates/svelte-dapp/package.json | 2 +- packages/create-app/templates/svelte-static/package.json | 2 +- packages/create-app/templates/todo-list-example/package.json | 2 +- packages/create-app/templates/vue-dapp/package.json | 2 +- packages/create-app/templates/vue-static/package.json | 2 +- packages/create-app/templates/vue-ts-static/package.json | 2 +- packages/create-app/templates/vue2-dapp/package.json | 2 +- packages/create-app/templates/vue2-static/package.json | 2 +- plugins/vite-plugin-blocklet/package.json | 2 +- plugins/vite-plugin-wss-hmr/package.json | 2 +- version | 2 +- website/docs/blocklet.yml | 2 +- website/pages/blocklet.yml | 2 +- 26 files changed, 29 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f4953b1..eb920cbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.14.0 (2025-12-30) + +- feat(plugin-blocklet): support custom chunkSizeLimit + ## 0.13.2 (2025-12-29) - fix(vite-plugin-blocklet): truely hide powered by diff --git a/package.json b/package.json index ed043929..ad1cb76e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "create-blocklet", "private": true, - "version": "0.13.2", + "version": "0.14.0", "description": "", "keywords": [], "author": "", diff --git a/packages/create-app/package.json b/packages/create-app/package.json index bd40b0c7..1dbccfa4 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,6 +1,6 @@ { "name": "create-blocklet", - "version": "0.13.2", + "version": "0.14.0", "exports": "./index.js", "type": "module", "repository": "git@github.com:blocklet/create-blocklet.git", diff --git a/packages/create-app/templates/component-studio/package.json b/packages/create-app/templates/component-studio/package.json index a552a606..93a0b52e 100644 --- a/packages/create-app/templates/component-studio/package.json +++ b/packages/create-app/templates/component-studio/package.json @@ -97,7 +97,7 @@ "typescript": "^5.7.2", "vite": "^7.0.0", "vite-node": "^3.2.4", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vite-plugin-require": "^1.2.14", "vite-plugin-svgr": "^4.3.0", "vite-tsconfig-paths": "^5.1.4", diff --git a/packages/create-app/templates/did-connect-dapp/package.json b/packages/create-app/templates/did-connect-dapp/package.json index 3e325b01..a1c79011 100644 --- a/packages/create-app/templates/did-connect-dapp/package.json +++ b/packages/create-app/templates/did-connect-dapp/package.json @@ -77,7 +77,7 @@ "simple-git-hooks": "^2.11.1", "tsx": "^4.19.3", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vite-plugin-svgr": "^4.3.0", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/did-wallet-dapp/package.json b/packages/create-app/templates/did-wallet-dapp/package.json index 1f8d6725..bac94757 100644 --- a/packages/create-app/templates/did-wallet-dapp/package.json +++ b/packages/create-app/templates/did-wallet-dapp/package.json @@ -54,7 +54,7 @@ "simple-git-hooks": "^2.11.1", "vite": "^7.0.0", "vite-node": "^3.2.4", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vite-plugin-require": "^1.2.14", "vite-plugin-svgr": "^4.3.0", "zx": "^8.3.2" diff --git a/packages/create-app/templates/react-aigne-dapp/package.json b/packages/create-app/templates/react-aigne-dapp/package.json index a306c8a4..75ecc068 100644 --- a/packages/create-app/templates/react-aigne-dapp/package.json +++ b/packages/create-app/templates/react-aigne-dapp/package.json @@ -97,7 +97,7 @@ "tsx": "^4.19.3", "typescript": "^5.7.3", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vite-plugin-svgr": "^4.3.0", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/react-dapp-ts/package.json b/packages/create-app/templates/react-dapp-ts/package.json index e3ba564c..21f84c60 100644 --- a/packages/create-app/templates/react-dapp-ts/package.json +++ b/packages/create-app/templates/react-dapp-ts/package.json @@ -81,7 +81,7 @@ "tsx": "^4.19.3", "typescript": "^5.7.3", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vite-plugin-svgr": "^4.3.0", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/react-dapp/package.json b/packages/create-app/templates/react-dapp/package.json index fa683ac2..6f0d88dd 100644 --- a/packages/create-app/templates/react-dapp/package.json +++ b/packages/create-app/templates/react-dapp/package.json @@ -71,7 +71,7 @@ "simple-git-hooks": "^2.11.1", "tsx": "^4.19.3", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vite-plugin-svgr": "^4.3.0", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/react-gun-dapp/package.json b/packages/create-app/templates/react-gun-dapp/package.json index 7fd5c28a..4590b6dc 100644 --- a/packages/create-app/templates/react-gun-dapp/package.json +++ b/packages/create-app/templates/react-gun-dapp/package.json @@ -71,7 +71,7 @@ "simple-git-hooks": "^2.11.1", "tsx": "^4.19.3", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vite-plugin-svgr": "^4.3.0", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/react-static/package.json b/packages/create-app/templates/react-static/package.json index 335397d8..90fd2a47 100644 --- a/packages/create-app/templates/react-static/package.json +++ b/packages/create-app/templates/react-static/package.json @@ -52,7 +52,7 @@ "rimraf": "^5.0.10", "simple-git-hooks": "^2.11.1", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vite-plugin-svgr": "^4.3.0", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/solidjs-dapp/package.json b/packages/create-app/templates/solidjs-dapp/package.json index b14b77d8..774c69f4 100644 --- a/packages/create-app/templates/solidjs-dapp/package.json +++ b/packages/create-app/templates/solidjs-dapp/package.json @@ -37,7 +37,7 @@ "simple-git-hooks": "^2.11.1", "tsx": "^4.19.3", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vite-plugin-solid": "^2.11.7", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/solidjs-static/package.json b/packages/create-app/templates/solidjs-static/package.json index 3737478e..0777c9fc 100644 --- a/packages/create-app/templates/solidjs-static/package.json +++ b/packages/create-app/templates/solidjs-static/package.json @@ -32,7 +32,7 @@ "simple-git-hooks": "^2.11.1", "solid-js": "^1.9.4", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vite-plugin-solid": "^2.11.7", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/svelte-dapp/package.json b/packages/create-app/templates/svelte-dapp/package.json index 3246e8df..1dcb426f 100644 --- a/packages/create-app/templates/svelte-dapp/package.json +++ b/packages/create-app/templates/svelte-dapp/package.json @@ -45,7 +45,7 @@ "svelte": "^4.2.19", "tsx": "^4.19.3", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "zx": "^8.3.2" }, "lint-staged": { diff --git a/packages/create-app/templates/svelte-static/package.json b/packages/create-app/templates/svelte-static/package.json index 5f87f921..ccba2c16 100644 --- a/packages/create-app/templates/svelte-static/package.json +++ b/packages/create-app/templates/svelte-static/package.json @@ -26,7 +26,7 @@ "simple-git-hooks": "^2.11.1", "svelte": "^4.2.19", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "zx": "^8.3.2" }, "lint-staged": { diff --git a/packages/create-app/templates/todo-list-example/package.json b/packages/create-app/templates/todo-list-example/package.json index ea57b1dd..f9257721 100644 --- a/packages/create-app/templates/todo-list-example/package.json +++ b/packages/create-app/templates/todo-list-example/package.json @@ -96,7 +96,7 @@ "tsx": "^4.19.3", "typescript": "^5.7.3", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vite-plugin-svgr": "^4.3.0", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/vue-dapp/package.json b/packages/create-app/templates/vue-dapp/package.json index 75901614..bc3f9382 100644 --- a/packages/create-app/templates/vue-dapp/package.json +++ b/packages/create-app/templates/vue-dapp/package.json @@ -49,7 +49,7 @@ "simple-git-hooks": "^2.11.1", "tsx": "^4.19.3", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vue": "^3.5.13", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/vue-static/package.json b/packages/create-app/templates/vue-static/package.json index 7405b0ce..4e88aa5c 100644 --- a/packages/create-app/templates/vue-static/package.json +++ b/packages/create-app/templates/vue-static/package.json @@ -30,7 +30,7 @@ "rimraf": "^5.0.10", "simple-git-hooks": "^2.11.1", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vue": "^3.5.13", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/vue-ts-static/package.json b/packages/create-app/templates/vue-ts-static/package.json index f7f52d39..80b719e7 100644 --- a/packages/create-app/templates/vue-ts-static/package.json +++ b/packages/create-app/templates/vue-ts-static/package.json @@ -39,7 +39,7 @@ "taze": "^0.16.9", "typescript": "^5.7.3", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vue-tsc": "^2.2.2", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/vue2-dapp/package.json b/packages/create-app/templates/vue2-dapp/package.json index 74f785c2..5dca59fd 100644 --- a/packages/create-app/templates/vue2-dapp/package.json +++ b/packages/create-app/templates/vue2-dapp/package.json @@ -48,7 +48,7 @@ "simple-git-hooks": "^2.11.1", "tsx": "^4.19.3", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vue": "^2.7.16", "zx": "^8.3.2" }, diff --git a/packages/create-app/templates/vue2-static/package.json b/packages/create-app/templates/vue2-static/package.json index 8afe852f..3ed725f4 100644 --- a/packages/create-app/templates/vue2-static/package.json +++ b/packages/create-app/templates/vue2-static/package.json @@ -30,7 +30,7 @@ "rimraf": "^5.0.10", "simple-git-hooks": "^2.11.1", "vite": "^7.0.0", - "vite-plugin-blocklet": "^0.13.2", + "vite-plugin-blocklet": "^0.14.0", "vue": "^2.7.16", "zx": "^8.3.2" }, diff --git a/plugins/vite-plugin-blocklet/package.json b/plugins/vite-plugin-blocklet/package.json index 5e2a27f4..88f82a28 100644 --- a/plugins/vite-plugin-blocklet/package.json +++ b/plugins/vite-plugin-blocklet/package.json @@ -1,7 +1,7 @@ { "name": "vite-plugin-blocklet", "type": "module", - "version": "0.13.2", + "version": "0.14.0", "description": "", "main": "index.js", "files": [ diff --git a/plugins/vite-plugin-wss-hmr/package.json b/plugins/vite-plugin-wss-hmr/package.json index ab285b23..fa727a58 100644 --- a/plugins/vite-plugin-wss-hmr/package.json +++ b/plugins/vite-plugin-wss-hmr/package.json @@ -1,7 +1,7 @@ { "name": "vite-plugin-wss-hmr", "type": "module", - "version": "0.13.2", + "version": "0.14.0", "description": "", "main": "index.js", "exports": { diff --git a/version b/version index 3f8dcd03..0548fb4e 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.13.2 \ No newline at end of file +0.14.0 \ No newline at end of file diff --git a/website/docs/blocklet.yml b/website/docs/blocklet.yml index 85d5ce65..8db0a85c 100644 --- a/website/docs/blocklet.yml +++ b/website/docs/blocklet.yml @@ -13,7 +13,7 @@ repository: type: git url: git+https://github.com/blocklet/create-blocklet.git specVersion: 1.2.8 -version: 0.13.2 +version: 0.14.0 logo: logo.png files: - logo.png diff --git a/website/pages/blocklet.yml b/website/pages/blocklet.yml index a11d7dad..248fe4ca 100644 --- a/website/pages/blocklet.yml +++ b/website/pages/blocklet.yml @@ -13,7 +13,7 @@ repository: type: git url: git+https://github.com/blocklet/create-blocklet.git specVersion: 1.2.8 -version: 0.13.2 +version: 0.14.0 logo: logo.png files: - logo.png From 4294be0c9dfc214078bfa9dd2a9b8d8a3aa5405e Mon Sep 17 00:00:00 2001 From: Lancelot Lewis Date: Tue, 30 Dec 2025 20:30:39 +0800 Subject: [PATCH 3/3] chore(plugin-blocklet): set max-chunk-size 2000 --- plugins/vite-plugin-blocklet/index.js | 1 + plugins/vite-plugin-blocklet/libs/config.js | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/plugins/vite-plugin-blocklet/index.js b/plugins/vite-plugin-blocklet/index.js index fa9adf2f..716b2f67 100644 --- a/plugins/vite-plugin-blocklet/index.js +++ b/plugins/vite-plugin-blocklet/index.js @@ -41,6 +41,7 @@ import setupClient from './libs/client.js'; * @property {number} [embedBuildConcurrency=0] - The plugins to be used in the embeds. * * @property {'middleware'|'client'|'server'|'wsUpgrade'} [hmrMode='middleware'] - 当未传入任何 option 参数时,会自动变为 middleware 模式 + * @property {number} [chunkSizeLimit=2000] - The chunk size limit in KB. */ /** diff --git a/plugins/vite-plugin-blocklet/libs/config.js b/plugins/vite-plugin-blocklet/libs/config.js index 410ca3f4..5e22e911 100644 --- a/plugins/vite-plugin-blocklet/libs/config.js +++ b/plugins/vite-plugin-blocklet/libs/config.js @@ -3,7 +3,15 @@ import path from 'path'; import { isEqual, joinURL, withTrailingSlash } from 'ufo'; import { toBlockletDid, isInBlocklet, blockletPort, blockletPrefix, getBlockletYAML } from './utils.js'; -export default function createConfigPlugin({ chunkSizeLimit = 2048 }) { +const SIZE = 1000; +const MAX_CHUNK_SIZE = 2000; + +/** + * @param {object} options + * @param {number} [options.chunkSizeLimit=2048] - The chunk size limit in KB. + * @return {import('vite').Plugin} The Vite config plugin. + */ +export default function createConfigPlugin({ chunkSizeLimit = MAX_CHUNK_SIZE }) { let resolvedConfig; return { @@ -95,7 +103,7 @@ export default function createConfigPlugin({ chunkSizeLimit = 2048 }) { // 只检查 JS 和 CSS if (filePath.endsWith('.js') || filePath.endsWith('.css')) { const stats = fs.statSync(filePath); - const sizeKB = Number((stats.size / 1024).toFixed(2)); + const sizeKB = Number((stats.size / SIZE).toFixed(2)); if (sizeKB > limitInKB) { overSizedFiles.push({