Compare commits

...

2 Commits

Author SHA1 Message Date
ClarkXia bb60ab5a04
feat: support option rootId to empty root (#7031)
CI / build (16.x, ubuntu-latest) (push) Has been cancelled Details
CI / build (16.x, windows-latest) (push) Has been cancelled Details
CI / build (18.x, ubuntu-latest) (push) Has been cancelled Details
CI / build (18.x, windows-latest) (push) Has been cancelled Details
Coverage / coverage (16.x) (push) Has been cancelled Details
Release / Release (16) (push) Has been cancelled Details
2025-07-09 10:59:28 +08:00
ClarkXia 412faf03d1
Feat: support externals field in assets-manifest (#7116) (#7117)
* feat: support externals field in assets-manifest (#7116)

* chore: version

* chore: update version
2025-07-09 10:59:06 +08:00
13 changed files with 39 additions and 9 deletions

View File

@ -1,5 +1,11 @@
# @ice/plugin-externals
## 1.0.1
### Patch Changes
- 4569200ca: fix: support externals field in assets-manifest
## 1.0.0
- Initial release

View File

@ -1,6 +1,6 @@
{
"name": "@ice/plugin-externals",
"version": "1.0.0",
"version": "1.0.1",
"description": "plugin to make externals much easier in ice.js",
"files": [
"esm",

View File

@ -26,7 +26,9 @@ export default class InjectExternalScriptsWebpackPlugin {
if (assetsManifest) {
const json = JSON.parse(assetsManifest.source().toString());
delete compilation.assets[ASSET_MANIFEST_JSON_NAME];
json.entries.main.unshift(...this.options.externals);
// Ensure externals array exists and add new externals at the beginning.
json.externals ||= [];
json.externals.unshift(...this.options.externals);
compilation.emitAsset(
ASSET_MANIFEST_JSON_NAME,
new webpack.sources.RawSource(JSON.stringify(json)),

View File

@ -56,7 +56,7 @@
"webpack-dev-server": "4.15.0"
},
"peerDependencies": {
"@ice/app": "^3.6.4",
"@ice/app": "^3.6.3",
"@ice/runtime": "^1.5.4"
},
"publishConfig": {

View File

@ -50,7 +50,7 @@
"sax": "^1.2.4"
},
"devDependencies": {
"@ice/app": "^3.6.4",
"@ice/app": "^3.6.3",
"@ice/runtime": "^1.5.4",
"webpack": "^5.88.0"
},

View File

@ -1,5 +1,9 @@
# @ice/plugin-stream-error
## 1.0.3
- feat: empty root element when stream error
## 1.0.0
### Major Changes

View File

@ -1,6 +1,6 @@
{
"name": "@ice/plugin-stream-error",
"version": "1.0.2",
"version": "1.0.3",
"description": "",
"license": "MIT",
"type": "module",

View File

@ -2,13 +2,16 @@ import type { Plugin } from '@ice/app/types';
interface PluginOptions {
activeInDev?: boolean;
rootId?: string;
}
const PLUGIN_NAME = '@ice/plugin-stream-error';
const plugin: Plugin<PluginOptions> = (options = {}) => ({
const plugin: Plugin<PluginOptions> = (options = {
rootId: 'root',
}) => ({
name: PLUGIN_NAME,
setup: ({ generator, context }) => {
const { activeInDev } = options;
const { activeInDev, rootId } = options;
const { userConfig } = context;
if (userConfig.ssr) {
generator.addEntryCode((originalCode) => {
@ -18,6 +21,11 @@ if (import.meta.renderer === 'client') {
// _$ServerTimePoints will returned at the end of last stream,
// if the value is undefined, try to re-render app with CSR.
if (${activeInDev ? '' : 'process.env.NODE_ENV === \'production\' && '}!window._$ServerTimePoints && window.__ICE_APP_CONTEXT__.renderMode === 'SSR') {
const root = document.getElementById('${rootId}');
if (root) {
root.innerHTML = '';
}
window.__ICE_APP_CONTEXT__.renderMode = 'CSR';
render({ hydrate: false });
}
});

View File

@ -1,5 +1,11 @@
# @ice/runtime
## 1.5.5
### Patch Changes
- 4569200ca: fix: support externals field in assets-manifest
## 1.5.4
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@ice/runtime",
"version": "1.5.4",
"version": "1.5.5",
"description": "Runtime module for ice.js",
"type": "module",
"types": "./esm/index.d.ts",

View File

@ -129,6 +129,9 @@ export const Scripts: ScriptsType = (props: ScriptsProps) => {
return (
<>
<Data ScriptElement={ScriptElement} />
{assetsManifest.externals?.map(external => (
<ScriptElement key={external} src={external} {...rest} data-external-script />
))}
{
routeScripts.map(routeScriptProps => {
return <ScriptElement key={routeScriptProps.src} {...rest} {...routeScriptProps} data-route-script />;

View File

@ -205,6 +205,7 @@ export interface RouteModules {
}
export interface AssetsManifest {
externals?: string[];
dataLoader?: string;
publicPath: string;
entries: {

View File

@ -2157,7 +2157,7 @@ importers:
version: 1.2.4
devDependencies:
'@ice/app':
specifier: ^3.6.4
specifier: ^3.6.3
version: link:../ice
'@ice/runtime':
specifier: ^1.5.4