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-validation-error": "1.2.0",
"terminal-link": "^2.1.1",
"@ice/pack-binding": "0.0.2",
"@ice/pack-binding": "0.0.3",
"@rspack/plugin-react-refresh": "0.4.0"
},
"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,
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: {
...config,
plugins: (config.plugins || []).concat(plugins),

View File

@ -72,14 +72,16 @@ const createAssetsPlugin = (compilationInfo: CompilationInfo | (() => Compilatio
let url = '';
// Suffix `?url` will generate content hash in assets manifest,
// 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) {
const basename = path.basename(args.path);
const extname = path.extname(basename);
const ext = extname.substring(1);
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]
url = `${manifest?.assetsManifest.publicPath}assets/${name}.${contentHash}.${ext}`;
url = `${manifest?.assetsManifest.publicPath}assets/${name}.${hash}.${ext}`;
} else {
url = `data:${mrmime.lookup(args.path)};base64,${content.toString('base64')}`;
}

View File

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

View File

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