From a98465fefa75ea88066969aa1ef51b4807eb7268 Mon Sep 17 00:00:00 2001 From: Terncode Date: Mon, 11 May 2026 21:06:29 +0200 Subject: [PATCH] Fix builder --- package-lock.json | 182 +++++++++++++++--------- package.json | 7 +- webpack.common.js => webpack.common.mjs | 70 +++++---- webpack.dev.js => webpack.dev.mjs | 46 +++--- webpack.prod.mjs | 1 - 5 files changed, 195 insertions(+), 111 deletions(-) rename webpack.common.js => webpack.common.mjs (55%) rename webpack.dev.js => webpack.dev.mjs (63%) diff --git a/package-lock.json b/package-lock.json index 8723316..65a0b43 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,6 @@ "@ngtools/webpack": "18.0.0", "@passport-next/passport-facebook": "3.1.2", "@passport-next/passport-google-oauth2": "1.0.0", - "@types/base64-js": "1.5.0", "@types/bluebird": "3.5.42", "@types/body-parser": "1.19.6", "@types/chai": "5.2.3", @@ -65,7 +64,7 @@ "ag-sockets": "14.0.2", "angular2-template-loader": "0.6.2", "babel-loader": "10.1.1", - "base64-js": "1.3.1", + "base64-js": "^1.5.1", "bluebird": "3.5.5", "body-parser": "2.2.2", "bootstrap": "4.6.2", @@ -137,6 +136,7 @@ "pug-plugin-ng": "0.0.3", "raw-loader": "4.0.2", "reflect-metadata": "0.2.2", + "remap-istanbul": "^0.13.0", "rollbar": "2.12.2", "rxjs": "7.8.2", "sass": "1.62.1", @@ -154,6 +154,7 @@ "tsutils": "3.17.1", "typescript": "5.4", "ua-parser-js": "2.0.9", + "util": "^0.12.5", "webgl-debug": "2.0.1", "webpack-bundle-analyzer": "5.2.0", "webpack-dev-server": "5.2.3", @@ -5794,16 +5795,6 @@ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "license": "MIT" }, - "node_modules/@types/base64-js": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@types/base64-js/-/base64-js-1.5.0.tgz", - "integrity": "sha512-xDDGwUoGXW4FHFWs1pIMXZrVD4kxOAo4KmNSZlb0w5hT52Gd4eIzkjwVp/XRpSox2hfR3h7ZO6witfU7aAZ6XA==", - "deprecated": "This is a stub types definition. base64-js provides its own type definitions, so you do not need this installed.", - "license": "MIT", - "dependencies": { - "base64-js": "*" - } - }, "node_modules/@types/bluebird": { "version": "3.5.42", "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.42.tgz", @@ -6771,8 +6762,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/accepts": { "version": "1.3.8", @@ -6878,26 +6868,6 @@ "pako": "2.1.0" } }, - "node_modules/ag-psd/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/ag-sockets": { "version": "14.0.2", "resolved": "https://registry.npmjs.org/ag-sockets/-/ag-sockets-14.0.2.tgz", @@ -6973,7 +6943,6 @@ "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", "license": "BSD-3-Clause OR MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.4.2" } @@ -7512,8 +7481,7 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/async-done": { "version": "2.0.0", @@ -7791,9 +7759,23 @@ } }, "node_modules/base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, "node_modules/base64url": { @@ -11995,7 +11977,6 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "esprima": "^2.7.1", "estraverse": "^1.9.1", @@ -12017,7 +11998,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -12027,7 +12007,6 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "license": "MIT", - "peer": true, "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -12041,7 +12020,6 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "license": "MIT", - "peer": true, "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -12058,7 +12036,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "peer": true, "engines": { "node": ">= 0.8.0" } @@ -12068,7 +12045,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", "optional": true, - "peer": true, "dependencies": { "amdefine": ">=0.0.4" }, @@ -12081,7 +12057,6 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "license": "MIT", - "peer": true, "dependencies": { "prelude-ls": "~1.1.2" }, @@ -14637,7 +14612,6 @@ "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", - "peer": true, "dependencies": { "inflight": "^1.0.4", "inherits": "2", @@ -14731,15 +14705,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/glob/node_modules/brace-expansion": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -14750,7 +14722,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -16068,7 +16039,6 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", "license": "MIT", - "peer": true, "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -16090,7 +16060,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "license": "BSD-3-Clause", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -17385,6 +17354,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -18302,7 +18287,6 @@ "integrity": "sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg==", "deprecated": "This module is no longer maintained, try this instead:\n npm i nyc\nVisit https://istanbul.js.org/integrations for other alternatives.", "license": "BSD-3-Clause", - "peer": true, "dependencies": { "abbrev": "1.0.x", "async": "1.x", @@ -18561,7 +18545,6 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "license": "MIT", - "peer": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -18571,7 +18554,6 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "license": "MIT", - "peer": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -18585,7 +18567,6 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "license": "BSD-2-Clause", - "peer": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -18598,15 +18579,13 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/istanbul/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "license": "ISC", - "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -21335,7 +21314,6 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "license": "ISC", - "peer": true, "dependencies": { "abbrev": "1" }, @@ -27094,6 +27072,69 @@ "node": ">=4" } }, + "node_modules/remap-istanbul": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/remap-istanbul/-/remap-istanbul-0.13.0.tgz", + "integrity": "sha512-rS5ZpVAx3fGtKZkiBe1esXg5mKYbgW9iz8kkADFt3p6lo3NsBBUX1q6SwdhwUtYCGnr7nK6gRlbYK3i8R0jbRA==", + "license": "BSD-3-Clause", + "dependencies": { + "istanbul": "0.4.5", + "minimatch": "^3.0.4", + "plugin-error": "^1.0.1", + "source-map": "0.6.1", + "through2": "3.0.0" + }, + "bin": { + "remap-istanbul": "bin/remap-istanbul.js" + } + }, + "node_modules/remap-istanbul/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/remap-istanbul/node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/remap-istanbul/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/remap-istanbul/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remap-istanbul/node_modules/through2": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.0.tgz", + "integrity": "sha512-8B+sevlqP4OiCjonI1Zw03Sf8PuV1eRsYQgLad5eonILOdyeRsY27A/2Ze8IlvlMvq31OH+3fz/styI7Ya62yQ==", + "license": "MIT", + "dependencies": { + "readable-stream": "2 || 3", + "xtend": "~4.0.1" + } + }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -30632,7 +30673,6 @@ "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "license": "BSD-2-Clause", "optional": true, - "peer": true, "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -30937,6 +30977,19 @@ "node": ">= 4" } }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -32701,8 +32754,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/workbox-background-sync": { "version": "7.4.0", diff --git a/package.json b/package.json index 222a554..69f8566 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "webpack-admin": "npm run webpack-prod -- --env.admin", "webpack-stats": "npm run webpack-prod -- --env.debug --json > stats.json", "webpack-verbose": "npm run webpack-prod -- --verbose", - "wds": "webpack-dev-server --config webpack.dev.js --progress --color --port 8091", + "wds": "webpack-dev-server --config webpack.dev.mjs --progress --color --port 8091", "build": "gulp build", "build-sprites": "npm run ts-tools && gulp sprites && npm run build", "build-beta": "npm run build -- --beta --tools", @@ -69,7 +69,6 @@ "@ngtools/webpack": "18.0.0", "@passport-next/passport-facebook": "3.1.2", "@passport-next/passport-google-oauth2": "1.0.0", - "@types/base64-js": "1.5.0", "@types/bluebird": "3.5.42", "@types/body-parser": "1.19.6", "@types/chai": "5.2.3", @@ -106,7 +105,7 @@ "ag-sockets": "14.0.2", "angular2-template-loader": "0.6.2", "babel-loader": "10.1.1", - "base64-js": "1.3.1", + "base64-js": "^1.5.1", "bluebird": "3.5.5", "body-parser": "2.2.2", "bootstrap": "4.6.2", @@ -178,6 +177,7 @@ "pug-plugin-ng": "0.0.3", "raw-loader": "4.0.2", "reflect-metadata": "0.2.2", + "remap-istanbul": "^0.13.0", "rollbar": "2.12.2", "rxjs": "7.8.2", "sass": "1.62.1", @@ -195,6 +195,7 @@ "tsutils": "3.17.1", "typescript": "5.4", "ua-parser-js": "2.0.9", + "util": "^0.12.5", "webgl-debug": "2.0.1", "webpack-bundle-analyzer": "5.2.0", "webpack-dev-server": "5.2.3", diff --git a/webpack.common.js b/webpack.common.mjs similarity index 55% rename from webpack.common.js rename to webpack.common.mjs index 7c68881..c528f42 100644 --- a/webpack.common.js +++ b/webpack.common.mjs @@ -1,9 +1,16 @@ -const webpack = require('webpack'); -const path = require('path'); -const autoprefixer = require('autoprefixer'); -const cssnano = require('cssnano'); +import webpack from 'webpack'; +import path from 'path'; +import autoprefixer from 'autoprefixer'; +import cssnano from 'cssnano'; +import { fileURLToPath } from 'url'; +import { createRequire } from 'module'; -module.exports = { +const require = createRequire(import.meta.url); + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const config = { context: path.join(__dirname, 'src'), output: { path: path.resolve(__dirname, 'build', 'assets', 'scripts'), @@ -12,6 +19,9 @@ module.exports = { }, resolve: { extensions: ['.ts', '.js'], + fallback: { + util: require.resolve('util/'), + }, }, module: { rules: [ @@ -22,21 +32,25 @@ module.exports = { }, { test: /\.css$/, - use: [{ - loader: 'raw-loader', - options: { - esModule: false, + use: [ + { + loader: 'raw-loader', + options: { + esModule: false, + }, }, - },], + ], }, { test: /\.html$/, - use: [{ - loader: 'raw-loader', - options: { - esModule: false, + use: [ + { + loader: 'raw-loader', + options: { + esModule: false, + }, }, - },], + ], }, { test: /\.pug$/, @@ -49,7 +63,10 @@ module.exports = { }, { loader: 'pug-html-loader', - options: { doctype: 'html', plugins: require('pug-plugin-ng') }, + options: { + doctype: 'html', + plugins: (await import('pug-plugin-ng')).default, + }, }, ], }, @@ -69,10 +86,13 @@ module.exports = { ident: 'postcss', plugins: [ autoprefixer('last 2 versions'), - cssnano({ discardComments: { removeAll: true } }), + cssnano({ + discardComments: { + removeAll: true, + }, + }), ], - - } + }, }, }, { @@ -86,18 +106,20 @@ module.exports = { ], }, { - // Mark files inside `@angular/core` as using SystemJS style dynamic imports. - // Removing this will cause deprecation warnings to appear. - test: /[\/\\]@angular[\/\\]core[\/\\].+\.js$/, - parser: { system: false }, // disable SystemJS + test: /[\\/\\]@angular[\\/\\]core[\\/\\].+\.js$/, + parser: { + system: false, + }, }, ], }, plugins: [ new webpack.ContextReplacementPlugin( - /\@angular(\\|\/)core(\\|\/)/, + /\\@angular(\\|\/)core(\\|\/)/, path.resolve(__dirname, 'src', 'ts'), {} ), ], }; + +export default config; \ No newline at end of file diff --git a/webpack.dev.js b/webpack.dev.mjs similarity index 63% rename from webpack.dev.js rename to webpack.dev.mjs index 7cf6c80..4b46a3c 100644 --- a/webpack.dev.js +++ b/webpack.dev.mjs @@ -1,33 +1,36 @@ -const webpack = require('webpack'); -const { merge } = require('webpack-merge'); -const common = require('./webpack.common.js'); +import webpack from 'webpack'; +import { merge } from 'webpack-merge'; +import common from './webpack.common.mjs'; +import fs from 'fs'; + +const r = p => JSON.parse(fs.readFileSync(p, 'utf8')); +const tsconfig = r('./tsconfig.json'); const compilerOptions = { - ...require('./tsconfig.json').compilerOptions, + ...tsconfig.compilerOptions, target: 'es6', module: 'es2016', }; -module.exports = merge(common, { +const config = merge(common, { mode: 'development', entry: { - 'bootstrap': './ts/bootstrap', + bootstrap: './ts/bootstrap', 'bootstrap-admin': './ts/bootstrap-admin', 'bootstrap-tools': './ts/bootstrap-tools', }, - devtool: 'eval-cheap-source-map', + devtool: 'eval-cheap-source-map', devServer: { host: '0.0.0.0', port: 8091, - hot: true, historyApiFallback: true, compress: false, client: { progress: true, overlay: { errors: true, - warnings: false - } + warnings: false, + }, }, static: { publicPath: '/assets/scripts/', @@ -36,18 +39,19 @@ module.exports = merge(common, { headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET', - 'Access-Control-Allow-Headers': 'X-Requested-With, content-type, Authorization' - } + 'Access-Control-Allow-Headers': + 'X-Requested-With, content-type, Authorization', + }, }, stats: { preset: 'normal', reasons: true, modules: true, errorDetails: true, - moduleTrace: true - }, + moduleTrace: true, + }, output: { - pathinfo: false + pathinfo: false, }, watchOptions: { ignored: /node_modules/, @@ -70,7 +74,7 @@ module.exports = merge(common, { }, optimization: { removeAvailableModules: false, - removeEmptyChunks: false, // replacement of NamedModulesPlugin(), + removeEmptyChunks: false, moduleIds: 'named', splitChunks: { cacheGroups: { @@ -85,8 +89,14 @@ module.exports = merge(common, { plugins: [ new webpack.HotModuleReplacementPlugin(), new webpack.DefinePlugin({ - DEVELOPMENT: true, TOOLS: true, SERVER: false, - BETA: true, TIMING: true, TESTS: false + DEVELOPMENT: true, + TOOLS: true, + SERVER: false, + BETA: true, + TIMING: true, + TESTS: false, }), ], }); + +export default config; diff --git a/webpack.prod.mjs b/webpack.prod.mjs index 46dafda..46f0c72 100644 --- a/webpack.prod.mjs +++ b/webpack.prod.mjs @@ -12,7 +12,6 @@ import { fileURLToPath } from 'url'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const r = p => JSON.parse(fs.readFileSync(p, 'utf8')); - const config = r('./config.json'); const analytics = config.analytics ? `