diff --git a/package.json b/package.json index 4b922092..e76628e7 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.20" + } } 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/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"} diff --git a/yarn.lock b/yarn.lock index 2e7071d3..dcd9b485 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1693,6 +1693,11 @@ dependencies: tslib "^2.4.0" +"@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" 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==