ssr-plugin-react 6.2.55 → 6.2.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +3 -3
- package/CHANGELOG.md +46 -0
- package/README.md +5 -1
- package/cjs/config/base.d.ts.map +1 -1
- package/cjs/config/base.js +29 -19
- package/cjs/config/base.js.map +1 -1
- package/cjs/entry/server-entry.d.ts +5 -1
- package/cjs/entry/server-entry.d.ts.map +1 -1
- package/cjs/entry/server-entry.js +61 -59
- package/cjs/entry/server-entry.js.map +1 -1
- package/esm/config/base.d.ts.map +1 -1
- package/esm/config/base.js +30 -20
- package/esm/config/base.js.map +1 -1
- package/esm/entry/server-entry.d.ts +5 -1
- package/esm/entry/server-entry.d.ts.map +1 -1
- package/esm/entry/server-entry.js +63 -61
- package/esm/entry/server-entry.js.map +1 -1
- package/package.json +5 -2
- package/src/config/base.ts +28 -19
- package/src/entry/server-entry.tsx +65 -63
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
ssr-plugin-react:build: cache hit, replaying output
|
|
1
|
+
ssr-plugin-react:build: cache hit, replaying output 1624d4a22ea6bb71
|
|
2
2
|
ssr-plugin-react:build:
|
|
3
|
-
ssr-plugin-react:build: > ssr-plugin-react@6.2.
|
|
3
|
+
ssr-plugin-react:build: > ssr-plugin-react@6.2.57 build /home/runner/work/ssr/ssr/packages/plugin-react
|
|
4
4
|
ssr-plugin-react:build: > concurrently "tsc -p ./tsconfig.cjs.json " " tsc -p ./tsconfig.esm.json"
|
|
5
5
|
ssr-plugin-react:build:
|
|
6
|
-
ssr-plugin-react:build: [1] tsc -p ./tsconfig.esm.json exited with code 0
|
|
7
6
|
ssr-plugin-react:build: [0] tsc -p ./tsconfig.cjs.json exited with code 0
|
|
7
|
+
ssr-plugin-react:build: [1] tsc -p ./tsconfig.esm.json exited with code 0
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,49 @@
|
|
|
1
|
+
## [6.2.57](https://github.com/zhangyuang/ssr/compare/plugin-react@6.2.56...plugin-react@6.2.57) (2023-02-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* add NODE_OPTIONS tips when nodejs version > 16 ([3492698](https://github.com/zhangyuang/ssr/commit/34926987bb3f6f7562b87b14289f509cecf2a6fa))
|
|
7
|
+
* defaultExternals add react-dom close [#253](https://github.com/zhangyuang/ssr/issues/253) ([f748cee](https://github.com/zhangyuang/ssr/commit/f748ceeac2cf3205549b2a818e9cc4e386a5c250))
|
|
8
|
+
* external ([005b74a](https://github.com/zhangyuang/ssr/commit/005b74a35bbecfc44a1235b8d256aaf934b595bc))
|
|
9
|
+
* judge node version ([b6f17b3](https://github.com/zhangyuang/ssr/commit/b6f17b3a04afdcdea936554b60e6db96e2053532))
|
|
10
|
+
* spa build ([d399bea](https://github.com/zhangyuang/ssr/commit/d399beac0dc3a336194651b3fc05f011a7515ff1))
|
|
11
|
+
* types ([7015666](https://github.com/zhangyuang/ssr/commit/70156663c28c87628596a4466cf8c647d18335dd))
|
|
12
|
+
* update vite-vue plugin version ([#261](https://github.com/zhangyuang/ssr/issues/261)) ([31d3844](https://github.com/zhangyuang/ssr/commit/31d38447e49bc8055d59e4452d02fc9825afab64))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* add @types/koa ([0dffea6](https://github.com/zhangyuang/ssr/commit/0dffea66264dafde6ff16fd211a14137fd8b6e5d))
|
|
18
|
+
* add path-to-regexp to vite build vendorlist ([8934da5](https://github.com/zhangyuang/ssr/commit/8934da5dca7c709d4cbc0635bb194057b59dc2c0))
|
|
19
|
+
* add ssr start --help tips in midway ([f76f0a1](https://github.com/zhangyuang/ssr/commit/f76f0a1a9dc49cb175a800655699a10065571ae2))
|
|
20
|
+
* add vite dev css flicker tips ([1744a72](https://github.com/zhangyuang/ssr/commit/1744a72fbc056532336daef4ee0a439fefe529ff))
|
|
21
|
+
* build spa support priority ([d456969](https://github.com/zhangyuang/ssr/commit/d4569697d00a720c2e820206ebb5df1002c4af8d))
|
|
22
|
+
* spa support extrajsorder cssorder ([ebc82c5](https://github.com/zhangyuang/ssr/commit/ebc82c52d35502533130fc4d6e551aed0f9d1137))
|
|
23
|
+
* spa with customeFooterScript is array ([b9508ae](https://github.com/zhangyuang/ssr/commit/b9508aea7e98bbbdaecaa318667d10d04c10aa82))
|
|
24
|
+
* support element-plus ([e13fed8](https://github.com/zhangyuang/ssr/commit/e13fed826ad634a31f3506afc0a7958340c9dc87))
|
|
25
|
+
* support jsOrderPriority🤔 cssOrderPriority🤔 ([9db9a7d](https://github.com/zhangyuang/ssr/commit/9db9a7d03e8c47a93ca459b8b8b3fad571f73960))
|
|
26
|
+
* use asynclocalstorage for get correct pinia store app context instance ([a38d3e9](https://github.com/zhangyuang/ssr/commit/a38d3e99c2a6aa6a64a20099a59fb06edba1b5ea))
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## [6.2.56](https://github.com/zhangyuang/ssr/compare/plugin-react@6.2.55...plugin-react@6.2.56) (2022-11-22)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Bug Fixes
|
|
34
|
+
|
|
35
|
+
* call judgeServerFramework in node environment prevent utils be ([47cd81a](https://github.com/zhangyuang/ssr/commit/47cd81a18a85be507c7d43c323c294f2d5b8775d))
|
|
36
|
+
* gernerate html ([08e5678](https://github.com/zhangyuang/ssr/commit/08e567877e7b6d0b4b3a6fab6ad4ea2546b0c041))
|
|
37
|
+
* pinia alias ([2256194](https://github.com/zhangyuang/ssr/commit/22561948b9d27ea6296b5f60cefb3f42d6c1d4c1))
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### Features
|
|
41
|
+
|
|
42
|
+
* support antd5 close [#250](https://github.com/zhangyuang/ssr/issues/250) ([c999536](https://github.com/zhangyuang/ssr/commit/c9995365fbd82faa30a006b51e5cd76ab307bab5))
|
|
43
|
+
* update vue alias ([36e15ac](https://github.com/zhangyuang/ssr/commit/36e15ac5d2d1398ced6abef2727970947177e6bc))
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
1
47
|
## [6.2.55](https://github.com/zhangyuang/ssr/compare/plugin-react@6.2.54...plugin-react@6.2.55) (2022-11-01)
|
|
2
48
|
|
|
3
49
|
|
package/README.md
CHANGED
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
- 可能会改动技术栈,如从 `Vue2` 升级为 `Vue3`,从 `Vue3` 降级为 `Vue2` 或 `React/Vue` 互相切换
|
|
41
41
|
- 需要在服务端渲染场景下开箱即用使用 `antd` `vant` 等流行 `ui` 库
|
|
42
42
|
- 需要能够同时支持 `Webpack`, `Vite` 两种开发工具,以便同时得到快速的启动速度 `HMR` 速度以及稳定的生产环境代码
|
|
43
|
-
- 需要在 `Vue3
|
|
43
|
+
- 需要在 `Vue3 SSR` 使用 [pinia](https://pinia.vuejs.org/) 作为数据管理方案
|
|
44
|
+
- 只是单纯的需要一个更快更好用的 `cra` 或 `vue-cli`, `ssr` 框架在纯 `csr` 场景的支持也十分优秀
|
|
44
45
|
|
|
45
46
|
## 哪些应用在使用
|
|
46
47
|
|
|
@@ -229,6 +230,7 @@ $ yarn start:vite # 以 vite 模式启动,等价于 npx ssr start --vite
|
|
|
229
230
|
- http://vue.ssr-fc.com?csr=true 部署到阿里云的 Vue SSR 应用, 以 CSR 模式访问
|
|
230
231
|
- http://vue3.ssr-fc.com?csr=true 部署到阿里云的 Vue3 SSR 应用, 以 CSR 模式访问
|
|
231
232
|
|
|
233
|
+
|
|
232
234
|
## 生态系统
|
|
233
235
|
|
|
234
236
|
| Project | Status | Description |
|
|
@@ -260,6 +262,8 @@ $ yarn start:vite # 以 vite 模式启动,等价于 npx ssr start --vite
|
|
|
260
262
|
[ssr-plugin-vue-status]: https://img.shields.io/npm/v/ssr-plugin-vue.svg
|
|
261
263
|
[ssr-plugin-vue3-status]: https://img.shields.io/npm/v/ssr-plugin-vue3.svg
|
|
262
264
|
[ssr-webpack-status]: https://img.shields.io/npm/v/ssr-webpack.svg
|
|
265
|
+
[ssr-types-status]: https://img.shields.io/npm/v/ssr-types.svg
|
|
266
|
+
|
|
263
267
|
|
|
264
268
|
[ssr]: https://github.com/zhangyuang/ssr/tree/dev/packages/cli
|
|
265
269
|
[ssr-core-react]: https://github.com/zhangyuang/ssr/tree/dev/packages/core-react
|
package/cjs/config/base.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/config/base.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/config/base.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAA;AAyD7C,QAAA,MAAM,aAAa,UAAW,YAAY,YAAY,OAAO,gCA8F5D,CAAA;AAED,OAAO,EACL,aAAa,EACd,CAAA"}
|
package/cjs/config/base.js
CHANGED
|
@@ -1,15 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a, _b, _c, _d;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.getBaseConfig = void 0;
|
|
4
5
|
const path_1 = require("path");
|
|
5
6
|
const ssr_common_utils_1 = require("ssr-common-utils");
|
|
6
7
|
const webpack = require("webpack");
|
|
8
|
+
const semver_1 = require("semver");
|
|
7
9
|
const MiniCssExtractPlugin = require((0, ssr_common_utils_1.loadModuleFromFramework)('ssr-mini-css-extract-plugin'));
|
|
8
10
|
const WebpackBar = require('webpackbar');
|
|
9
11
|
const loadModule = ssr_common_utils_1.loadModuleFromFramework;
|
|
12
|
+
const antdVersion = (_b = (_a = (0, ssr_common_utils_1.getPkgJson)().dependencies) === null || _a === void 0 ? void 0 : _a['antd']) !== null && _b !== void 0 ? _b : (_c = (0, ssr_common_utils_1.getPkgJson)().devDependencies) === null || _c === void 0 ? void 0 : _c['antd'];
|
|
13
|
+
const isAntd4 = ((_d = (0, semver_1.coerce)(antdVersion)) === null || _d === void 0 ? void 0 : _d.major) === 4;
|
|
10
14
|
const addBabelLoader = (chain, envOptions, isServer) => {
|
|
11
15
|
var _a, _b;
|
|
12
16
|
const { babelOptions, isDev } = (0, ssr_common_utils_1.loadConfig)();
|
|
17
|
+
const plugins = [
|
|
18
|
+
[loadModule('@babel/plugin-transform-runtime'), {
|
|
19
|
+
regenerator: false,
|
|
20
|
+
corejs: false,
|
|
21
|
+
helpers: true
|
|
22
|
+
}],
|
|
23
|
+
[loadModule('@babel/plugin-proposal-private-methods'), { loose: true }],
|
|
24
|
+
[loadModule('@babel/plugin-proposal-private-property-in-object'), { loose: true }],
|
|
25
|
+
...(_a = babelOptions === null || babelOptions === void 0 ? void 0 : babelOptions.plugins) !== null && _a !== void 0 ? _a : []
|
|
26
|
+
];
|
|
27
|
+
if (isAntd4) {
|
|
28
|
+
plugins.push([
|
|
29
|
+
loadModule('babel-plugin-import'),
|
|
30
|
+
{
|
|
31
|
+
libraryName: 'antd',
|
|
32
|
+
libraryDirectory: 'lib',
|
|
33
|
+
style: true
|
|
34
|
+
}, 'antd'
|
|
35
|
+
]);
|
|
36
|
+
}
|
|
37
|
+
if (!isServer && isDev) {
|
|
38
|
+
plugins.push(loadModule('react-refresh/babel'));
|
|
39
|
+
}
|
|
13
40
|
chain.use('babel-loader')
|
|
14
41
|
.loader(loadModule('babel-loader'))
|
|
15
42
|
.options({
|
|
@@ -26,26 +53,9 @@ const addBabelLoader = (chain, envOptions, isServer) => {
|
|
|
26
53
|
typescript: true,
|
|
27
54
|
runtime: 'automatic'
|
|
28
55
|
}],
|
|
29
|
-
...(
|
|
56
|
+
...(_b = babelOptions === null || babelOptions === void 0 ? void 0 : babelOptions.presets) !== null && _b !== void 0 ? _b : []
|
|
30
57
|
],
|
|
31
|
-
plugins:
|
|
32
|
-
[loadModule('@babel/plugin-transform-runtime'), {
|
|
33
|
-
regenerator: false,
|
|
34
|
-
corejs: false,
|
|
35
|
-
helpers: true
|
|
36
|
-
}],
|
|
37
|
-
[
|
|
38
|
-
loadModule('babel-plugin-import'),
|
|
39
|
-
{
|
|
40
|
-
libraryName: 'antd',
|
|
41
|
-
libraryDirectory: 'lib',
|
|
42
|
-
style: true
|
|
43
|
-
}, 'antd'
|
|
44
|
-
],
|
|
45
|
-
[loadModule('@babel/plugin-proposal-private-methods'), { loose: true }],
|
|
46
|
-
[loadModule('@babel/plugin-proposal-private-property-in-object'), { loose: true }],
|
|
47
|
-
...(_b = babelOptions === null || babelOptions === void 0 ? void 0 : babelOptions.plugins) !== null && _b !== void 0 ? _b : []
|
|
48
|
-
].concat((!isServer && isDev) ? loadModule('react-refresh/babel') : [])
|
|
58
|
+
plugins: plugins
|
|
49
59
|
})
|
|
50
60
|
.end();
|
|
51
61
|
};
|
package/cjs/config/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/config/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/config/base.ts"],"names":[],"mappings":";;;;AACA,+BAA2B;AAE3B,uDAAmH;AAEnH,mCAAkC;AAClC,mCAA+B;AAE/B,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAA,0CAAuB,EAAC,6BAA6B,CAAC,CAAC,CAAA;AAC5F,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AACxC,MAAM,UAAU,GAAG,0CAAuB,CAAA;AAE1C,MAAM,WAAW,GAAG,MAAA,MAAA,IAAA,6BAAU,GAAE,CAAC,YAAY,0CAAG,MAAM,CAAC,mCAAI,MAAA,IAAA,6BAAU,GAAE,CAAC,eAAe,0CAAG,MAAM,CAAC,CAAA;AACjG,MAAM,OAAO,GAAG,CAAA,MAAA,IAAA,eAAM,EAAC,WAAW,CAAC,0CAAE,KAAK,MAAK,CAAC,CAAA;AAChD,MAAM,cAAc,GAAG,CAAC,KAA6C,EAAE,UAAe,EAAE,QAAiB,EAAE,EAAE;;IAC3G,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,IAAA,6BAAU,GAAE,CAAA;IAC5C,MAAM,OAAO,GAAG;QACd,CAAC,UAAU,CAAC,iCAAiC,CAAC,EAAE;gBAC9C,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI;aACd,CAAC;QACF,CAAC,UAAU,CAAC,wCAAwC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACvE,CAAC,UAAU,CAAC,mDAAmD,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAClF,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,mCAAI,EAAE;KAC/B,CAAA;IACD,IAAI,OAAO,EAAE;QACX,OAAO,CAAC,IAAI,CAAC;YACX,UAAU,CAAC,qBAAqB,CAAC;YACjC;gBACE,WAAW,EAAE,MAAM;gBACnB,gBAAgB,EAAE,KAAK;gBACvB,KAAK,EAAE,IAAI;aACZ,EAAE,MAAM;SACV,CAAC,CAAA;KACH;IACD,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE;QACtB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAA;KAChD;IACD,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;SACtB,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;SAClC,OAAO,CAAC;QACP,cAAc,EAAE,IAAI;QACpB,gBAAgB,EAAE,KAAK;QACvB,UAAU,EAAE,aAAa;QACzB,OAAO,EAAE;YACP;gBACE,UAAU,CAAC,mBAAmB,CAAC;gBAC/B,UAAU;aACX;YACD,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE;oBACrC,IAAI,EAAE,KAAK;oBACX,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,WAAW;iBACrB,CAAC;YACF,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,mCAAI,EAAE;SAC/B;QACD,OAAO,EAAE,OAAO;KACjB,CAAC;SACD,GAAG,EAAE,CAAA;AACV,CAAC,CAAA;AACD,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,QAAiB,EAAE,EAAE;;IAC/D,MAAM,MAAM,GAAG,IAAA,6BAAU,GAAE,CAAA;IAC3B,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAA;IAC/H,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAgB,CAAA;IACzC,MAAM,UAAU,GAAG;QACjB,OAAO,EAAE,KAAK;QACd,GAAG,aAAa;KACjB,CAAA;IAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChB,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IACvC,KAAK;SACF,OAAO;SACP,OAAO;SACP,GAAG,CAAC,cAAc,CAAC;SACnB,GAAG,CAAC,IAAA,WAAI,EAAC,IAAA,yBAAM,GAAE,EAAE,gBAAgB,CAAC,CAAC;SACrC,GAAG,EAAE;SACL,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC;SACtC,GAAG,EAAE;SACL,KAAK;SACL,GAAG,EAAE,CAAA;IAER,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACzC,KAAK,CAAC,OAAO,CAAC,KAAK;aAChB,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IACF,IAAA,gCAAa,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAE9B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM;SAC7B,IAAI,CAAC,cAAc,CAAC;SACpB,IAAI,CAAC,wBAAwB,CAAC;SAC9B,OAAO;SACP,GAAG,CAAC,sBAAsB,CAAC;SAC3B,GAAG,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAA+B,mCAAI,EAAE,CAAC;SACxD,GAAG,EAAE,CAAA;IAER,KAAK,CAAC,MAAM;SACT,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,CAAC,OAAO,CAAC;SACb,IAAI,CAAC,iBAAiB,CAAC;SACvB,GAAG,EAAE,CAAA;IAER,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;SACxB,IAAI,CAAC,4BAA4B,CAAC;SAClC,IAAI,CAAC,wBAAwB,CAAC;SAC9B,OAAO;SACP,GAAG,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAC,CAAA;IAErF,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAA+B,mCAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAA;IAE1J,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;IACjD,cAAc,CAAC,mBAAmB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;IAEzD,IAAA,2BAAQ,EAAC,KAAK,EAAE,QAAQ,EAAE;QACxB,IAAI,EAAE,KAAK;QACX,QAAQ;QACR,aAAa,EAAE,CAAC;KACjB,CAAC,CAAA;IAEF,IAAA,2BAAQ,EAAC,KAAK,EAAE,SAAS,EAAE;QACzB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,aAAa;QACrB,QAAQ;QACR,aAAa,EAAE,CAAC;KACjB,CAAC,CAAA;IAEF,KAAK,CAAC,MAAM;SACT,IAAI,CAAC,OAAO,CAAC;SACb,IAAI,CAAC,gCAAgC,CAAC;SACtC,GAAG,CAAC,aAAa,CAAC;SAClB,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;SACjC,OAAO,CAAC;QACP,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,CAAC,QAAQ;KACpB,CAAC,CAAA;IAEJ,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YACpD,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,mBAAmB;YACtE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,yBAAyB;SACxF,CAAC,CAAC,CAAA;IAEH,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC;QAC5C,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;QACpC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KACxC,CAAC,CAAC,CAAA;IACH,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACnD,GAAG,OAAO,CAAC,GAAG;YACd,aAAa,EAAE,CAAC,QAAQ;YACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,CAAC,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC;YAC/C,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI;SAChB,CAAC,CAAC,CAAA;IACH,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAChC,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAGC,sCAAa"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { ISSRContext, IConfig } from 'ssr-types';
|
|
2
3
|
import { Routes } from './create-router';
|
|
3
|
-
declare const serverRender: (ctx: ISSRContext, config: IConfig) => Promise<string | NodeJS.ReadableStream
|
|
4
|
+
declare const serverRender: (ctx: ISSRContext, config: IConfig) => Promise<string | import("stream").Readable | NodeJS.ReadableStream | {
|
|
5
|
+
html: string;
|
|
6
|
+
teleportsContext: any;
|
|
7
|
+
}>;
|
|
4
8
|
export { serverRender, Routes };
|
|
5
9
|
//# sourceMappingURL=server-entry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-entry.d.ts","sourceRoot":"","sources":["../../src/entry/server-entry.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server-entry.d.ts","sourceRoot":"","sources":["../../src/entry/server-entry.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAmD,MAAM,WAAW,CAAA;AAGjG,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAIxC,QAAA,MAAM,YAAY,QAAe,WAAW,UAAU,OAAO;;;EA2E5D,CAAA;AAED,OAAO,EACL,YAAY,EACZ,MAAM,EACP,CAAA"}
|
|
@@ -5,6 +5,8 @@ const React = require("react");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const react_router_dom_1 = require("react-router-dom");
|
|
7
7
|
const server_1 = require("react-dom/server");
|
|
8
|
+
// @ts-expect-error
|
|
9
|
+
const server_2 = require("ssr-react-dom/server");
|
|
8
10
|
const ssr_common_utils_1 = require("ssr-common-utils");
|
|
9
11
|
const ssr_serialize_javascript_1 = require("ssr-serialize-javascript");
|
|
10
12
|
const create_context_1 = require("_build/create-context");
|
|
@@ -12,71 +14,71 @@ const create_router_1 = require("./create-router");
|
|
|
12
14
|
Object.defineProperty(exports, "Routes", { enumerable: true, get: function () { return create_router_1.Routes; } });
|
|
13
15
|
const { FeRoutes, layoutFetch, state, Layout } = create_router_1.Routes;
|
|
14
16
|
const serverRender = async (ctx, config) => {
|
|
15
|
-
var _a
|
|
17
|
+
var _a;
|
|
16
18
|
const { mode, parallelFetch, prefix, isVite, isDev, clientPrefix, stream } = config;
|
|
17
19
|
const rawPath = (_a = ctx.request.path) !== null && _a !== void 0 ? _a : ctx.request.routerPath;
|
|
18
20
|
const path = (0, ssr_common_utils_1.normalizePath)(rawPath, prefix);
|
|
19
21
|
const routeItem = (0, ssr_common_utils_1.findRoute)(FeRoutes, path);
|
|
20
|
-
(0, ssr_common_utils_1.
|
|
21
|
-
if (!routeItem) {
|
|
22
|
-
throw new Error(`
|
|
23
|
-
With Path: ${path} search component failed
|
|
24
|
-
If you create new folder or component file, please restart server by npm start
|
|
25
|
-
`);
|
|
26
|
-
}
|
|
22
|
+
(0, ssr_common_utils_1.checkRoute)({ routeItem, path });
|
|
27
23
|
const { fetch, webpackChunkName, component } = routeItem;
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const injectState = isCsr ? React.createElement("script", { dangerouslySetInnerHTML: { __html: `window.prefix="${prefix}";${clientPrefix ? `window.clientPrefix="${clientPrefix}";` : ''}` } }) : React.createElement("script", { dangerouslySetInnerHTML: {
|
|
63
|
-
__html: `window.__USE_SSR__=true; window.__INITIAL_DATA__ =${(0, ssr_serialize_javascript_1.serialize)(combineData)}; window.prefix="${prefix}";${clientPrefix ? `window.clientPrefix="${clientPrefix}";` : ''}`
|
|
64
|
-
} });
|
|
65
|
-
// with jsx type error, use createElement here
|
|
66
|
-
const ele = (0, react_1.createElement)(react_router_dom_1.StaticRouter, {
|
|
67
|
-
location: ctx.request.url,
|
|
68
|
-
basename: prefix === '/' ? undefined : prefix
|
|
69
|
-
}, (0, react_1.createElement)(create_context_1.STORE_CONTEXT.Provider, {
|
|
70
|
-
value: {
|
|
71
|
-
state: combineData
|
|
24
|
+
const fn = async () => {
|
|
25
|
+
var _a;
|
|
26
|
+
const dynamicCssOrder = await (0, ssr_common_utils_1.getAsyncCssChunk)(ctx, webpackChunkName, config);
|
|
27
|
+
const dynamicJsOrder = await (0, ssr_common_utils_1.getAsyncJsChunk)(ctx, webpackChunkName, config);
|
|
28
|
+
const manifest = await (0, ssr_common_utils_1.getManifest)(config);
|
|
29
|
+
const injectCss = ((isVite && isDev) ? [
|
|
30
|
+
React.createElement("script", { src: "/@vite/client", type: "module", key: "vite-client" }),
|
|
31
|
+
React.createElement("script", { key: "vite-react-refresh", type: "module", dangerouslySetInnerHTML: {
|
|
32
|
+
__html: ssr_common_utils_1.reactRefreshFragment
|
|
33
|
+
} })
|
|
34
|
+
] : dynamicCssOrder.map(css => manifest[css]).filter(Boolean).map(css => React.createElement("link", { rel: 'stylesheet', key: css, href: css })))
|
|
35
|
+
.concat((isVite && isDev) ? [] : dynamicJsOrder.map(js => manifest[js]).filter(Boolean).map(js => React.createElement("link", { href: js, as: "script", rel: isVite ? 'modulepreload' : 'preload', key: js })));
|
|
36
|
+
const injectScript = [
|
|
37
|
+
...(isVite ? [React.createElement("script", { key: "viteWindowInit", dangerouslySetInnerHTML: {
|
|
38
|
+
__html: 'window.__USE_VITE__=true'
|
|
39
|
+
} })] : []),
|
|
40
|
+
...((isVite && isDev) ? [React.createElement("script", { type: "module", src: '/node_modules/ssr-plugin-react/esm/entry/client-entry.js', key: "vite-react-entry" })] : []),
|
|
41
|
+
...dynamicJsOrder.map(js => manifest[js]).filter(Boolean).map(item => React.createElement("script", { key: item, src: item, type: isVite ? 'module' : 'text/javascript' }))
|
|
42
|
+
];
|
|
43
|
+
const staticList = {
|
|
44
|
+
injectCss,
|
|
45
|
+
injectScript
|
|
46
|
+
};
|
|
47
|
+
const isCsr = !!(mode === 'csr' || ((_a = ctx.request.query) === null || _a === void 0 ? void 0 : _a.csr));
|
|
48
|
+
const Component = isCsr ? React.Fragment : (component.name === 'dynamicComponent' ? (await component()).default : component);
|
|
49
|
+
if (isCsr) {
|
|
50
|
+
(0, ssr_common_utils_1.logGreen)(`Current path ${path} use csr render mode`);
|
|
51
|
+
}
|
|
52
|
+
let [layoutFetchData, fetchData] = [{}, {}];
|
|
53
|
+
if (!isCsr) {
|
|
54
|
+
const currentFetch = fetch ? (await fetch()).default : null;
|
|
55
|
+
const lF = layoutFetch ? layoutFetch({ ctx }) : Promise.resolve({});
|
|
56
|
+
const CF = currentFetch ? currentFetch({ ctx }) : Promise.resolve({});
|
|
57
|
+
[layoutFetchData, fetchData] = parallelFetch ? await Promise.all([lF, CF]) : [await lF, await CF];
|
|
72
58
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
59
|
+
const combineData = isCsr ? null : Object.assign(state !== null && state !== void 0 ? state : {}, layoutFetchData !== null && layoutFetchData !== void 0 ? layoutFetchData : {}, fetchData !== null && fetchData !== void 0 ? fetchData : {});
|
|
60
|
+
const injectState = isCsr ? React.createElement("script", { dangerouslySetInnerHTML: { __html: `window.prefix="${prefix}";${clientPrefix ? `window.clientPrefix="${clientPrefix}";` : ''}` } }) : React.createElement("script", { dangerouslySetInnerHTML: {
|
|
61
|
+
__html: `window.__USE_SSR__=true; window.__INITIAL_DATA__ =${(0, ssr_serialize_javascript_1.serialize)(combineData)}; window.prefix="${prefix}";${clientPrefix ? `window.clientPrefix="${clientPrefix}";` : ''}`
|
|
62
|
+
} });
|
|
63
|
+
// with jsx type error, use createElement here
|
|
64
|
+
const ele = (0, react_1.createElement)(react_router_dom_1.StaticRouter, {
|
|
65
|
+
location: ctx.request.url,
|
|
66
|
+
basename: prefix === '/' ? undefined : prefix
|
|
67
|
+
}, (0, react_1.createElement)(create_context_1.STORE_CONTEXT.Provider, {
|
|
68
|
+
value: {
|
|
69
|
+
state: combineData
|
|
70
|
+
}
|
|
71
|
+
}, (0, react_1.createElement)(Layout, {
|
|
72
|
+
ctx: ctx,
|
|
73
|
+
config: config,
|
|
74
|
+
staticList: staticList,
|
|
75
|
+
injectState: injectState
|
|
76
|
+
}, (0, react_1.createElement)(Component, null))));
|
|
77
|
+
return stream ? server_2.renderToNodeStream(ele) : (0, server_1.renderToString)(ele);
|
|
78
|
+
};
|
|
79
|
+
return await ssr_common_utils_1.localStorageWrapper.run({
|
|
80
|
+
context: create_context_1.STORE_CONTEXT
|
|
81
|
+
}, fn);
|
|
80
82
|
};
|
|
81
83
|
exports.serverRender = serverRender;
|
|
82
84
|
//# sourceMappingURL=server-entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-entry.js","sourceRoot":"","sources":["../../src/entry/server-entry.tsx"],"names":[],"mappings":";;;AAAA,+BAA8B;AAC9B,iCAAqC;AACrC,uDAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"server-entry.js","sourceRoot":"","sources":["../../src/entry/server-entry.tsx"],"names":[],"mappings":"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"}
|
package/esm/config/base.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/config/base.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/config/base.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAA;AAyD7C,QAAA,MAAM,aAAa,UAAW,YAAY,YAAY,OAAO,gCA8F5D,CAAA;AAED,OAAO,EACL,aAAa,EACd,CAAA"}
|
package/esm/config/base.js
CHANGED
|
@@ -1,12 +1,39 @@
|
|
|
1
|
+
var _a, _b, _c, _d;
|
|
1
2
|
import { join } from 'path';
|
|
2
|
-
import { getCwd, loadConfig, setStyle, addImageChain, loadModuleFromFramework } from 'ssr-common-utils';
|
|
3
|
+
import { getCwd, loadConfig, setStyle, addImageChain, loadModuleFromFramework, getPkgJson } from 'ssr-common-utils';
|
|
3
4
|
import * as webpack from 'webpack';
|
|
5
|
+
import { coerce } from 'semver';
|
|
4
6
|
const MiniCssExtractPlugin = require(loadModuleFromFramework('ssr-mini-css-extract-plugin'));
|
|
5
7
|
const WebpackBar = require('webpackbar');
|
|
6
8
|
const loadModule = loadModuleFromFramework;
|
|
9
|
+
const antdVersion = (_b = (_a = getPkgJson().dependencies) === null || _a === void 0 ? void 0 : _a['antd']) !== null && _b !== void 0 ? _b : (_c = getPkgJson().devDependencies) === null || _c === void 0 ? void 0 : _c['antd'];
|
|
10
|
+
const isAntd4 = ((_d = coerce(antdVersion)) === null || _d === void 0 ? void 0 : _d.major) === 4;
|
|
7
11
|
const addBabelLoader = (chain, envOptions, isServer) => {
|
|
8
12
|
var _a, _b;
|
|
9
13
|
const { babelOptions, isDev } = loadConfig();
|
|
14
|
+
const plugins = [
|
|
15
|
+
[loadModule('@babel/plugin-transform-runtime'), {
|
|
16
|
+
regenerator: false,
|
|
17
|
+
corejs: false,
|
|
18
|
+
helpers: true
|
|
19
|
+
}],
|
|
20
|
+
[loadModule('@babel/plugin-proposal-private-methods'), { loose: true }],
|
|
21
|
+
[loadModule('@babel/plugin-proposal-private-property-in-object'), { loose: true }],
|
|
22
|
+
...(_a = babelOptions === null || babelOptions === void 0 ? void 0 : babelOptions.plugins) !== null && _a !== void 0 ? _a : []
|
|
23
|
+
];
|
|
24
|
+
if (isAntd4) {
|
|
25
|
+
plugins.push([
|
|
26
|
+
loadModule('babel-plugin-import'),
|
|
27
|
+
{
|
|
28
|
+
libraryName: 'antd',
|
|
29
|
+
libraryDirectory: 'lib',
|
|
30
|
+
style: true
|
|
31
|
+
}, 'antd'
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
if (!isServer && isDev) {
|
|
35
|
+
plugins.push(loadModule('react-refresh/babel'));
|
|
36
|
+
}
|
|
10
37
|
chain.use('babel-loader')
|
|
11
38
|
.loader(loadModule('babel-loader'))
|
|
12
39
|
.options({
|
|
@@ -23,26 +50,9 @@ const addBabelLoader = (chain, envOptions, isServer) => {
|
|
|
23
50
|
typescript: true,
|
|
24
51
|
runtime: 'automatic'
|
|
25
52
|
}],
|
|
26
|
-
...(
|
|
53
|
+
...(_b = babelOptions === null || babelOptions === void 0 ? void 0 : babelOptions.presets) !== null && _b !== void 0 ? _b : []
|
|
27
54
|
],
|
|
28
|
-
plugins:
|
|
29
|
-
[loadModule('@babel/plugin-transform-runtime'), {
|
|
30
|
-
regenerator: false,
|
|
31
|
-
corejs: false,
|
|
32
|
-
helpers: true
|
|
33
|
-
}],
|
|
34
|
-
[
|
|
35
|
-
loadModule('babel-plugin-import'),
|
|
36
|
-
{
|
|
37
|
-
libraryName: 'antd',
|
|
38
|
-
libraryDirectory: 'lib',
|
|
39
|
-
style: true
|
|
40
|
-
}, 'antd'
|
|
41
|
-
],
|
|
42
|
-
[loadModule('@babel/plugin-proposal-private-methods'), { loose: true }],
|
|
43
|
-
[loadModule('@babel/plugin-proposal-private-property-in-object'), { loose: true }],
|
|
44
|
-
...(_b = babelOptions === null || babelOptions === void 0 ? void 0 : babelOptions.plugins) !== null && _b !== void 0 ? _b : []
|
|
45
|
-
].concat((!isServer && isDev) ? loadModule('react-refresh/babel') : [])
|
|
55
|
+
plugins: plugins
|
|
46
56
|
})
|
|
47
57
|
.end();
|
|
48
58
|
};
|
package/esm/config/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/config/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/config/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { ISSRContext, IConfig } from 'ssr-types';
|
|
2
3
|
import { Routes } from './create-router';
|
|
3
|
-
declare const serverRender: (ctx: ISSRContext, config: IConfig) => Promise<string | NodeJS.ReadableStream
|
|
4
|
+
declare const serverRender: (ctx: ISSRContext, config: IConfig) => Promise<string | import("stream").Readable | NodeJS.ReadableStream | {
|
|
5
|
+
html: string;
|
|
6
|
+
teleportsContext: any;
|
|
7
|
+
}>;
|
|
4
8
|
export { serverRender, Routes };
|
|
5
9
|
//# sourceMappingURL=server-entry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-entry.d.ts","sourceRoot":"","sources":["../../src/entry/server-entry.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server-entry.d.ts","sourceRoot":"","sources":["../../src/entry/server-entry.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAmD,MAAM,WAAW,CAAA;AAGjG,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAIxC,QAAA,MAAM,YAAY,QAAe,WAAW,UAAU,OAAO;;;EA2E5D,CAAA;AAED,OAAO,EACL,YAAY,EACZ,MAAM,EACP,CAAA"}
|
|
@@ -1,78 +1,80 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { createElement } from 'react';
|
|
3
3
|
import { StaticRouter } from 'react-router-dom';
|
|
4
|
-
import { renderToString
|
|
5
|
-
|
|
4
|
+
import { renderToString } from 'react-dom/server';
|
|
5
|
+
// @ts-expect-error
|
|
6
|
+
import { renderToNodeStream } from 'ssr-react-dom/server';
|
|
7
|
+
import { findRoute, getManifest, logGreen, normalizePath, getAsyncCssChunk, getAsyncJsChunk, reactRefreshFragment, localStorageWrapper, checkRoute } from 'ssr-common-utils';
|
|
6
8
|
import { serialize } from 'ssr-serialize-javascript';
|
|
7
9
|
import { STORE_CONTEXT as Context } from '_build/create-context';
|
|
8
10
|
import { Routes } from './create-router';
|
|
9
11
|
const { FeRoutes, layoutFetch, state, Layout } = Routes;
|
|
10
12
|
const serverRender = async (ctx, config) => {
|
|
11
|
-
var _a
|
|
13
|
+
var _a;
|
|
12
14
|
const { mode, parallelFetch, prefix, isVite, isDev, clientPrefix, stream } = config;
|
|
13
15
|
const rawPath = (_a = ctx.request.path) !== null && _a !== void 0 ? _a : ctx.request.routerPath;
|
|
14
16
|
const path = normalizePath(rawPath, prefix);
|
|
15
17
|
const routeItem = findRoute(FeRoutes, path);
|
|
16
|
-
|
|
17
|
-
if (!routeItem) {
|
|
18
|
-
throw new Error(`
|
|
19
|
-
With Path: ${path} search component failed
|
|
20
|
-
If you create new folder or component file, please restart server by npm start
|
|
21
|
-
`);
|
|
22
|
-
}
|
|
18
|
+
checkRoute({ routeItem, path });
|
|
23
19
|
const { fetch, webpackChunkName, component } = routeItem;
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const injectState = isCsr ? React.createElement("script", { dangerouslySetInnerHTML: { __html: `window.prefix="${prefix}";${clientPrefix ? `window.clientPrefix="${clientPrefix}";` : ''}` } }) : React.createElement("script", { dangerouslySetInnerHTML: {
|
|
59
|
-
__html: `window.__USE_SSR__=true; window.__INITIAL_DATA__ =${serialize(combineData)}; window.prefix="${prefix}";${clientPrefix ? `window.clientPrefix="${clientPrefix}";` : ''}`
|
|
60
|
-
} });
|
|
61
|
-
// with jsx type error, use createElement here
|
|
62
|
-
const ele = createElement(StaticRouter, {
|
|
63
|
-
location: ctx.request.url,
|
|
64
|
-
basename: prefix === '/' ? undefined : prefix
|
|
65
|
-
}, createElement(Context.Provider, {
|
|
66
|
-
value: {
|
|
67
|
-
state: combineData
|
|
20
|
+
const fn = async () => {
|
|
21
|
+
var _a;
|
|
22
|
+
const dynamicCssOrder = await getAsyncCssChunk(ctx, webpackChunkName, config);
|
|
23
|
+
const dynamicJsOrder = await getAsyncJsChunk(ctx, webpackChunkName, config);
|
|
24
|
+
const manifest = await getManifest(config);
|
|
25
|
+
const injectCss = ((isVite && isDev) ? [
|
|
26
|
+
React.createElement("script", { src: "/@vite/client", type: "module", key: "vite-client" }),
|
|
27
|
+
React.createElement("script", { key: "vite-react-refresh", type: "module", dangerouslySetInnerHTML: {
|
|
28
|
+
__html: reactRefreshFragment
|
|
29
|
+
} })
|
|
30
|
+
] : dynamicCssOrder.map(css => manifest[css]).filter(Boolean).map(css => React.createElement("link", { rel: 'stylesheet', key: css, href: css })))
|
|
31
|
+
.concat((isVite && isDev) ? [] : dynamicJsOrder.map(js => manifest[js]).filter(Boolean).map(js => React.createElement("link", { href: js, as: "script", rel: isVite ? 'modulepreload' : 'preload', key: js })));
|
|
32
|
+
const injectScript = [
|
|
33
|
+
...(isVite ? [React.createElement("script", { key: "viteWindowInit", dangerouslySetInnerHTML: {
|
|
34
|
+
__html: 'window.__USE_VITE__=true'
|
|
35
|
+
} })] : []),
|
|
36
|
+
...((isVite && isDev) ? [React.createElement("script", { type: "module", src: '/node_modules/ssr-plugin-react/esm/entry/client-entry.js', key: "vite-react-entry" })] : []),
|
|
37
|
+
...dynamicJsOrder.map(js => manifest[js]).filter(Boolean).map(item => React.createElement("script", { key: item, src: item, type: isVite ? 'module' : 'text/javascript' }))
|
|
38
|
+
];
|
|
39
|
+
const staticList = {
|
|
40
|
+
injectCss,
|
|
41
|
+
injectScript
|
|
42
|
+
};
|
|
43
|
+
const isCsr = !!(mode === 'csr' || ((_a = ctx.request.query) === null || _a === void 0 ? void 0 : _a.csr));
|
|
44
|
+
const Component = isCsr ? React.Fragment : (component.name === 'dynamicComponent' ? (await component()).default : component);
|
|
45
|
+
if (isCsr) {
|
|
46
|
+
logGreen(`Current path ${path} use csr render mode`);
|
|
47
|
+
}
|
|
48
|
+
let [layoutFetchData, fetchData] = [{}, {}];
|
|
49
|
+
if (!isCsr) {
|
|
50
|
+
const currentFetch = fetch ? (await fetch()).default : null;
|
|
51
|
+
const lF = layoutFetch ? layoutFetch({ ctx }) : Promise.resolve({});
|
|
52
|
+
const CF = currentFetch ? currentFetch({ ctx }) : Promise.resolve({});
|
|
53
|
+
[layoutFetchData, fetchData] = parallelFetch ? await Promise.all([lF, CF]) : [await lF, await CF];
|
|
68
54
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
55
|
+
const combineData = isCsr ? null : Object.assign(state !== null && state !== void 0 ? state : {}, layoutFetchData !== null && layoutFetchData !== void 0 ? layoutFetchData : {}, fetchData !== null && fetchData !== void 0 ? fetchData : {});
|
|
56
|
+
const injectState = isCsr ? React.createElement("script", { dangerouslySetInnerHTML: { __html: `window.prefix="${prefix}";${clientPrefix ? `window.clientPrefix="${clientPrefix}";` : ''}` } }) : React.createElement("script", { dangerouslySetInnerHTML: {
|
|
57
|
+
__html: `window.__USE_SSR__=true; window.__INITIAL_DATA__ =${serialize(combineData)}; window.prefix="${prefix}";${clientPrefix ? `window.clientPrefix="${clientPrefix}";` : ''}`
|
|
58
|
+
} });
|
|
59
|
+
// with jsx type error, use createElement here
|
|
60
|
+
const ele = createElement(StaticRouter, {
|
|
61
|
+
location: ctx.request.url,
|
|
62
|
+
basename: prefix === '/' ? undefined : prefix
|
|
63
|
+
}, createElement(Context.Provider, {
|
|
64
|
+
value: {
|
|
65
|
+
state: combineData
|
|
66
|
+
}
|
|
67
|
+
}, createElement(Layout, {
|
|
68
|
+
ctx: ctx,
|
|
69
|
+
config: config,
|
|
70
|
+
staticList: staticList,
|
|
71
|
+
injectState: injectState
|
|
72
|
+
}, createElement(Component, null))));
|
|
73
|
+
return stream ? renderToNodeStream(ele) : renderToString(ele);
|
|
74
|
+
};
|
|
75
|
+
return await localStorageWrapper.run({
|
|
76
|
+
context: Context
|
|
77
|
+
}, fn);
|
|
76
78
|
};
|
|
77
79
|
export { serverRender, Routes };
|
|
78
80
|
//# sourceMappingURL=server-entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-entry.js","sourceRoot":"","sources":["../../src/entry/server-entry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"server-entry.js","sourceRoot":"","sources":["../../src/entry/server-entry.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ssr-plugin-react",
|
|
3
|
-
"version": "6.2.
|
|
3
|
+
"version": "6.2.57",
|
|
4
4
|
"description": "plugin-react for ssr",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"module": "./esm/index.js",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"@babel/plugin-transform-runtime": "^7.9.6",
|
|
38
38
|
"@babel/preset-env": "^7.5.5",
|
|
39
39
|
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.5",
|
|
40
|
+
"@types/semver": "^7.3.13",
|
|
40
41
|
"@vitejs/plugin-react": "^1.3.2",
|
|
41
42
|
"babel-loader": "^8.0.4",
|
|
42
43
|
"babel-plugin-import": "1.13.3",
|
|
@@ -46,7 +47,6 @@
|
|
|
46
47
|
"file-loader": "^6.2.0",
|
|
47
48
|
"less": "^4.1.1",
|
|
48
49
|
"less-loader": "^7.3.0",
|
|
49
|
-
"ssr-mini-css-extract-plugin": "^1.0.0",
|
|
50
50
|
"optimize-css-assets-webpack-plugin": "^6.0.0",
|
|
51
51
|
"ora": "^4.0.4",
|
|
52
52
|
"postcss": "^8.0.0",
|
|
@@ -62,8 +62,11 @@
|
|
|
62
62
|
"react-refresh": "^0.12.0",
|
|
63
63
|
"react-router": "^5.2.1",
|
|
64
64
|
"react-router-dom": "^5.1.2",
|
|
65
|
+
"semver": "^7.3.8",
|
|
65
66
|
"ssr-common-utils": "^6.0.0",
|
|
66
67
|
"ssr-hoc-react": "^6.2.7",
|
|
68
|
+
"ssr-mini-css-extract-plugin": "^1.0.0",
|
|
69
|
+
"ssr-react-dom": "^17.0.9",
|
|
67
70
|
"ssr-serialize-javascript": "^6.0.0",
|
|
68
71
|
"ssr-vite-plugin-style-import": "^2.0.1",
|
|
69
72
|
"ssr-webpack": "^6.2.10",
|
package/src/config/base.ts
CHANGED
|
@@ -1,16 +1,42 @@
|
|
|
1
1
|
|
|
2
2
|
import { join } from 'path'
|
|
3
3
|
import { Mode } from 'ssr-types'
|
|
4
|
-
import { getCwd, loadConfig, setStyle, addImageChain, loadModuleFromFramework } from 'ssr-common-utils'
|
|
4
|
+
import { getCwd, loadConfig, setStyle, addImageChain, loadModuleFromFramework, getPkgJson } from 'ssr-common-utils'
|
|
5
5
|
import * as WebpackChain from 'webpack-chain'
|
|
6
6
|
import * as webpack from 'webpack'
|
|
7
|
+
import { coerce } from 'semver'
|
|
7
8
|
|
|
8
9
|
const MiniCssExtractPlugin = require(loadModuleFromFramework('ssr-mini-css-extract-plugin'))
|
|
9
10
|
const WebpackBar = require('webpackbar')
|
|
10
11
|
const loadModule = loadModuleFromFramework
|
|
11
12
|
|
|
13
|
+
const antdVersion = getPkgJson().dependencies?.['antd'] ?? getPkgJson().devDependencies?.['antd']
|
|
14
|
+
const isAntd4 = coerce(antdVersion)?.major === 4
|
|
12
15
|
const addBabelLoader = (chain: WebpackChain.Rule<WebpackChain.Module>, envOptions: any, isServer: boolean) => {
|
|
13
16
|
const { babelOptions, isDev } = loadConfig()
|
|
17
|
+
const plugins = [
|
|
18
|
+
[loadModule('@babel/plugin-transform-runtime'), {
|
|
19
|
+
regenerator: false,
|
|
20
|
+
corejs: false,
|
|
21
|
+
helpers: true
|
|
22
|
+
}],
|
|
23
|
+
[loadModule('@babel/plugin-proposal-private-methods'), { loose: true }],
|
|
24
|
+
[loadModule('@babel/plugin-proposal-private-property-in-object'), { loose: true }],
|
|
25
|
+
...babelOptions?.plugins ?? []
|
|
26
|
+
]
|
|
27
|
+
if (isAntd4) {
|
|
28
|
+
plugins.push([
|
|
29
|
+
loadModule('babel-plugin-import'),
|
|
30
|
+
{
|
|
31
|
+
libraryName: 'antd',
|
|
32
|
+
libraryDirectory: 'lib',
|
|
33
|
+
style: true
|
|
34
|
+
}, 'antd'
|
|
35
|
+
])
|
|
36
|
+
}
|
|
37
|
+
if (!isServer && isDev) {
|
|
38
|
+
plugins.push(loadModule('react-refresh/babel'))
|
|
39
|
+
}
|
|
14
40
|
chain.use('babel-loader')
|
|
15
41
|
.loader(loadModule('babel-loader'))
|
|
16
42
|
.options({
|
|
@@ -29,24 +55,7 @@ const addBabelLoader = (chain: WebpackChain.Rule<WebpackChain.Module>, envOption
|
|
|
29
55
|
}],
|
|
30
56
|
...babelOptions?.presets ?? []
|
|
31
57
|
],
|
|
32
|
-
plugins:
|
|
33
|
-
[loadModule('@babel/plugin-transform-runtime'), {
|
|
34
|
-
regenerator: false,
|
|
35
|
-
corejs: false,
|
|
36
|
-
helpers: true
|
|
37
|
-
}],
|
|
38
|
-
[
|
|
39
|
-
loadModule('babel-plugin-import'),
|
|
40
|
-
{
|
|
41
|
-
libraryName: 'antd',
|
|
42
|
-
libraryDirectory: 'lib',
|
|
43
|
-
style: true
|
|
44
|
-
}, 'antd'
|
|
45
|
-
],
|
|
46
|
-
[loadModule('@babel/plugin-proposal-private-methods'), { loose: true }],
|
|
47
|
-
[loadModule('@babel/plugin-proposal-private-property-in-object'), { loose: true }],
|
|
48
|
-
...babelOptions?.plugins ?? []
|
|
49
|
-
].concat((!isServer && isDev) ? loadModule('react-refresh/babel') : [])
|
|
58
|
+
plugins: plugins
|
|
50
59
|
})
|
|
51
60
|
.end()
|
|
52
61
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import * as React from 'react'
|
|
2
2
|
import { createElement } from 'react'
|
|
3
3
|
import { StaticRouter } from 'react-router-dom'
|
|
4
|
-
import { renderToString
|
|
5
|
-
import {
|
|
4
|
+
import { renderToString } from 'react-dom/server'
|
|
5
|
+
import type { renderToNodeStream as ReactStreamType } from 'react-dom/server'
|
|
6
|
+
// @ts-expect-error
|
|
7
|
+
import { renderToNodeStream } from 'ssr-react-dom/server'
|
|
8
|
+
import { findRoute, getManifest, logGreen, normalizePath, getAsyncCssChunk, getAsyncJsChunk, reactRefreshFragment, localStorageWrapper, checkRoute } from 'ssr-common-utils'
|
|
6
9
|
import { ISSRContext, IConfig, ReactESMPreloadFeRouteItem, DynamicFC, StaticFC } from 'ssr-types'
|
|
7
10
|
import { serialize } from 'ssr-serialize-javascript'
|
|
8
11
|
import { STORE_CONTEXT as Context } from '_build/create-context'
|
|
@@ -15,77 +18,76 @@ const serverRender = async (ctx: ISSRContext, config: IConfig) => {
|
|
|
15
18
|
const rawPath = ctx.request.path ?? ctx.request.routerPath
|
|
16
19
|
const path = normalizePath(rawPath, prefix)
|
|
17
20
|
const routeItem = findRoute<ReactESMPreloadFeRouteItem>(FeRoutes, path)
|
|
18
|
-
|
|
21
|
+
checkRoute({ routeItem, path })
|
|
22
|
+
const { fetch, webpackChunkName, component } = routeItem
|
|
19
23
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
`)
|
|
25
|
-
}
|
|
24
|
+
const fn = async () => {
|
|
25
|
+
const dynamicCssOrder = await getAsyncCssChunk(ctx, webpackChunkName, config)
|
|
26
|
+
const dynamicJsOrder = await getAsyncJsChunk(ctx, webpackChunkName, config)
|
|
27
|
+
const manifest = await getManifest(config)
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
const injectCss = ((isVite && isDev) ? [
|
|
30
|
+
<script src="/@vite/client" type="module" key="vite-client" />,
|
|
31
|
+
<script key="vite-react-refresh" type="module" dangerouslySetInnerHTML={{
|
|
32
|
+
__html: reactRefreshFragment
|
|
33
|
+
}} />
|
|
34
|
+
] : dynamicCssOrder.map(css => manifest[css]).filter(Boolean).map(css => <link rel='stylesheet' key={css} href={css} />))
|
|
35
|
+
.concat((isVite && isDev) ? [] : dynamicJsOrder.map(js => manifest[js]).filter(Boolean).map(js =>
|
|
36
|
+
<link href={js} as="script" rel={isVite ? 'modulepreload' : 'preload'} key={js} />
|
|
37
|
+
))
|
|
31
38
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
const injectScript = [
|
|
40
|
+
...(isVite ? [<script key="viteWindowInit" dangerouslySetInnerHTML={{
|
|
41
|
+
__html: 'window.__USE_VITE__=true'
|
|
42
|
+
}} />] : []),
|
|
43
|
+
...((isVite && isDev) ? [<script type="module" src='/node_modules/ssr-plugin-react/esm/entry/client-entry.js' key="vite-react-entry" />] : []),
|
|
44
|
+
...dynamicJsOrder.map(js => manifest[js]).filter(Boolean).map(item => <script key={item} src={item} type={isVite ? 'module' : 'text/javascript'} />)
|
|
45
|
+
]
|
|
46
|
+
const staticList = {
|
|
47
|
+
injectCss,
|
|
48
|
+
injectScript
|
|
49
|
+
}
|
|
41
50
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
__html: 'window.__USE_VITE__=true'
|
|
45
|
-
}} />] : []),
|
|
46
|
-
...((isVite && isDev) ? [<script type="module" src='/node_modules/ssr-plugin-react/esm/entry/client-entry.js' key="vite-react-entry" />] : []),
|
|
47
|
-
...dynamicJsOrder.map(js => manifest[js]).filter(Boolean).map(item => <script key={item} src={item} type={isVite ? 'module' : 'text/javascript'}/>)
|
|
48
|
-
]
|
|
49
|
-
const staticList = {
|
|
50
|
-
injectCss,
|
|
51
|
-
injectScript
|
|
52
|
-
}
|
|
51
|
+
const isCsr = !!(mode === 'csr' || ctx.request.query?.csr)
|
|
52
|
+
const Component = isCsr ? React.Fragment : (component.name === 'dynamicComponent' ? (await (component as DynamicFC)()).default : component as StaticFC)
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
if (isCsr) {
|
|
55
|
+
logGreen(`Current path ${path} use csr render mode`)
|
|
56
|
+
}
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
logGreen(`Current path ${path} use csr render mode`)
|
|
59
|
-
}
|
|
58
|
+
let [layoutFetchData, fetchData] = [{}, {}]
|
|
60
59
|
|
|
61
|
-
|
|
60
|
+
if (!isCsr) {
|
|
61
|
+
const currentFetch = fetch ? (await fetch()).default : null
|
|
62
|
+
const lF = layoutFetch ? layoutFetch({ ctx }) : Promise.resolve({})
|
|
63
|
+
const CF = currentFetch ? currentFetch({ ctx }) : Promise.resolve({});
|
|
64
|
+
[layoutFetchData, fetchData] = parallelFetch ? await Promise.all([lF, CF]) : [await lF, await CF]
|
|
65
|
+
}
|
|
62
66
|
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
const combineData = isCsr ? null : Object.assign(state ?? {}, layoutFetchData ?? {}, fetchData ?? {})
|
|
68
|
+
const injectState = isCsr ? <script dangerouslySetInnerHTML={{ __html: `window.prefix="${prefix}";${clientPrefix ? `window.clientPrefix="${clientPrefix}";` : ''}` }} /> : <script dangerouslySetInnerHTML={{
|
|
69
|
+
__html: `window.__USE_SSR__=true; window.__INITIAL_DATA__ =${serialize(combineData)}; window.prefix="${prefix}";${clientPrefix ? `window.clientPrefix="${clientPrefix}";` : ''}`
|
|
70
|
+
}} />
|
|
71
|
+
// with jsx type error, use createElement here
|
|
72
|
+
const ele = createElement(StaticRouter, {
|
|
73
|
+
location: ctx.request.url,
|
|
74
|
+
basename: prefix === '/' ? undefined : prefix
|
|
75
|
+
}, createElement(Context.Provider, {
|
|
76
|
+
value: {
|
|
77
|
+
state: combineData
|
|
78
|
+
}
|
|
79
|
+
}, createElement(Layout, {
|
|
80
|
+
ctx: ctx,
|
|
81
|
+
config: config,
|
|
82
|
+
staticList: staticList,
|
|
83
|
+
injectState: injectState
|
|
84
|
+
}, createElement(Component, null))))
|
|
85
|
+
return stream ? (renderToNodeStream as typeof ReactStreamType)(ele) : renderToString(ele)
|
|
68
86
|
}
|
|
69
87
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}} />
|
|
74
|
-
// with jsx type error, use createElement here
|
|
75
|
-
const ele = createElement(StaticRouter, {
|
|
76
|
-
location: ctx.request.url,
|
|
77
|
-
basename: prefix === '/' ? undefined : prefix
|
|
78
|
-
}, createElement(Context.Provider, {
|
|
79
|
-
value: {
|
|
80
|
-
state: combineData
|
|
81
|
-
}
|
|
82
|
-
}, createElement(Layout, {
|
|
83
|
-
ctx: ctx,
|
|
84
|
-
config: config,
|
|
85
|
-
staticList: staticList,
|
|
86
|
-
injectState: injectState
|
|
87
|
-
}, createElement(Component, null))))
|
|
88
|
-
return stream ? renderToNodeStream(ele) : renderToString(ele)
|
|
88
|
+
return await localStorageWrapper.run({
|
|
89
|
+
context: Context
|
|
90
|
+
}, fn)
|
|
89
91
|
}
|
|
90
92
|
|
|
91
93
|
export {
|