ssr-plugin-react 6.2.84 → 6.2.85

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.
Files changed (69) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/CHANGELOG.md +19 -0
  3. package/cjs/config/base.d.ts +1 -1
  4. package/cjs/config/base.d.ts.map +1 -1
  5. package/cjs/config/base.js +9 -16
  6. package/cjs/config/base.js.map +1 -1
  7. package/cjs/config/client.d.ts +1 -1
  8. package/cjs/config/client.d.ts.map +1 -1
  9. package/cjs/config/client.js +18 -21
  10. package/cjs/config/client.js.map +1 -1
  11. package/cjs/config/server.d.ts +1 -1
  12. package/cjs/config/server.d.ts.map +1 -1
  13. package/cjs/config/server.js +9 -12
  14. package/cjs/config/server.js.map +1 -1
  15. package/cjs/entry/client-entry.d.ts.map +1 -1
  16. package/cjs/entry/client-entry.js +2 -1
  17. package/cjs/entry/client-entry.js.map +1 -1
  18. package/cjs/entry/context.d.ts.map +1 -1
  19. package/cjs/entry/context.js.map +1 -1
  20. package/cjs/entry/create.d.ts.map +1 -1
  21. package/cjs/entry/create.js +4 -4
  22. package/cjs/entry/create.js.map +1 -1
  23. package/cjs/entry/server-entry.d.ts.map +1 -1
  24. package/cjs/entry/server-entry.js +29 -13
  25. package/cjs/entry/server-entry.js.map +1 -1
  26. package/cjs/index.js.map +1 -1
  27. package/cjs/tools/vite.d.ts.map +1 -1
  28. package/cjs/tools/vite.js +11 -20
  29. package/cjs/tools/vite.js.map +1 -1
  30. package/cjs/tools/webpack.js.map +1 -1
  31. package/esm/config/base.d.ts +1 -1
  32. package/esm/config/base.d.ts.map +1 -1
  33. package/esm/config/base.js +10 -17
  34. package/esm/config/base.js.map +1 -1
  35. package/esm/config/client.d.ts +1 -1
  36. package/esm/config/client.d.ts.map +1 -1
  37. package/esm/config/client.js +19 -22
  38. package/esm/config/client.js.map +1 -1
  39. package/esm/config/server.d.ts +1 -1
  40. package/esm/config/server.d.ts.map +1 -1
  41. package/esm/config/server.js +9 -12
  42. package/esm/config/server.js.map +1 -1
  43. package/esm/entry/client-entry.d.ts.map +1 -1
  44. package/esm/entry/client-entry.js +2 -1
  45. package/esm/entry/client-entry.js.map +1 -1
  46. package/esm/entry/context.d.ts.map +1 -1
  47. package/esm/entry/context.js.map +1 -1
  48. package/esm/entry/create.d.ts.map +1 -1
  49. package/esm/entry/create.js +4 -4
  50. package/esm/entry/create.js.map +1 -1
  51. package/esm/entry/server-entry.d.ts.map +1 -1
  52. package/esm/entry/server-entry.js +29 -13
  53. package/esm/entry/server-entry.js.map +1 -1
  54. package/esm/index.js.map +1 -1
  55. package/esm/tools/vite.d.ts.map +1 -1
  56. package/esm/tools/vite.js +12 -21
  57. package/esm/tools/vite.js.map +1 -1
  58. package/esm/tools/webpack.js.map +1 -1
  59. package/package.json +1 -1
  60. package/src/config/base.ts +47 -55
  61. package/src/config/client.ts +52 -55
  62. package/src/config/server.ts +31 -36
  63. package/src/entry/client-entry.tsx +54 -38
  64. package/src/entry/context.tsx +22 -19
  65. package/src/entry/create.ts +19 -19
  66. package/src/entry/server-entry.tsx +115 -82
  67. package/src/index.ts +41 -41
  68. package/src/tools/vite.ts +103 -122
  69. package/src/tools/webpack.ts +12 -12
@@ -12,96 +12,129 @@ import { Routes, ssrCreateContext, createStore } from './create'
12
12
  const { FeRoutes, layoutFetch, state, Layout } = Routes
13
13
 
