fix: several bug when bump pack dependencies (#6689)

* fix: serveral bug when bump dependencies

* fix: compile error

* chore: bump version
This commit is contained in:
ClarkXia 2023-12-12 14:25:32 +08:00 committed by GitHub
parent a68ff48d8e
commit 7d193fe96b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 73 additions and 44 deletions

View File

@ -0,0 +1,6 @@
---
'@ice/rspack-config': patch
'@ice/app': patch
---
fix: css module hash and HMR

View File

@ -0,0 +1,6 @@
---
'@ice/webpack-config': patch
'@ice/shared-config': patch
---
fix: optimize utils

View File

@ -45,7 +45,7 @@
"zod": "^3.21.4", "zod": "^3.21.4",
"zod-validation-error": "1.2.0", "zod-validation-error": "1.2.0",
"terminal-link": "^2.1.1", "terminal-link": "^2.1.1",
"@ice/pack-binding": "0.0.2", "@ice/pack-binding": "0.0.3",
"@rspack/plugin-react-refresh": "0.4.0" "@rspack/plugin-react-refresh": "0.4.0"
}, },
"devDependencies": { "devDependencies": {

View File

@ -0,0 +1,3 @@
import RefreshPlugin from '@rspack/plugin-react-refresh';
export default RefreshPlugin;

View File

@ -82,7 +82,7 @@ const getConfig: GetConfig = async (context, options, rspack) => {
}, },
getRoutesFile, getRoutesFile,
getExpandedEnvs, getExpandedEnvs,
localIdentName: config.mode === 'development' ? CSS_MODULES_LOCAL_IDENT_NAME_DEV : CSS_MODULES_LOCAL_IDENT_NAME, localIdentName: config.cssModules?.localIdentName || (config.mode === 'development' ? CSS_MODULES_LOCAL_IDENT_NAME_DEV : CSS_MODULES_LOCAL_IDENT_NAME),
taskConfig: { taskConfig: {
...config, ...config,
plugins: (config.plugins || []).concat(plugins), plugins: (config.plugins || []).concat(plugins),

View File

@ -72,14 +72,16 @@ const createAssetsPlugin = (compilationInfo: CompilationInfo | (() => Compilatio
let url = ''; let url = '';
// Suffix `?url` will generate content hash in assets manifest, // Suffix `?url` will generate content hash in assets manifest,
// keep the same file rule with client side. // keep the same file rule with client side.
const contentHash = manifest?.assetsManifest!.assets[`${relativePath}${args.suffix}`]; const contentHash = manifest?.assetsManifest?.assets?.[`${relativePath}${args.suffix}`];
if (contentHash) { if (contentHash) {
const basename = path.basename(args.path); const basename = path.basename(args.path);
const extname = path.extname(basename); const extname = path.extname(basename);
const ext = extname.substring(1); const ext = extname.substring(1);
const name = basename.slice(0, -extname.length); const name = basename.slice(0, -extname.length);
// In case of rspack bundler it will return full hash even it is set to [hash:8].
const hash = contentHash.length > 8 ? contentHash.slice(0, 8) : contentHash;
// assets/[name].[hash:8][ext] // assets/[name].[hash:8][ext]
url = `${manifest?.assetsManifest.publicPath}assets/${name}.${contentHash}.${ext}`; url = `${manifest?.assetsManifest.publicPath}assets/${name}.${hash}.${ext}`;
} else { } else {
url = `data:${mrmime.lookup(args.path)};base64,${content.toString('base64')}`; url = `data:${mrmime.lookup(args.path)};base64,${content.toString('base64')}`;
} }

View File

@ -1,9 +1,11 @@
import * as path from 'path'; import * as path from 'path';
import { createRequire } from 'module'; import { createRequire } from 'module';
import { compilationPlugin, compileExcludes, getDefineVars, getCompilerPlugins, getJsxTransformOptions } from '@ice/shared-config'; import { compilationPlugin, compileExcludes, getDefineVars, getCompilerPlugins, getJsxTransformOptions, getAliasWithRoot } from '@ice/shared-config';
import type { Config, ModifyWebpackConfig } from '@ice/shared-config/types'; import type { Config, ModifyWebpackConfig } from '@ice/shared-config/types';
import type { Configuration, rspack as Rspack } from '@rspack/core'; import type { Configuration, rspack as Rspack } from '@rspack/core';
import lodash from '@ice/bundles/compiled/lodash/index.js'; import lodash from '@ice/bundles/compiled/lodash/index.js';
import { coreJsPath } from '@ice/bundles';
import RefreshPlugin from '@ice/bundles/esm/plugin-refresh.js';
import getSplitChunks from './splitChunks.js'; import getSplitChunks from './splitChunks.js';
import getAssetsRule from './assetsRule.js'; import getAssetsRule from './assetsRule.js';
import getCssRules from './cssRules.js'; import getCssRules from './cssRules.js';
@ -26,6 +28,7 @@ type GetConfig = (
const require = createRequire(import.meta.url); const require = createRequire(import.meta.url);
const { merge } = lodash; const { merge } = lodash;
const getConfig: GetConfig = async (options) => { const getConfig: GetConfig = async (options) => {
const { const {
rootDir, rootDir,
@ -62,6 +65,7 @@ const getConfig: GetConfig = async (options) => {
configureWebpack = [], configureWebpack = [],
minimizerOptions = {}, minimizerOptions = {},
} = taskConfig || {}; } = taskConfig || {};
const isDev = mode === 'development';
const absoluteOutputDir = path.isAbsolute(outputDir) ? outputDir : path.join(rootDir, outputDir); const absoluteOutputDir = path.isAbsolute(outputDir) ? outputDir : path.join(rootDir, outputDir);
const hashKey = hash === true ? 'hash:8' : (hash || ''); const hashKey = hash === true ? 'hash:8' : (hash || '');
const compilation = compilationPlugin({ const compilation = compilationPlugin({
@ -129,7 +133,7 @@ const getConfig: GetConfig = async (options) => {
use: { use: {
loader: 'builtin:compilation-loader', loader: 'builtin:compilation-loader',
options: { options: {
swcOptions: getJsxTransformOptions({ suffix: 'jsx', rootDir, mode, fastRefresh: false, polyfill, enableEnv: true }), swcOptions: getJsxTransformOptions({ suffix: 'jsx', rootDir, mode, fastRefresh: isDev, polyfill, enableEnv: true }),
transformFeatures: { transformFeatures: {
removeExport: swcOptions.removeExportExprs, removeExport: swcOptions.removeExportExprs,
keepExport: swcOptions.keepExports, keepExport: swcOptions.keepExports,
@ -146,7 +150,11 @@ const getConfig: GetConfig = async (options) => {
], ],
}, },
resolve: { resolve: {
alias, alias: {
// Always lock the corejs version, it is decided by shared-config.
'core-js': coreJsPath,
...getAliasWithRoot(rootDir, alias),
},
}, },
watchOptions: { watchOptions: {
ignored: /node_modules/, ignored: /node_modules/,
@ -163,10 +171,10 @@ const getConfig: GetConfig = async (options) => {
...plugins, ...plugins,
// Unplugin should be compatible with rspack. // Unplugin should be compatible with rspack.
...compilerWebpackPlugins, ...compilerWebpackPlugins,
isDev && new RefreshPlugin(),
new DefinePlugin(getDefineVars(define, runtimeDefineVars, getExpandedEnvs)), new DefinePlugin(getDefineVars(define, runtimeDefineVars, getExpandedEnvs)),
new ProvidePlugin({ new ProvidePlugin({
process: [require.resolve('process/browser')], process: [require.resolve('process/browser')],
$ReactRefreshRuntime$: [require.resolve('./client/reactRefresh.cjs')],
}), }),
!!minify && new SwcJsMinimizerRspackPlugin(jsMinimizerPluginOptions), !!minify && new SwcJsMinimizerRspackPlugin(jsMinimizerPluginOptions),
].filter(Boolean), ].filter(Boolean),

View File

@ -0,0 +1,12 @@
import * as path from 'path';
function getAliasWithRoot(rootDir: string, alias?: Record<string, string | boolean>) {
const aliasWithRoot = {};
Object.keys(alias).forEach((key) => {
const aliasValue = alias[key];
aliasWithRoot[key] = (aliasValue && typeof aliasValue === 'string' && aliasValue.startsWith('.')) ? path.join(rootDir, aliasValue) : aliasValue;
});
return aliasWithRoot;
}
export default getAliasWithRoot;

View File

@ -4,6 +4,7 @@ import getCompilerPlugins from './getCompilerPlugins.js';
import getDefineVars from './getDefineVars.js'; import getDefineVars from './getDefineVars.js';
import getPostcssOpts from './getPostcssOpts.js'; import getPostcssOpts from './getPostcssOpts.js';
import getCSSModuleLocalIdent from './getCSSModuleLocalIdent.js'; import getCSSModuleLocalIdent from './getCSSModuleLocalIdent.js';
import getAliasWithRoot from './getAlias.js';
export { export {
getCSSModuleLocalIdent, getCSSModuleLocalIdent,
@ -15,4 +16,5 @@ export {
getCompilerPlugins, getCompilerPlugins,
getDefineVars, getDefineVars,
getPostcssOpts, getPostcssOpts,
getAliasWithRoot,
}; };

View File

@ -11,7 +11,7 @@ import ESlintPlugin from '@ice/bundles/compiled/eslint-webpack-plugin/index.js';
import CopyPlugin from '@ice/bundles/compiled/copy-webpack-plugin/index.js'; import CopyPlugin from '@ice/bundles/compiled/copy-webpack-plugin/index.js';
import type { NormalModule, Compiler, Configuration } from 'webpack'; import type { NormalModule, Compiler, Configuration } from 'webpack';
import type webpack from 'webpack'; import type webpack from 'webpack';
import { compilationPlugin, compileExcludes, getCompilerPlugins, getDefineVars } from '@ice/shared-config'; import { compilationPlugin, compileExcludes, getCompilerPlugins, getDefineVars, getAliasWithRoot } from '@ice/shared-config';
import type { Config, ModifyWebpackConfig } from '@ice/shared-config/types.js'; import type { Config, ModifyWebpackConfig } from '@ice/shared-config/types.js';
import configAssets from './config/assets.js'; import configAssets from './config/assets.js';
import configCss from './config/css.js'; import configCss from './config/css.js';
@ -59,16 +59,6 @@ function getEntry(rootDir: string, runtimeTmpDir: string) {
}; };
} }
// format alias
export function getAliasWithRoot(rootDir: string, alias?: Record<string, string | boolean>) {
const aliasWithRoot = {};
Object.keys(alias).forEach((key) => {
const aliasValue = alias[key];
aliasWithRoot[key] = (aliasValue && typeof aliasValue === 'string' && aliasValue.startsWith('.')) ? path.join(rootDir, aliasValue) : aliasValue;
});
return aliasWithRoot;
}
export function getWebpackConfig(options: GetWebpackConfigOptions): Configuration { export function getWebpackConfig(options: GetWebpackConfigOptions): Configuration {
const { const {
rootDir, rootDir,

View File

@ -1268,8 +1268,8 @@ importers:
specifier: 0.0.6 specifier: 0.0.6
version: 0.0.6 version: 0.0.6
'@ice/pack-binding': '@ice/pack-binding':
specifier: 0.0.2 specifier: 0.0.3
version: 0.0.2 version: 0.0.3
'@ice/swc-plugin-keep-export': '@ice/swc-plugin-keep-export':
specifier: 0.2.0 specifier: 0.2.0
version: 0.2.0 version: 0.2.0
@ -6647,8 +6647,8 @@ packages:
'@ice/css-modules-hash-win32-x64-msvc': 0.0.6 '@ice/css-modules-hash-win32-x64-msvc': 0.0.6
dev: false dev: false
/@ice/pack-binding-darwin-arm64@0.0.2: /@ice/pack-binding-darwin-arm64@0.0.3:
resolution: {integrity: sha512-OvwDHEqcYr5coVgQGLQxb90MTC6/ySnmQkq03dikAMf8w3o5ooMzqSfRGLL8uAqBBhNNNipYPI97C7b9Pz+eaw==} resolution: {integrity: sha512-uYpNCOnhsfGouHEgctCiW9P8iAcEs633NBK6HqKENq4Mzjtu/gZIDH/kfBe7QtaIpSYttkfzWxkPg7oigcHvrA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@ -6656,16 +6656,16 @@ packages:
dev: false dev: false
optional: true optional: true
/@ice/pack-binding-darwin-universal@0.0.2: /@ice/pack-binding-darwin-universal@0.0.3:
resolution: {integrity: sha512-TG0e5NT6r2+yzL3eBU20RegLfWHDXjSyPjfQc0HM9sWgAHABQ0q+gE47rTv0ThWL8vC1uh4jlhPamwUCpjvLoQ==} resolution: {integrity: sha512-LjciyuX32M5WEuheUGE+juDJTGHcgsvs3fUpl6GAhM+DfgQAbROUVVsF1djmOxAAwJwYIR75SY3BlMIdlthkyQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
os: [darwin] os: [darwin]
requiresBuild: true requiresBuild: true
dev: false dev: false
optional: true optional: true
/@ice/pack-binding-darwin-x64@0.0.2: /@ice/pack-binding-darwin-x64@0.0.3:
resolution: {integrity: sha512-WcNGfHUClA4x0KjZf9ju0hG0/xFHnMUR1neoEyMw0UW1m6jZF76aWKBfQABocZkFV+veIyTZFXs/2GAmGZOJYw==} resolution: {integrity: sha512-qpvhz48oakCBYTIV1x/4mujVkbh0b3R1TthOB5MXQ4N3orXj6VqlP0WzzDOersRxmqrPlqDcVzuTThow5Go4xA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@ -6673,8 +6673,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@ice/pack-binding-linux-x64-gnu@0.0.2: /@ice/pack-binding-linux-x64-gnu@0.0.3:
resolution: {integrity: sha512-FQM056bjtP3gyp1ilS7PdrNMhpfwJS1PJvktw0LsrulCrsg+7vkUSvYHY5Jb2IcUAWX0JvTOhvyUeFQ4sN4S6A==} resolution: {integrity: sha512-rFKwOpsHdDP3/d+j88N2LAve23HIzFjjfGweyoE6fjkZ3PPdx+8gkBzMR7jV1P4SXietsm/uoWfK71dhmlf76A==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -6682,8 +6682,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@ice/pack-binding-linux-x64-musl@0.0.2: /@ice/pack-binding-linux-x64-musl@0.0.3:
resolution: {integrity: sha512-h2ELqYZbo/Ckpa0YS6U0z+/oFsJ7gVcta4Ib8IWjUdoXQpK4r37DxY7GdDe+VafGoYGwSJijdzbYQRYsobSVhQ==} resolution: {integrity: sha512-qgdnZLQdARL3uMc+Ey/2arxCfOil4Km8xfI+rZhhNDPItsuk9kJenuSRO5FmXTtYqKWHsNT/Dj87d0KiuW/Ejw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -6691,8 +6691,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@ice/pack-binding-win32-arm64-msvc@0.0.2: /@ice/pack-binding-win32-arm64-msvc@0.0.3:
resolution: {integrity: sha512-hgxGL5c2gReksGcPeLkdgtmTBKC8baxb7ZAXN3HQoYyT8TJmTjeG6tJvDAfoJU7k6VrGWD2IQvdjWGSsdHUQzw==} resolution: {integrity: sha512-I7fukJd68UVVZpv978+7VXmSP1LrkoSWydiKECbqOHdOm6o9/d7j6p6W1/QBWs5YUYtvGgRV1LzeT121nL3Bvw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@ -6700,8 +6700,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@ice/pack-binding-win32-x64-msvc@0.0.2: /@ice/pack-binding-win32-x64-msvc@0.0.3:
resolution: {integrity: sha512-TRacy9q8O2GLS1vA1Mh6ySPvpmzN459sTaOQ21WoGdbq+z6lrAgEKezbdB50hUoNZsw4DBDIPKwzZv2hhJGb6w==} resolution: {integrity: sha512-GyXpRpWgFy5O24V/ZedFpfkABSdVvB6H5m7yd1Xq4heHy35/UQrbdhJstK/KfPskW/sSCWYH39cYdnODOXaHnw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -6709,17 +6709,17 @@ packages:
dev: false dev: false
optional: true optional: true
/@ice/pack-binding@0.0.2: /@ice/pack-binding@0.0.3:
resolution: {integrity: sha512-UkWq7iZG0pH3u4yaU0lVRJjQT8CKfaRyPWSfiD6M8A8klRs3Ksd+yRWqsaIlQ6TxpQ9LvtAGKdAWBEYoJHqm/Q==} resolution: {integrity: sha512-Y9GefjNG0RAJwyPNPOJohYCodZ0RTiMKn3ok0lJEYI53wsTc8ueBeoMQC96Fs03UvzOwNd252fD+0RMc4MWXeQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
optionalDependencies: optionalDependencies:
'@ice/pack-binding-darwin-arm64': 0.0.2 '@ice/pack-binding-darwin-arm64': 0.0.3
'@ice/pack-binding-darwin-universal': 0.0.2 '@ice/pack-binding-darwin-universal': 0.0.3
'@ice/pack-binding-darwin-x64': 0.0.2 '@ice/pack-binding-darwin-x64': 0.0.3
'@ice/pack-binding-linux-x64-gnu': 0.0.2 '@ice/pack-binding-linux-x64-gnu': 0.0.3
'@ice/pack-binding-linux-x64-musl': 0.0.2 '@ice/pack-binding-linux-x64-musl': 0.0.3
'@ice/pack-binding-win32-arm64-msvc': 0.0.2 '@ice/pack-binding-win32-arm64-msvc': 0.0.3
'@ice/pack-binding-win32-x64-msvc': 0.0.2 '@ice/pack-binding-win32-x64-msvc': 0.0.3
dev: false dev: false
/@ice/pkg@1.5.5: /@ice/pkg@1.5.5: