diff --git a/packages/create-fes-app/templates/app/pc/.fes.js b/packages/create-fes-app/templates/app/pc/.fes.js index 07496fb8..68336c8a 100644 --- a/packages/create-fes-app/templates/app/pc/.fes.js +++ b/packages/create-fes-app/templates/app/pc/.fes.js @@ -2,7 +2,6 @@ export default { - publicPath: './', access: { roles: { admin: ["*"], diff --git a/packages/create-fes-app/templates/app/pc/.fes.prod.js b/packages/create-fes-app/templates/app/pc/.fes.prod.js index 150b007d..b784e9ae 100644 --- a/packages/create-fes-app/templates/app/pc/.fes.prod.js +++ b/packages/create-fes-app/templates/app/pc/.fes.prod.js @@ -2,5 +2,5 @@ export default { - publicPath: '' + publicPath: './' }; diff --git a/packages/fes-build-webpack/package.json b/packages/fes-build-webpack/package.json index a87f2327..8ad778f1 100644 --- a/packages/fes-build-webpack/package.json +++ b/packages/fes-build-webpack/package.json @@ -25,17 +25,17 @@ "access": "public" }, "dependencies": { - "@babel/core": "^7.12.13", - "@babel/plugin-proposal-do-expressions": "^7.12.13", - "@babel/plugin-proposal-export-default-from": "^7.12.13", - "@babel/plugin-proposal-function-bind": "^7.12.13", - "@babel/plugin-proposal-pipeline-operator": "^7.12.13", - "@babel/plugin-transform-runtime": "^7.12.13", - "@babel/preset-env": "^7.12.13", + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-do-expressions": "^7.16.0", + "@babel/plugin-proposal-export-default-from": "^7.16.0", + "@babel/plugin-proposal-function-bind": "^7.16.0", + "@babel/plugin-proposal-pipeline-operator": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", "@babel/preset-typescript": "^7.15.0", "@fesjs/compiler": "^2.0.5", "@fesjs/utils": "^2.0.4", - "@vue/babel-plugin-jsx": "^1.0.2", + "@vue/babel-plugin-jsx": "^1.1.1", "autoprefixer": "^10.2.4", "babel-loader": "^8.2.2", "babel-plugin-import": "1.13.3", @@ -45,7 +45,6 @@ "copy-webpack-plugin": "^7.0.0", "css-loader": "^5.0.1", "css-minimizer-webpack-plugin": "^3.0.0", - "file-loader": "^6.2.0", "html-webpack-plugin": "^5.0.0", "html-webpack-tags-plugin": "^3.0.0", "less": "3.9.0", @@ -55,9 +54,7 @@ "postcss-flexbugs-fixes": "^5.0.2", "postcss-loader": "^4.2.0", "postcss-safe-parser": "^6.0.0", - "raw-loader": "^4.0.2", "style-loader": "^2.0.0", - "url-loader": "^4.1.1", "vue-loader": "^16.1.2", "webpack": "^5.69.0", "webpack-bundle-analyzer": "^4.4.0", @@ -66,9 +63,9 @@ }, "peerDependencies": { "@vue/compiler-sfc": "^3.0.5", - "core-js": "^3.8.3" + "core-js": "^3.19.2" }, "devDependencies": { - "core-js": "^3.8.3" + "core-js": "^3.19.2" } } diff --git a/packages/fes-build-webpack/src/plugins/commands/webpackConfig/index.js b/packages/fes-build-webpack/src/plugins/commands/webpackConfig/index.js index 58a1e4c4..5075e4a2 100644 --- a/packages/fes-build-webpack/src/plugins/commands/webpackConfig/index.js +++ b/packages/fes-build-webpack/src/plugins/commands/webpackConfig/index.js @@ -74,7 +74,11 @@ export default async function getConfig({ api, cwd, config, env, entry = {}, mod }); // --------------- output ----------- - webpackConfig.output.path(absoluteOutput).publicPath(publicPath).filename('[name].[contenthash:8].js').chunkFilename('[name].[contenthash:8].chunk.js'); + webpackConfig.output + .path(absoluteOutput) + .publicPath(publicPath || '/') + .filename('[name].[contenthash:8].js') + .chunkFilename('[name].[contenthash:8].chunk.js'); // --------------- resolve ----------- webpackConfig.resolve.extensions.merge(['.mjs', '.js', '.jsx', '.vue', '.ts', '.tsx', '.json', '.wasm']); @@ -85,48 +89,27 @@ export default async function getConfig({ api, cwd, config, env, entry = {}, mod webpackConfig.module .rule('image') .test(/\.(png|jpe?g|gif|webp|ico)(\?.*)?$/) - .use('url-loader') - .loader(require.resolve('url-loader')) - .options({ - limit: config.inlineLimit || 8192, - esModule: false, - fallback: { - loader: require.resolve('file-loader'), - options: { - name: 'static/[name].[hash:8].[ext]', - esModule: false, - }, + .type('asset') + .parser({ + dataUrlCondition: { + maxSize: config.inlineLimit || 8 * 1024, }, }); webpackConfig.module .rule('svg') .test(/\.(svg)(\?.*)?$/) - .use('file-loader') - .loader(require.resolve('file-loader')) - .options({ - name: 'static/[name].[hash:8].[ext]', - esModule: false, - }); + .type('asset/resource'); webpackConfig.module .rule('fonts') .test(/\.(eot|woff|woff2|ttf)(\?.*)?$/) - .use('file-loader') - .loader(require.resolve('file-loader')) - .options({ - name: 'static/[name].[hash:8].[ext]', - esModule: false, - }); + .type('asset/resource'); webpackConfig.module - .rule('raw') + .rule('text-file') .test(/\.(txt|text|md)$/) - .use('raw-loader') - .loader(require.resolve('raw-loader')) - .options({ - esModule: false, - }); + .type('asset/source'); const { targets, browserslist } = api.utils.getTargetsAndBrowsersList({ config }); const babelOpts = await getBabelOpts({ @@ -294,5 +277,15 @@ export default async function getConfig({ api, cwd, config, env, entry = {}, mod }); } - return webpackConfig.toConfig(); + const memo = webpackConfig.toConfig(); + memo.infrastructureLogging = { + ...memo.infrastructureLogging, + level: 'verbose', + }; + memo.output = { + ...memo.output, + assetModuleFilename: 'static/[name][hash:8][ext]', + }; + + return memo; } diff --git a/yarn.lock b/yarn.lock index ec28f3a0..d36d4801 100644 --- a/yarn.lock +++ b/yarn.lock @@ -158,7 +158,7 @@ resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.13", "@babel/core@^7.12.3", "@babel/core@^7.15.0", "@babel/core@^7.16.0", "@babel/core@^7.16.7", "@babel/core@^7.17.8", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.15.0", "@babel/core@^7.16.0", "@babel/core@^7.16.7", "@babel/core@^7.17.8", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.17.8" resolved "https://registry.npmmirror.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== @@ -512,7 +512,7 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-do-expressions@^7.12.13": +"@babel/plugin-proposal-do-expressions@^7.16.0": version "7.16.7" resolved "https://registry.npmmirror.com/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.16.7.tgz#80f55a0397a3899d562dd0f54ed926717b246817" integrity sha512-IFa27vSFJgVV6p9HN8TBHPIZdd0v3YplR7dRwzM6fSf2R46HrDPOpaH5KwAqOIedMPAo149hC4M1swu42pValw== @@ -528,7 +528,7 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-default-from@^7.12.13": +"@babel/plugin-proposal-export-default-from@^7.16.0": version "7.16.7" resolved "https://registry.npmmirror.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.16.7.tgz#a40ab158ca55627b71c5513f03d3469026a9e929" integrity sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg== @@ -544,7 +544,7 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-function-bind@^7.12.13": +"@babel/plugin-proposal-function-bind@^7.16.0": version "7.16.7" resolved "https://registry.npmmirror.com/@babel/plugin-proposal-function-bind/-/plugin-proposal-function-bind-7.16.7.tgz#2d08f091b72f0f123a64c5b0aa365c3c3e346413" integrity sha512-jPhqHqKvjlswvdbo0KlGJDxOJbauEfzvBG0E0P8kdIubQcDcW295PbLsJhrJcTUWfWPJawTxBTOWOohZfCSHXg== @@ -612,7 +612,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-pipeline-operator@^7.12.13": +"@babel/plugin-proposal-pipeline-operator@^7.16.0": version "7.17.6" resolved "https://registry.npmmirror.com/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.17.6.tgz#1d8902fe9177ff92f7c5ce3824ef1a1b35f1ea6a" integrity sha512-n1jaBJW05mRSShsMwK6ObEN9C925w3bleGZlzvPRdEJ0ZNvXoSncAJMGSzLKo7NScfZdWuLtf7BQtBMfFTHP+g== @@ -999,7 +999,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-runtime@^7.12.13": +"@babel/plugin-transform-runtime@^7.16.4": version "7.17.0" resolved "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== @@ -1071,7 +1071,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.13", "@babel/preset-env@^7.15.0": +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.15.0", "@babel/preset-env@^7.16.4": version "7.16.11" resolved "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== @@ -2317,7 +2317,7 @@ resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc" integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== -"@vue/babel-plugin-jsx@^1.0.2", "@vue/babel-plugin-jsx@^1.0.6", "@vue/babel-plugin-jsx@^1.1.1": +"@vue/babel-plugin-jsx@^1.0.6", "@vue/babel-plugin-jsx@^1.1.1": version "1.1.1" resolved "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz#0c5bac27880d23f89894cd036a37b55ef61ddfc1" integrity sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w== @@ -4176,7 +4176,7 @@ core-js-compat@^3.20.2, core-js-compat@^3.21.0: browserslist "^4.19.1" semver "7.0.0" -core-js@^3.21.1, core-js@^3.6.1, core-js@^3.8.3: +core-js@^3.19.2, core-js@^3.21.1, core-js@^3.6.1: version "3.21.1" resolved "https://registry.npmmirror.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== @@ -5495,14 +5495,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-loader@^6.2.0: - version "6.2.0" - resolved "https://registry.npmmirror.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - filelist@^1.0.1: version "1.0.2" resolved "https://registry.npmmirror.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" @@ -8991,14 +8983,6 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -raw-loader@^4.0.2: - version "4.0.2" - resolved "https://registry.npmmirror.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" - integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - react-is@^17.0.1: version "17.0.2" resolved "https://registry.npmmirror.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" @@ -10532,15 +10516,6 @@ urix@^0.1.0: resolved "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== -url-loader@^4.1.1: - version "4.1.1" - resolved "https://registry.npmmirror.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"