14
14
  const serverRender = async (ctx: ISSRContext, config: IConfig) => {
15
- const context = ssrCreateContext()
16
- const { mode, parallelFetch, prefix, isVite, isDev, clientPrefix, stream, rootId, hashRouter, streamHighWaterMark } = config
17
- const rawPath = ctx.request.path ?? ctx.request.url
18
- const path = normalizePath(rawPath, prefix)
19
- const routeItem = findRoute<ReactESMPreloadFeRouteItem>(FeRoutes, path)
20
- checkRoute({ routeItem, path })
21
- const { fetch, webpackChunkName, component } = routeItem
15
+ const context = ssrCreateContext()
16
+ const { mode, parallelFetch, prefix, isVite, isDev, clientPrefix, stream, rootId, hashRouter, streamHighWaterMark } = config
17
+ const rawPath = ctx.request.path ?? ctx.request.url
18
+ const path = normalizePath(rawPath, prefix)
19
+ const routeItem = findRoute<ReactESMPreloadFeRouteItem>(FeRoutes, path)
20
+ checkRoute({ routeItem, path })
21
+ const { fetch, webpackChunkName, component } = routeItem
22
22
 
23
- const fn = async () => {
24
- const dynamicCssOrder = await getAsyncCssChunk(ctx, webpackChunkName, config)
25
- const dynamicJsOrder = await getAsyncJsChunk(ctx, webpackChunkName, config)
26
- const manifest = await getManifest(config)
23
+ const fn = async () => {
24
+ const dynamicCssOrder = await getAsyncCssChunk(ctx, webpackChunkName, config)
25
+ const dynamicJsOrder = await getAsyncJsChunk(ctx, webpackChunkName, config)
26
+ const manifest = await getManifest(config)
27
27
 
28
- const injectCss = ((isVite && isDev) ? [
29
- <script src="/@vite/client" type="module" key="vite-client" />,
30
- <script key="vite-react-refresh" type="module" dangerouslySetInnerHTML={{
31
- __html: reactRefreshFragment
32
- }} />
33
- ] : dynamicCssOrder.map(css => manifest[css]).filter(Boolean).map(css => <link rel='stylesheet' key={css} href={css} />))
34
- .concat((isVite && isDev) ? [] : dynamicJsOrder.map(js => manifest[js]).filter(Boolean).map(js =>
35
- <link href={js} as="script" rel={isVite ? 'modulepreload' : 'preload'} key={js} />
36
- ))
28
+ const injectCss = (
29
+ isVite && isDev
30
+ ? [
31
+ <script src="/@vite/client" type="module" key="vite-client" />,
32
+ <script
33
+ key="vite-react-refresh"
34
+ type="module"
35
+ dangerouslySetInnerHTML={{
36
+ __html: reactRefreshFragment
37
+ }}
38
+ />
39
+ ]
40
+ : dynamicCssOrder
41
+ .map((css) => manifest[css])
42
+ .filter(Boolean)
43
+ .map((css) => <link rel="stylesheet" key={css} href={css} />)
44
+ ).concat(
45
+ isVite && isDev
46
+ ? []
47
+ : dynamicJsOrder
48
+ .map((js) => manifest[js])
49
+ .filter(Boolean)
50
+ .map((js) => <link href={js} as="script" rel={isVite ? 'modulepreload' : 'preload'} key={js} />)
51
+ )
37
52
 
38
- const injectScript = [
39
- ...(isVite ? [<script key="viteWindowInit" dangerouslySetInnerHTML={{
40
- __html: 'window.__USE_VITE__=true'
41
- }} />] : []),
42
- ...((isVite && isDev) ? [<script type="module" src='/node_modules/ssr-plugin-react/esm/entry/client-entry.js' key="vite-react-entry" />] : []),
43
- ...dynamicJsOrder.map(js => manifest[js]).filter(Boolean).map(item => <script key={item} src={item} type={isVite ? 'module' : 'text/javascript'} />)
44
- ]
45
- const staticList = {
46
- injectCss,
47
- injectScript
48
- }
53
+ const injectScript = [
54
+ ...(isVite
55
+ ? [
56
+ <script
57
+ key="viteWindowInit"
58
+ dangerouslySetInnerHTML={{
59
+ __html: 'window.__USE_VITE__=true'
60
+ }}
61
+ />
62
+ ]
63
+ : []),
64
+ ...(isVite && isDev ? [<script type="module" src="/node_modules/ssr-plugin-react/esm/entry/client-entry.js" key="vite-react-entry" />] : []),
65
+ ...dynamicJsOrder
66
+ .map((js) => manifest[js])
67
+ .filter(Boolean)
68
+ .map((item) => <script key={item} src={item} type={isVite ? 'module' : 'text/javascript'} />)
69
+ ]
70
+ const staticList = {
71
+ injectCss,
72
+ injectScript
73
+ }
49
74
 
50
- const isCsr = !!(mode === 'csr' || ctx.request.query?.csr)
51
- const Component = isCsr ? React.Fragment : (component.name === 'dynamicComponent' ? (await (component as DynamicFC)()).default : component as StaticFC)
75
+ const isCsr = !!(mode === 'csr' || ctx.request.query?.csr)
76
+ const Component = isCsr ? React.Fragment : component.name === 'dynamicComponent' ? (await (component as DynamicFC)()).default : (component as StaticFC)
52
77
 
53
- if (isCsr) {
54
- logGreen(`Current path ${path} use csr render mode`)
55
- }
78
+ if (isCsr) {
79
+ logGreen(`Current path ${path} use csr render mode`)
80
+ }
56
81
 
57
- let [layoutFetchData, fetchData] = [{}, {}]
82
+ let [layoutFetchData, fetchData] = [{}, {}]
58
83
 
59
- if (!isCsr) {
60
- const currentFetch = fetch ? (await fetch()).default : null
61
- const lF = layoutFetch ? layoutFetch({ ctx }) : Promise.resolve({})
62
- const CF = currentFetch ? currentFetch({ ctx }) : Promise.resolve({});
63
- [layoutFetchData, fetchData] = parallelFetch ? await Promise.all([lF, CF]) : [await lF, await CF]
64
- }
84
+ if (!isCsr) {
85
+ const currentFetch = fetch ? (await fetch()).default : null
86
+ const lF = layoutFetch ? layoutFetch({ ctx }) : Promise.resolve({})
87
+ const CF = currentFetch ? currentFetch({ ctx }) : Promise.resolve({})
88
+ ;[layoutFetchData, fetchData] = parallelFetch ? await Promise.all([lF, CF]) : [await lF, await CF]
89
+ }
65
90
 
66
- const combineData = isCsr ? null : Object.assign({}, state ?? {}, layoutFetchData ?? {}, fetchData ?? {})
67
- const ssrDevInfo = { manifest: isDev ? manifest : '', rootId }
68
- const innerHTML = splitPageInfo({
69
- 'window.__USE_SSR__': !isCsr,
70
- 'window.__INITIAL_DATA__': isCsr ? {} : serialize(combineData),
71
- 'window.__USE_VITE__': isVite,
72
- 'window.prefix': `"${prefix}"`,
73
- 'window.clientPrefix': `"${clientPrefix ?? ''}"`,
74
- 'window.ssrDevInfo': JSON.stringify(ssrDevInfo),
75
- 'window.hashRouter': Boolean(hashRouter),
76
- 'window.__VALTIO_DATA__': isCsr ? {} : serialize(useStore())
77
- })
78
- const injectState = <script dangerouslySetInnerHTML={{ __html: innerHTML }} />
79
- // with jsx type error, use createElement here
80
- const ele = createElement(StaticRouter, {
81
- location: ctx.request.url,
82
- basename: prefix === '/' ? undefined : prefix
83
- }, createElement(AppContext, {
84
- context: context as any,
85
- initialState: combineData,
86
- children: createElement(Layout, {
87
- ctx: ctx,
88
- config: config,
89
- staticList: staticList,
90
- injectState: injectState
91
- }, createElement(Component, null))
92
- }))
93
- // for ctx.body will loose asynclocalstorage context, consume stream in advance like vue2/3
94
- return stream ? renderToNodeStream(ele).pipe(new PassThrough({ highWaterMark: streamHighWaterMark })) : renderToString(ele)
95
- }
91
+ const combineData = isCsr ? null : Object.assign({}, state ?? {}, layoutFetchData ?? {}, fetchData ?? {})
92
+ const ssrDevInfo = { manifest: isDev ? manifest : '', rootId }
93
+ const innerHTML = splitPageInfo({
94
+ 'window.__USE_SSR__': !isCsr,
95
+ 'window.__INITIAL_DATA__': isCsr ? {} : serialize(combineData),
96
+ 'window.__USE_VITE__': isVite,
97
+ 'window.prefix': `"${prefix}"`,
98
+ 'window.clientPrefix': `"${clientPrefix ?? ''}"`,
99
+ 'window.ssrDevInfo': JSON.stringify(ssrDevInfo),
100
+ 'window.hashRouter': Boolean(hashRouter),
101
+ 'window.__VALTIO_DATA__': isCsr ? {} : serialize(useStore())
102
+ })
103
+ const injectState = <script dangerouslySetInnerHTML={{ __html: innerHTML }} />
104
+ // with jsx type error, use createElement here
105
+ const ele = createElement(
106
+ StaticRouter,
107
+ {
108
+ location: ctx.request.url,
109
+ basename: prefix === '/' ? undefined : prefix
110
+ },
111
+ createElement(AppContext, {
112
+ context: context as any,
113
+ initialState: combineData,
114
+ children: createElement(
115
+ Layout,
116
+ {
117
+ ctx: ctx,
118
+ config: config,
119
+ staticList: staticList,
120
+ injectState: injectState
121
+ },
122
+ createElement(Component, null)
123
+ )
124
+ })
125
+ )
126
+ // for ctx.body will loose asynclocalstorage context, consume stream in advance like vue2/3
127
+ return stream ? renderToNodeStream(ele).pipe(new PassThrough({ highWaterMark: streamHighWaterMark })) : renderToString(ele)
128
+ }
96
129
 
97
- return await localStorageWrapper.run({
98
- context: context as any,
99
- ctx,
100
- store: createStore()
101
- }, fn)
130
+ return await localStorageWrapper.run(
131
+ {
132
+ context: context as any,
133
+ ctx,
134
+ store: createStore()
135
+ },
136
+ fn
137
+ )
102
138
  }
