From 1db7c46f45dae0c815b3acce0d437df7616a6bc3 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 13 Mar 2025 21:20:10 +0800 Subject: [PATCH 1/3] perf: use swc --- package.json | 6 ++++-- scripts/build.js | 3 ++- src/index.js | 4 ++-- yarn.lock | 7 ++++++- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 4b922092..e784432b 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,6 @@ "source-map-support": "^0.5.9", "stripe": "^8.167.0", "swig": "^1.4.2", - "terser": "^5.33.0", "the-answer": "^1.0.0", "tiny-json-http": "^7.5.1", "ts-loader": "^9.4.4", @@ -109,5 +108,8 @@ "webpack": "5.94.0", "when": "^3.7.8" }, - "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e", + "dependencies": { + "@swc/wasm": "^1.11.9" + } } diff --git a/scripts/build.js b/scripts/build.js index 14c02a6a..74f6b532 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -19,7 +19,7 @@ async function main() { __dirname + "/../src/cli", { filename: "cli.js", - externals: ["./index.js"], + externals: ["./index.js", "@swc/wasm"], license: 'LICENSES.txt', minify, cache, @@ -32,6 +32,7 @@ async function main() { __dirname + "/../src/index", { filename: "index.js", + externals: ["@swc/wasm"], minify, cache, v8cache diff --git a/src/index.js b/src/index.js index 8ffa3022..d6cdffbf 100644 --- a/src/index.js +++ b/src/index.js @@ -4,7 +4,7 @@ const crypto = require("crypto"); const { join, dirname, extname, resolve: pathResolve } = require("path"); const webpack = require("webpack"); const MemoryFS = require("memory-fs"); -const terser = require("terser"); +const { minify: swcMinify } = require("@swc/wasm"); const tsconfigPaths = require("tsconfig-paths"); const { loadTsconfig } = require("tsconfig-paths/lib/tsconfig-loader"); const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin"); @@ -475,7 +475,7 @@ function ncc ( if (minify) { let result; try { - result = await terser.minify(code, { + result = await swcMinify(code, { module: esm, compress: false, mangle: { diff --git a/yarn.lock b/yarn.lock index 2e7071d3..ecb9e60a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1693,6 +1693,11 @@ dependencies: tslib "^2.4.0" +"@swc/wasm@^1.11.9": + version "1.11.9" + resolved "https://registry.yarnpkg.com/@swc/wasm/-/wasm-1.11.9.tgz#fe260611b92ed795e614d86c7561ff5a0a7a94b2" + integrity sha512-4yoj1q4LdPqFYAJPJ3gZkDv7bL6fcOSB42jrVtbDlvgYCDQhr0Wf48LWUwQcuhsfUMYaNj1phsqB9LV2cfEQTw== + "@szmarczak/http-timer@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" @@ -14263,7 +14268,7 @@ terser-webpack-plugin@^5.3.10: serialize-javascript "^6.0.1" terser "^5.26.0" -terser@^5.26.0, terser@^5.33.0: +terser@^5.26.0: version "5.33.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.33.0.tgz#8f9149538c7468ffcb1246cfec603c16720d2db1" integrity sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g== From 02e95a4828771486ce0dd182a7d2bb7574f6c52a Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 13 Mar 2025 21:24:01 +0800 Subject: [PATCH 2/3] chore: update test case --- test/unit/minify-err/output.js | 2 +- test/unit/minify-sourcemap-register/output.js.map | 2 +- test/unit/minify-v8cache-sourcemap-register/output.js.map | 2 +- test/unit/minify/output.js.map | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/unit/minify-err/output.js b/test/unit/minify-err/output.js index ee7b3848..26123138 100644 --- a/test/unit/minify-err/output.js +++ b/test/unit/minify-err/output.js @@ -1 +1 @@ -(()=>{var __webpack_modules__={896:_=>{"use strict";_.exports=require("fs")}};var __webpack_module_cache__={};function __nccwpck_require__(_){var e=__webpack_module_cache__[_];if(e!==undefined){return e.exports}var r=__webpack_module_cache__[_]={exports:{}};var a=true;try{__webpack_modules__[_](r,r.exports,__nccwpck_require__);a=false}finally{if(a)delete __webpack_module_cache__[_]}return r.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var __webpack_exports__={};var input_require;if(global.GENTLY)input_require=GENTLY.hijack(eval("require"));console.log(__nccwpck_require__(896));module.exports=__webpack_exports__})(); \ No newline at end of file +(()=>{var __webpack_modules__={896:e=>{"use strict";e.exports=require("fs")}};var __webpack_module_cache__={};function __nccwpck_require__(e){var r=__webpack_module_cache__[e];if(r!==undefined){return r.exports}var _=__webpack_module_cache__[e]={exports:{}};var a=true;try{__webpack_modules__[e](_,_.exports,__nccwpck_require__);a=false}finally{if(a)delete __webpack_module_cache__[e]}return _.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var __webpack_exports__={};var input_require;if(global.GENTLY)input_require=GENTLY.hijack(eval("require"));console.log(__nccwpck_require__(896));module.exports=__webpack_exports__})(); diff --git a/test/unit/minify-sourcemap-register/output.js.map b/test/unit/minify-sourcemap-register/output.js.map index 6cf246d9..1aabd7ad 100644 --- a/test/unit/minify-sourcemap-register/output.js.map +++ b/test/unit/minify-sourcemap-register/output.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","names":["__webpack_require__","ab","__dirname","foobar","console","log","exports"],"sources":["../webpack/runtime/compat","../test/unit/minify-sourcemap-register/input.js"],"sourcesContent":["\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","const foobar = 'qux'\nconsole.log?.(\"hello\");\nexports.foobar = foobar\n"],"mappings":"MACA,UAAAA,sBAAA,YAAAA,oBAAAC,GAAAC,UAAA,I,uBCDA,MAAAC,EAAA,MACAC,QAAAC,MAAA,SACAC,EAAAH,Q","ignoreList":[]} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../webpack/runtime/compat",".././test/unit/minify-sourcemap-register/input.js"],"sourceRoot":"","sourcesContent":["\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","const foobar = 'qux'\nconsole.log?.(\"hello\");\nexports.foobar = foobar\n"],"names":[],"mappings":"MACA,GAAA,OAAA,sBAAA,YAAA,oBAAA,EAAA,CAAA,UAAA,2BCDA,MAAA,EAAA,MACA,QAAA,GAAA,GAAA,SACA,EAAA,MAAA,CAAA"} diff --git a/test/unit/minify-v8cache-sourcemap-register/output.js.map b/test/unit/minify-v8cache-sourcemap-register/output.js.map index b9ab9a0c..5a7ab6c7 100644 --- a/test/unit/minify-v8cache-sourcemap-register/output.js.map +++ b/test/unit/minify-v8cache-sourcemap-register/output.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","names":["__webpack_require__","ab","__dirname","foobar","console","log","exports"],"sources":["../webpack/runtime/compat","../test/unit/minify-v8cache-sourcemap-register/input.js"],"sourcesContent":["\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","const foobar = 'qux'\nconsole.log(\"hello\");\nexports.foobar = foobar\n"],"mappings":"MACA,UAAAA,sBAAA,YAAAA,oBAAAC,GAAAC,UAAA,I,uBCDA,MAAAC,EAAA,MACAC,QAAAC,IAAA,SACAC,EAAAH,Q","ignoreList":[]} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../webpack/runtime/compat",".././test/unit/minify-v8cache-sourcemap-register/input.js"],"sourceRoot":"","sourcesContent":["\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","const foobar = 'qux'\nconsole.log(\"hello\");\nexports.foobar = foobar\n"],"names":[],"mappings":"MACA,GAAA,OAAA,sBAAA,YAAA,oBAAA,EAAA,CAAA,UAAA,2BCDA,MAAA,EAAA,MACA,QAAA,GAAA,CAAA,SACA,EAAA,MAAA,CAAA"} diff --git a/test/unit/minify/output.js.map b/test/unit/minify/output.js.map index cd15259d..695cdb88 100644 --- a/test/unit/minify/output.js.map +++ b/test/unit/minify/output.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","names":["__webpack_require__","ab","__dirname","foobar","console","log","exports"],"sources":["../webpack/runtime/compat","../test/unit/minify/input.js"],"sourcesContent":["\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","const foobar = 'qux'\nconsole.log?.(\"hello\");\nexports.foobar = foobar\n"],"mappings":"MACA,UAAAA,sBAAA,YAAAA,oBAAAC,GAAAC,UAAA,I,uBCDA,MAAAC,EAAA,MACAC,QAAAC,MAAA,SACAC,EAAAH,Q","ignoreList":[]} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../webpack/runtime/compat",".././test/unit/minify/input.js"],"sourceRoot":"","sourcesContent":["\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","const foobar = 'qux'\nconsole.log?.(\"hello\");\nexports.foobar = foobar\n"],"names":[],"mappings":"MACA,GAAA,OAAA,sBAAA,YAAA,oBAAA,EAAA,CAAA,UAAA,2BCDA,MAAA,EAAA,MACA,QAAA,GAAA,GAAA,SACA,EAAA,MAAA,CAAA"} From 3ad9bc417d0882dedde0bbc567a8cfb48d530695 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Sat, 12 Apr 2025 19:09:41 +0800 Subject: [PATCH 3/3] chore: update swc to the latest version --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e784432b..e76628e7 100644 --- a/package.json +++ b/package.json @@ -110,6 +110,6 @@ }, "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e", "dependencies": { - "@swc/wasm": "^1.11.9" + "@swc/wasm": "^1.11.20" } } diff --git a/yarn.lock b/yarn.lock index ecb9e60a..dcd9b485 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1693,10 +1693,10 @@ dependencies: tslib "^2.4.0" -"@swc/wasm@^1.11.9": - version "1.11.9" - resolved "https://registry.yarnpkg.com/@swc/wasm/-/wasm-1.11.9.tgz#fe260611b92ed795e614d86c7561ff5a0a7a94b2" - integrity sha512-4yoj1q4LdPqFYAJPJ3gZkDv7bL6fcOSB42jrVtbDlvgYCDQhr0Wf48LWUwQcuhsfUMYaNj1phsqB9LV2cfEQTw== +"@swc/wasm@^1.11.20": + version "1.11.20" + resolved "https://registry.yarnpkg.com/@swc/wasm/-/wasm-1.11.20.tgz#124476f92dacb3a29a77a2038c77d3d4ebebe188" + integrity sha512-U8GG2jCxESlGiprOHwu097e6DzN5F4v5yKVBmk9/iEEJj0TYFv/l0bf+upocEYFvy+XMnVdvNlUfWZBG/og71Q== "@szmarczak/http-timer@^1.1.2": version "1.1.2"