103
139
 
104
- export {
105
- serverRender,
106
- Routes
107
- }
140
+ export { serverRender, Routes }
package/src/index.ts CHANGED
@@ -3,47 +3,47 @@ import { loadConfig } from 'ssr-common-utils'
3
3
  const { isVite, optimize } = loadConfig()
4
4
  const spinner = require('ora')('Building')
5
5
 
6
- export function clientPlugin () {
7
- return {
8
- name: 'plugin-react',
9
- start: async () => {
10
- if (isVite) {
11
- const { viteStart } = await import('./tools/vite')
12
- await viteStart()
13
- } else {
14
- if (optimize) {
15
- spinner.start()
16
- const { viteBuildClient } = await import('./tools/vite')
17
- await viteBuildClient()
18
- process.env.NODE_ENV = 'development'
19
- spinner.stop()
20
- const { webpackStart } = await import('./tools/webpack')
21
- await webpackStart()
22
- } else {
23
- const { webpackStart } = await import('./tools/webpack')
24
- await webpackStart()
25
- }
26
- }
27
- },
28
- build: async () => {
29
- if (isVite) {
30
- const { viteBuild } = await import('./tools/vite')
31
- await viteBuild()
32
- } else {
33
- if (optimize) {
34
- spinner.start()
35
- const { viteBuildClient } = await import('./tools/vite')
36
- await viteBuildClient()
37
- spinner.stop()
38
- const { webpackBuild } = await import('./tools/webpack')
39
- await webpackBuild()
40
- } else {
41
- const { webpackBuild } = await import('./tools/webpack')
42
- await webpackBuild()
43
- }
44
- }
45
- }
46
- }
6
+ export function clientPlugin() {
7
+ return {
8
+ name: 'plugin-react',
9
+ start: async () => {
10
+ if (isVite) {
11
+ const { viteStart } = await import('./tools/vite')
12
+ await viteStart()
13
+ } else {
14
+ if (optimize) {
15
+ spinner.start()
16
+ const { viteBuildClient } = await import('./tools/vite')
17
+ await viteBuildClient()
18
+ process.env.NODE_ENV = 'development'
19
+ spinner.stop()
20
+ const { webpackStart } = await import('./tools/webpack')
21
+ await webpackStart()
22
+ } else {
23
+ const { webpackStart } = await import('./tools/webpack')
24
+ await webpackStart()
25
+ }
26
+ }
27
+ },
28
+ build: async () => {
29
+ if (isVite) {
30
+ const { viteBuild } = await import('./tools/vite')
31
+ await viteBuild()
32
+ } else {
33
+ if (optimize) {
34
+ spinner.start()
35
+ const { viteBuildClient } = await import('./tools/vite')
36
+ await viteBuildClient()
37
+ spinner.stop()
38
+ const { webpackBuild } = await import('./tools/webpack')
39
+ await webpackBuild()
40
+ } else {
41
+ const { webpackBuild } = await import('./tools/webpack')
42
+ await webpackBuild()
43
+ }
44
+ }
45
+ }
46
+ }
47
47
  }
48
48
 
49
49
  export * from './tools/vite'
package/src/tools/vite.ts CHANGED
@@ -1,153 +1,134 @@
1
1
  import { resolve } from 'path'
2
- import { build, UserConfig } from 'vite'
3
- import {
4
- loadConfig, chunkNamePlugin, rollupOutputOptions, manifestPlugin, commonConfig,
5
- asyncOptimizeChunkPlugin, getOutputPublicPath, getPkgMajorVersion, getCwd
6
- } from 'ssr-common-utils'
7
2
  import react from '@vitejs/plugin-react'
8
3
  import { visualizer } from 'rollup-plugin-visualizer'
9
- import { createStyleImportPlugin, AndDesignVueResolve, VantResolve, ElementPlusResolve, NutuiResolve, AntdResolve } from 'ssr-vite-plugin-style-import'
4
+ import { asyncOptimizeChunkPlugin, chunkNamePlugin, commonConfig, getCwd, getOutputPublicPath, getPkgMajorVersion, loadConfig, manifestPlugin, rollupOutputOptions } from 'ssr-common-utils'
5
+ import { AndDesignVueResolve, AntdResolve, ElementPlusResolve, NutuiResolve, VantResolve, createStyleImportPlugin } from 'ssr-vite-plugin-style-import'
6
+ import { UserConfig, build } from 'vite'
10
7
  const { getOutput, reactServerEntry, reactClientEntry, viteConfig, supportOptinalChaining, isDev, define, babelOptions, optimize } = loadConfig()
11
8
  const { clientOutPut, serverOutPut } = getOutput()
12
9
  const isAntd5 = getPkgMajorVersion('antd') === 5
13
10
  const extraInclude = ([] as string[]).concat(isAntd5 ? ['react-is'] : [])
14
11
 
15
12
  const styleImportConfig = {
16
- include: ['**/*.vue', '**/*.ts', '**/*.js', '**/*.tsx', '**/*.jsx', /chunkName/],
17
- resolves: [
18
- AndDesignVueResolve(),
19
- VantResolve(),
20
- ElementPlusResolve(),
21
- NutuiResolve(),
22
- AntdResolve()
23
- ]
13
+ include: ['**/*.vue', '**/*.ts', '**/*.js', '**/*.tsx', '**/*.jsx', /chunkName/],
14
+ resolves: [AndDesignVueResolve(), VantResolve(), ElementPlusResolve(), NutuiResolve(), AntdResolve()]
24
15
  }
25
16
  const serverPlugins = [
26
- react({
27
- ...viteConfig?.()?.server?.defaultPluginOptions,
28
- jsxRuntime: 'automatic',
29
- babel: {
30
- ...babelOptions,
31
- plugins: [
32
- ...babelOptions?.plugins ?? [],
33
- ...!supportOptinalChaining ? [
34
- '@babel/plugin-proposal-optional-chaining',
35
- '@babel/plugin-proposal-nullish-coalescing-operator'
36
- ] : []
37
- ]
38
- }
39
- }),
40
- viteConfig?.()?.common?.extraPlugin,
41
- viteConfig?.()?.server?.extraPlugin,
42
- createStyleImportPlugin(styleImportConfig)
17
+ react({
18
+ ...viteConfig?.()?.server?.defaultPluginOptions,
19
+ jsxRuntime: 'automatic',
20
+ babel: {
21
+ ...babelOptions,
22
+ plugins: [...(babelOptions?.plugins ?? []), ...(!supportOptinalChaining ? ['@babel/plugin-proposal-optional-chaining', '@babel/plugin-proposal-nullish-coalescing-operator'] : [])]
23
+ }
24
+ }),
25
+ viteConfig?.()?.common?.extraPlugin,
26
+ viteConfig?.()?.server?.extraPlugin,
27
+ createStyleImportPlugin(styleImportConfig)
43
28
  ].filter(Boolean)
44
29
 
45
30
  const serverConfig: UserConfig = {
46
- ...commonConfig(),
47
- ...viteConfig?.().server?.otherConfig,
48
- plugins: viteConfig?.()?.server?.processPlugin?.(serverPlugins) ?? serverPlugins,
49
- esbuild: {
50
- ...viteConfig?.().server?.otherConfig?.esbuild,
51
- keepNames: true,
52
- logOverride: { 'this-is-undefined-in-esm': 'silent' }
53
- },
54
- optimizeDeps: {
55
- ...viteConfig?.().server?.otherConfig?.optimizeDeps,
56
- include: extraInclude.concat(...viteConfig?.().server?.otherConfig?.optimizeDeps?.include ?? []),
57
- esbuildOptions: {
58
- ...viteConfig?.().server?.otherConfig?.optimizeDeps?.esbuildOptions,
59
- // @ts-expect-error
60
- bundle: isDev
61
- }
62
- },
63
- build: {
64
- minify: !process.env.NOMINIFY,
65
- ...viteConfig?.().server?.otherConfig?.build,
66
- ssr: reactServerEntry,
67
- outDir: serverOutPut,
68
- rollupOptions: {
69
- ...viteConfig?.().server?.otherConfig?.build?.rollupOptions,
70
- input: isDev ? reactClientEntry : reactServerEntry, // setting prebundle list by client-entry in dev
71
- output: {
72
- entryFileNames: 'Page.server.js',
73
- assetFileNames: rollupOutputOptions().assetFileNames
74
- }
75
- }
76
- },
77
- define: {
78
- ...viteConfig?.().server?.otherConfig?.define,
79
- __isBrowser__: false,
80
- ...define?.base,
81
- ...define?.server
82
- }
31
+ ...commonConfig(),
32
+ ...viteConfig?.().server?.otherConfig,
33
+ plugins: viteConfig?.()?.server?.processPlugin?.(serverPlugins) ?? serverPlugins,
34
+ esbuild: {
35
+ ...viteConfig?.().server?.otherConfig?.esbuild,
36
+ keepNames: true,
37
+ logOverride: { 'this-is-undefined-in-esm': 'silent' }
38
+ },
39
+ optimizeDeps: {
40
+ ...viteConfig?.().server?.otherConfig?.optimizeDeps,
41
+ include: extraInclude.concat(...(viteConfig?.().server?.otherConfig?.optimizeDeps?.include ?? [])),
42
+ esbuildOptions: {
43
+ ...viteConfig?.().server?.otherConfig?.optimizeDeps?.esbuildOptions,
44
+ // @ts-expect-error
45
+ bundle: isDev
46
+ }
47
+ },
48
+ build: {
49
+ minify: !process.env.NOMINIFY,
50
+ ...viteConfig?.().server?.otherConfig?.build,
51
+ ssr: reactServerEntry,
52
+ outDir: serverOutPut,
53
+ rollupOptions: {
54
+ ...viteConfig?.().server?.otherConfig?.build?.rollupOptions,
55
+ input: isDev ? reactClientEntry : reactServerEntry, // setting prebundle list by client-entry in dev
56
+ output: {
57
+ entryFileNames: 'Page.server.js',
58
+ assetFileNames: rollupOutputOptions().assetFileNames
59
+ }
60
+ }
61
+ },
62
+ define: {
63
+ ...viteConfig?.().server?.otherConfig?.define,
64
+ __isBrowser__: false,
65
+ ...define?.base,
66
+ ...define?.server
67
+ }
83
68
  }
84
69
  const clientPlugins = [
85
- react({
86
- ...viteConfig?.()?.client?.defaultPluginOptions,
87
- jsxRuntime: 'automatic',
88
- ...babelOptions
89
- }),
90
- viteConfig?.()?.common?.extraPlugin,
91
- viteConfig?.()?.client?.extraPlugin,
92
- createStyleImportPlugin(styleImportConfig)
70
+ react({
71
+ ...viteConfig?.()?.client?.defaultPluginOptions,
72
+ jsxRuntime: 'automatic',
73
+ ...babelOptions
74
+ }),
75
+ viteConfig?.()?.common?.extraPlugin,
76
+ viteConfig?.()?.client?.extraPlugin,
77
+ createStyleImportPlugin(styleImportConfig)
93
78
  ].filter(Boolean)
94
79
  const analyzePlugin = process.env.GENERATE_ANALYSIS ? visualizer({ filename: resolve(getCwd(), './build/stat.html'), open: true }) : null
95
80
 
96
81
  const clientConfig: UserConfig = {
97
- ...commonConfig(),
98
- ...viteConfig?.().client?.otherConfig,
99
- base: isDev ? '/' : getOutputPublicPath(),
100
- esbuild: {
101
- ...viteConfig?.().client?.otherConfig?.esbuild,
102
- keepNames: true,
103
- logOverride: { 'this-is-undefined-in-esm': 'silent' }
104
- },
105
- optimizeDeps: {
106
- ...viteConfig?.().client?.otherConfig?.optimizeDeps,
107
- include: ['react-router', ...extraInclude].concat(...viteConfig?.().client?.otherConfig?.optimizeDeps?.include ?? []),
108
- exclude: ['ssr-hoc-react'].concat(...viteConfig?.().client?.otherConfig?.optimizeDeps?.exclude ?? [])
109
- },
110
- plugins: viteConfig?.()?.client?.processPlugin?.(clientPlugins) ?? clientPlugins,
111
- build: {
112
- minify: !process.env.NOMINIFY,
113
- ...viteConfig?.().client?.otherConfig?.build,
114
- ...(optimize ? { write: false } : {}),
115
- ssrManifest: true,
116
- outDir: clientOutPut,
117
- rollupOptions: {
118
- ...viteConfig?.().client?.otherConfig?.build?.rollupOptions,
119
- input: reactClientEntry,
120
- output: rollupOutputOptions(),
121
- plugins: [chunkNamePlugin(), asyncOptimizeChunkPlugin(), manifestPlugin(), analyzePlugin]
122
- }
123
- },
124
- define: {
125
- ...viteConfig?.().client?.otherConfig?.define,
126
- __isBrowser__: true,
127
- ...define?.base,
128
- ...define?.client
129
- }
82
+ ...commonConfig(),
83
+ ...viteConfig?.().client?.otherConfig,
84
+ base: isDev ? '/' : getOutputPublicPath(),
85
+ esbuild: {
86
+ ...viteConfig?.().client?.otherConfig?.esbuild,
87
+ keepNames: true,
88
+ logOverride: { 'this-is-undefined-in-esm': 'silent' }
89
+ },
90
+ optimizeDeps: {
91
+ ...viteConfig?.().client?.otherConfig?.optimizeDeps,
92
+ include: ['react-router', ...extraInclude].concat(...(viteConfig?.().client?.otherConfig?.optimizeDeps?.include ?? [])),
93
+ exclude: ['ssr-hoc-react'].concat(...(viteConfig?.().client?.otherConfig?.optimizeDeps?.exclude ?? []))
94
+ },
95
+ plugins: viteConfig?.()?.client?.processPlugin?.(clientPlugins) ?? clientPlugins,
96
+ build: {
97
+ minify: !process.env.NOMINIFY,
98
+ ...viteConfig?.().client?.otherConfig?.build,
99
+ ...(optimize ? { write: false } : {}),
100
+ ssrManifest: true,
101
+ outDir: clientOutPut,
102
+ rollupOptions: {
103
+ ...viteConfig?.().client?.otherConfig?.build?.rollupOptions,
104
+ input: reactClientEntry,
105
+ output: rollupOutputOptions(),
106
+ plugins: [chunkNamePlugin(), asyncOptimizeChunkPlugin(), manifestPlugin(), analyzePlugin]
107
+ }
108
+ },
109
+ define: {
110
+ ...viteConfig?.().client?.otherConfig?.define,
111
+ __isBrowser__: true,
112
+ ...define?.base,
113
+ ...define?.client
114
+ }
130
115
  }
131
116
  const viteStart = async () => {
132
- //
117
+ //
133
118
  }
134
119
  const viteBuild = async () => {
135
- await build({ ...clientConfig, mode: 'production' })
136
- await build({ ...serverConfig, mode: process.env.VITEMODE ?? 'production' })
120
+ await build({ ...clientConfig, mode: 'production' })
121
+ await build({ ...serverConfig, mode: process.env.VITEMODE ?? 'production' })
137
122
  }
138
123
 
139
124
  const viteBuildClient = async () => {
140
- await build({ ...clientConfig, mode: process.env.VITEMODE ?? 'production' }).catch(_ => { })
125
+ await build({
126
+ ...clientConfig,
127
+ mode: process.env.VITEMODE ?? 'production'
128
+ }).catch((_) => {})
141
129
  }
142
130
  const viteBuildServer = async () => {
143
- await build({ ...serverConfig, mode: process.env.VITEMODE ?? 'production' })
131
+ await build({ ...serverConfig, mode: process.env.VITEMODE ?? 'production' })
144
132
  }
145
133
 
146
- export {
147
- viteBuild,
148
- viteStart,
149
- serverConfig,
150
- clientConfig,
151
- viteBuildClient,
152
- viteBuildServer
153
- }
134
+ export { viteBuild, viteStart, serverConfig, clientConfig, viteBuildClient, viteBuildServer }
@@ -1,20 +1,20 @@
1
1
  import * as WebpackChain from 'webpack-chain'
2
2
 
3
3
  export const webpackStart = async () => {
4
- const { startServerBuild } = await import('ssr-webpack/cjs/server')
5
- const { getServerWebpack } = await import('../config/server')
6
- const serverConfigChain = new WebpackChain()
4
+ const { startServerBuild } = await import('ssr-webpack/cjs/server')
5
+ const { getServerWebpack } = await import('../config/server')
6
+ const serverConfigChain = new WebpackChain()
7
7
 
8
- const { startClientServer } = await import('ssr-webpack')
9
- const { getClientWebpack } = await import('../config')
10
- const clientConfigChain = new WebpackChain()
11
- await Promise.all([startServerBuild(getServerWebpack(serverConfigChain)), startClientServer(getClientWebpack(clientConfigChain))])
8
+ const { startClientServer } = await import('ssr-webpack')
9
+ const { getClientWebpack } = await import('../config')
10
+ const clientConfigChain = new WebpackChain()
11
+ await Promise.all([startServerBuild(getServerWebpack(serverConfigChain)), startClientServer(getClientWebpack(clientConfigChain))])
12
12
  }
13
13
 
14
14
  export const webpackBuild = async () => {
15
- const { startServerBuild, startClientBuild } = await import('ssr-webpack')
16
- const { getClientWebpack, getServerWebpack } = await import('../config')
17
- const serverConfigChain = new WebpackChain()
18
- const clientConfigChain = new WebpackChain()
19
- await Promise.all([startServerBuild(getServerWebpack(serverConfigChain)), startClientBuild(getClientWebpack(clientConfigChain))])
15
+ const { startServerBuild, startClientBuild } = await import('ssr-webpack')
16
+ const { getClientWebpack, getServerWebpack } = await import('../config')
17
+ const serverConfigChain = new WebpackChain()
18
+ const clientConfigChain = new WebpackChain()
19
+ await Promise.all([startServerBuild(getServerWebpack(serverConfigChain)), startClientBuild(getClientWebpack(clientConfigChain))])
20
20
  }