@tarojs/plugin-framework-react 3.5.0-canary.0 → 3.5.0-theta.1

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.
@@ -1,62 +1,62 @@
1
1
  'use strict';
2
2
 
3
- function apiLoader (str) {
3
+ function apiLoader (str) {
4
4
  return `import {
5
- useDidShow,
6
- useDidHide,
7
- usePullDownRefresh,
8
- useReachBottom,
9
- usePageScroll,
10
- useResize,
11
- useShareAppMessage,
12
- useTabItemTap,
13
- useTitleClick,
14
- useOptionMenuClick,
15
- usePullIntercept,
16
- useShareTimeline,
17
- useAddToFavorites,
18
- useReady,
19
- useRouter,
20
- useScope
21
- } from '@tarojs/plugin-framework-react/dist/runtime'
22
- ${str}
5
+ useDidShow,
6
+ useDidHide,
7
+ usePullDownRefresh,
8
+ useReachBottom,
9
+ usePageScroll,
10
+ useResize,
11
+ useShareAppMessage,
12
+ useTabItemTap,
13
+ useTitleClick,
14
+ useOptionMenuClick,
15
+ usePullIntercept,
16
+ useShareTimeline,
17
+ useAddToFavorites,
18
+ useReady,
19
+ useRouter,
20
+ useScope
21
+ } from '@tarojs/plugin-framework-react/dist/runtime'
22
+ ${str}
23
23
 
24
- Taro.useDidShow = useDidShow
25
- Taro.useDidHide = useDidHide
26
- Taro.usePullDownRefresh = usePullDownRefresh
27
- Taro.useReachBottom = useReachBottom
28
- Taro.usePageScroll = usePageScroll
29
- Taro.useResize = useResize
30
- Taro.useShareAppMessage = useShareAppMessage
31
- Taro.useTabItemTap = useTabItemTap
32
- Taro.useTitleClick = useTitleClick
33
- Taro.useOptionMenuClick = useOptionMenuClick
34
- Taro.usePullIntercept = usePullIntercept
35
- Taro.useShareTimeline = useShareTimeline
36
- Taro.useAddToFavorites = useAddToFavorites
37
- Taro.useReady = useReady
38
- Taro.useRouter = useRouter
39
- Taro.useScope = useScope
24
+ taro.useDidShow = useDidShow
25
+ taro.useDidHide = useDidHide
26
+ taro.usePullDownRefresh = usePullDownRefresh
27
+ taro.useReachBottom = useReachBottom
28
+ taro.usePageScroll = usePageScroll
29
+ taro.useResize = useResize
30
+ taro.useShareAppMessage = useShareAppMessage
31
+ taro.useTabItemTap = useTabItemTap
32
+ taro.useTitleClick = useTitleClick
33
+ taro.useOptionMenuClick = useOptionMenuClick
34
+ taro.usePullIntercept = usePullIntercept
35
+ taro.useShareTimeline = useShareTimeline
36
+ taro.useAddToFavorites = useAddToFavorites
37
+ taro.useReady = useReady
38
+ taro.useRouter = useRouter
39
+ taro.useScope = useScope
40
40
 
41
- export {
42
- useDidShow,
43
- useDidHide,
44
- usePullDownRefresh,
45
- useReachBottom,
46
- usePageScroll,
47
- useResize,
48
- useShareAppMessage,
49
- useTabItemTap,
50
- useTitleClick,
51
- useOptionMenuClick,
52
- usePullIntercept,
53
- useShareTimeline,
54
- useAddToFavorites,
55
- useReady,
56
- useRouter,
57
- useScope
58
- }
59
- `;
41
+ export {
42
+ useDidShow,
43
+ useDidHide,
44
+ usePullDownRefresh,
45
+ useReachBottom,
46
+ usePageScroll,
47
+ useResize,
48
+ useShareAppMessage,
49
+ useTabItemTap,
50
+ useTitleClick,
51
+ useOptionMenuClick,
52
+ usePullIntercept,
53
+ useShareTimeline,
54
+ useAddToFavorites,
55
+ useReady,
56
+ useRouter,
57
+ useScope
58
+ }
59
+ `;
60
60
  }
61
61
 
62
62
  module.exports = apiLoader;
@@ -1 +1 @@
1
- {"version":3,"file":"api-loader.js","sources":["../src/api-loader.ts"],"sourcesContent":["export default function (str) {\n return `import {\n useDidShow,\n useDidHide,\n usePullDownRefresh,\n useReachBottom,\n usePageScroll,\n useResize,\n useShareAppMessage,\n useTabItemTap,\n useTitleClick,\n useOptionMenuClick,\n usePullIntercept,\n useShareTimeline,\n useAddToFavorites,\n useReady,\n useRouter,\n useScope\n } from '@tarojs/plugin-framework-react/dist/runtime'\n ${str}\n\n Taro.useDidShow = useDidShow\n Taro.useDidHide = useDidHide\n Taro.usePullDownRefresh = usePullDownRefresh\n Taro.useReachBottom = useReachBottom\n Taro.usePageScroll = usePageScroll\n Taro.useResize = useResize\n Taro.useShareAppMessage = useShareAppMessage\n Taro.useTabItemTap = useTabItemTap\n Taro.useTitleClick = useTitleClick\n Taro.useOptionMenuClick = useOptionMenuClick\n Taro.usePullIntercept = usePullIntercept\n Taro.useShareTimeline = useShareTimeline\n Taro.useAddToFavorites = useAddToFavorites\n Taro.useReady = useReady\n Taro.useRouter = useRouter\n Taro.useScope = useScope\n\n export {\n useDidShow,\n useDidHide,\n usePullDownRefresh,\n useReachBottom,\n usePageScroll,\n useResize,\n useShareAppMessage,\n useTabItemTap,\n useTitleClick,\n useOptionMenuClick,\n usePullIntercept,\n useShareTimeline,\n useAddToFavorites,\n useReady,\n useRouter,\n useScope\n }\n `\n}\n"],"names":[],"mappings":";;oBAAyB,GAAG;IAC1B,OAAO;;;;;;;;;;;;;;;;;;IAkBL,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCJ,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"api-loader.js","sources":["../src/api-loader.ts"],"sourcesContent":["export default function (str) {\n return `import {\n useDidShow,\n useDidHide,\n usePullDownRefresh,\n useReachBottom,\n usePageScroll,\n useResize,\n useShareAppMessage,\n useTabItemTap,\n useTitleClick,\n useOptionMenuClick,\n usePullIntercept,\n useShareTimeline,\n useAddToFavorites,\n useReady,\n useRouter,\n useScope\n} from '@tarojs/plugin-framework-react/dist/runtime'\n${str}\n\ntaro.useDidShow = useDidShow\ntaro.useDidHide = useDidHide\ntaro.usePullDownRefresh = usePullDownRefresh\ntaro.useReachBottom = useReachBottom\ntaro.usePageScroll = usePageScroll\ntaro.useResize = useResize\ntaro.useShareAppMessage = useShareAppMessage\ntaro.useTabItemTap = useTabItemTap\ntaro.useTitleClick = useTitleClick\ntaro.useOptionMenuClick = useOptionMenuClick\ntaro.usePullIntercept = usePullIntercept\ntaro.useShareTimeline = useShareTimeline\ntaro.useAddToFavorites = useAddToFavorites\ntaro.useReady = useReady\ntaro.useRouter = useRouter\ntaro.useScope = useScope\n\nexport {\n useDidShow,\n useDidHide,\n usePullDownRefresh,\n useReachBottom,\n usePageScroll,\n useResize,\n useShareAppMessage,\n useTabItemTap,\n useTitleClick,\n useOptionMenuClick,\n usePullIntercept,\n useShareTimeline,\n useAddToFavorites,\n useReady,\n useRouter,\n useScope\n}\n`\n}\n"],"names":[],"mappings":";;AAAc,kBAAA,EAAW,GAAG,EAAA;IACxB,OAAO,CAAA;;;;;;;;;;;;;;;;;;EAkBT,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCJ,CAAC;AACF;;;;"}
package/dist/index.js CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var helper = require('@tarojs/helper');
6
+ var shared = require('@tarojs/shared');
5
7
  var acorn = require('acorn');
6
8
  var walk = require('acorn-walk');
7
9
 
@@ -14,233 +16,286 @@ function _interopNamespace(e) {
14
16
  var d = Object.getOwnPropertyDescriptor(e, k);
15
17
  Object.defineProperty(n, k, d.get ? d : {
16
18
  enumerable: true,
17
- get: function () {
18
- return e[k];
19
- }
19
+ get: function () { return e[k]; }
20
20
  });
21
21
  }
22
22
  });
23
23
  }
24
- n['default'] = e;
24
+ n["default"] = e;
25
25
  return Object.freeze(n);
26
26
  }
27
27
 
28
28
  var acorn__namespace = /*#__PURE__*/_interopNamespace(acorn);
29
29
  var walk__namespace = /*#__PURE__*/_interopNamespace(walk);
30
30
 
31
- function addConfig(source) {
32
- const configsMap = {
33
- enableShareAppMessage: ['onShareAppMessage', 'useShareAppMessage'],
34
- enableShareTimeline: ['onShareTimeline', 'useShareTimeline']
35
- };
36
- const ast = acorn__namespace.parse(source, {
37
- ecmaVersion: 'latest',
38
- sourceType: 'module'
39
- });
40
- const additionConfig = {};
41
- function check(name) {
42
- Object.keys(configsMap).forEach(configName => {
43
- const apis = configsMap[configName];
44
- if (apis.includes(name)) {
45
- additionConfig[configName] = true;
46
- }
47
- });
48
- }
49
- walk__namespace.simple(ast, {
50
- FunctionExpression(node) {
51
- if (!node.id || !node.id.name)
52
- return;
53
- check(node.id.name);
54
- },
55
- FunctionDeclaration(node) {
56
- if (!node.id || !node.id.name)
57
- return;
58
- check(node.id.name);
59
- },
60
- CallExpression(node) {
61
- const { callee } = node;
62
- if (callee.type === 'Identifier') {
63
- check(callee.name);
64
- }
65
- else if (callee.type === 'MemberExpression') {
66
- if (callee.property.type === 'Identifier') {
67
- check(callee.property.name);
68
- }
69
- else if (callee.property.type === 'Literal') {
70
- check(callee.property.value);
71
- }
72
- }
73
- }
74
- });
75
- return additionConfig;
76
- }
77
- const frameworkMeta = {
78
- nerv: {
31
+ function addConfig(source) {
32
+ const configsMap = {
33
+ enableShareAppMessage: ['onShareAppMessage', 'useShareAppMessage'],
34
+ enableShareTimeline: ['onShareTimeline', 'useShareTimeline']
35
+ };
36
+ const ast = acorn__namespace.parse(source, {
37
+ ecmaVersion: 'latest',
38
+ sourceType: 'module'
39
+ });
40
+ const additionConfig = {};
41
+ function check(name) {
42
+ Object.keys(configsMap).forEach(configName => {
43
+ const apis = configsMap[configName];
44
+ if (apis.includes(name)) {
45
+ additionConfig[configName] = true;
46
+ }
47
+ });
48
+ }
49
+ walk__namespace.simple(ast, {
50
+ FunctionExpression(node) {
51
+ if (!node.id || !node.id.name)
52
+ return;
53
+ check(node.id.name);
54
+ },
55
+ FunctionDeclaration(node) {
56
+ if (!node.id || !node.id.name)
57
+ return;
58
+ check(node.id.name);
59
+ },
60
+ CallExpression(node) {
61
+ const { callee } = node;
62
+ if (callee.type === 'Identifier') {
63
+ check(callee.name);
64
+ }
65
+ else if (callee.type === 'MemberExpression') {
66
+ if (callee.property.type === 'Identifier') {
67
+ check(callee.property.name);
68
+ }
69
+ else if (callee.property.type === 'Literal') {
70
+ check(callee.property.value);
71
+ }
72
+ }
73
+ }
74
+ });
75
+ return additionConfig;
76
+ }
77
+ const frameworkMeta = {
78
+ nerv: {
79
79
  importFrameworkStatement: `
80
80
  import Nerv from 'nervjs';
81
- `,
81
+ `,
82
82
  mockAppStatement: `
83
83
  class App extends Nerv.Component {
84
84
  render () {
85
85
  return this.props.children
86
86
  }
87
87
  }
88
- `,
89
- frameworkArgs: 'Nerv, Nerv, config',
90
- creator: 'createReactApp',
91
- creatorLocation: '@tarojs/plugin-framework-react/dist/runtime',
92
- importFrameworkName: 'Nerv',
93
- modifyConfig(config, source) {
94
- Object.assign(config, addConfig(source));
95
- }
96
- },
97
- react: {
88
+ `,
89
+ frameworkArgs: 'Nerv, Nerv, config',
90
+ creator: 'createReactApp',
91
+ creatorLocation: '@tarojs/plugin-framework-react/dist/runtime',
92
+ importFrameworkName: 'Nerv',
93
+ modifyConfig(config, source) {
94
+ Object.assign(config, addConfig(source));
95
+ }
96
+ },
97
+ react: {
98
98
  importFrameworkStatement: `
99
99
  import * as React from 'react'
100
100
  import ReactDOM from 'react-dom'
101
- `,
101
+ `,
102
102
  mockAppStatement: `
103
103
  class App extends React.Component {
104
104
  render () {
105
105
  return this.props.children
106
106
  }
107
107
  }
108
- `,
109
- frameworkArgs: 'React, ReactDOM, config',
110
- creator: 'createReactApp',
111
- creatorLocation: '@tarojs/plugin-framework-react/dist/runtime',
112
- importFrameworkName: 'React',
113
- compatComponentImport: 'import { PullDownRefresh } from "@tarojs/components"',
114
- compatComponentExtra: 'config.PullDownRefresh = PullDownRefresh',
115
- modifyConfig(config, source) {
116
- Object.assign(config, addConfig(source));
117
- }
118
- }
119
- };
120
- function getLoaderMeta(framework) {
121
- if (framework === 'preact')
122
- framework = 'react';
123
- return frameworkMeta[framework];
108
+ `,
109
+ frameworkArgs: 'React, ReactDOM, config',
110
+ creator: 'createReactApp',
111
+ creatorLocation: '@tarojs/plugin-framework-react/dist/runtime',
112
+ importFrameworkName: 'React',
113
+ compatComponentImport: 'import { PullDownRefresh } from "@tarojs/components"',
114
+ compatComponentExtra: 'config.PullDownRefresh = PullDownRefresh',
115
+ modifyConfig(config, source) {
116
+ Object.assign(config, addConfig(source));
117
+ }
118
+ }
119
+ };
120
+ function getLoaderMeta(framework) {
121
+ if (framework === 'preact')
122
+ framework = 'react';
123
+ return frameworkMeta[framework];
124
124
  }
125
125
 
126
- function modifyMiniWebpackChain(ctx, framework, chain) {
127
- setAlias$2(ctx, framework, chain);
128
- setLoader$1(framework, chain);
129
- }
130
- function setAlias$2(ctx, framework, chain) {
131
- var _a;
132
- const config = ctx.initialConfig;
133
- const alias = chain.resolve.alias;
134
- if (framework === 'react') {
135
- alias.set('react-dom$', '@tarojs/react');
136
- if (process.env.NODE_ENV !== 'production' && ((_a = config.mini) === null || _a === void 0 ? void 0 : _a.debugReact) !== true) {
137
- // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积
138
- alias.set('react-reconciler$', 'react-reconciler/cjs/react-reconciler.production.min.js');
139
- alias.set('react$', 'react/cjs/react.production.min.js');
140
- alias.set('scheduler$', 'scheduler/cjs/scheduler.production.min.js');
141
- alias.set('react/jsx-runtime$', 'react/cjs/react-jsx-runtime.production.min.js');
142
- }
143
- }
144
- }
145
- function setLoader$1(framework, chain) {
146
- chain.plugin('miniPlugin')
147
- .tap(args => {
148
- args[0].loaderMeta = getLoaderMeta(framework);
149
- return args;
150
- });
126
+ function modifyH5WebpackChain(ctx, framework, chain) {
127
+ setAlias$2(ctx, chain);
128
+ setLoader$1(framework, chain);
129
+ setPlugin(ctx, framework, chain);
130
+ chain.merge({
131
+ module: {
132
+ rule: {
133
+ 'process-import-taro': {
134
+ test: /taro-h5[\\/]dist[\\/]index/,
135
+ loader: require.resolve('./api-loader')
136
+ }
137
+ }
138
+ }
139
+ });
140
+ }
141
+ function setAlias$2(ctx, chain) {
142
+ var _a;
143
+ const config = ctx.initialConfig;
144
+ const alias = chain.resolve.alias;
145
+ if ((_a = config.h5) === null || _a === void 0 ? void 0 : _a.useHtmlComponents) {
146
+ alias.set('@tarojs/components$', '@tarojs/components-react/index');
147
+ }
148
+ else {
149
+ alias.set('@tarojs/components$', '@tarojs/components/dist-h5/react');
150
+ }
151
+ }
152
+ function setLoader$1(framework, chain) {
153
+ chain.plugin('mainPlugin')
154
+ .tap(args => {
155
+ args[0].loaderMeta = getLoaderMeta(framework);
156
+ return args;
157
+ });
158
+ }
159
+ function setPlugin(ctx, framework, chain) {
160
+ var _a, _b;
161
+ const config = ctx.initialConfig;
162
+ if (process.env.NODE_ENV !== 'production' &&
163
+ ((_b = (_a = config.h5) === null || _a === void 0 ? void 0 : _a.devServer) === null || _b === void 0 ? void 0 : _b.hot) !== false) {
164
+ // 默认开启 fast-refresh
165
+ if (framework === 'react') {
166
+ chain
167
+ .plugin('fastRefreshPlugin')
168
+ .use(require('@pmmmwh/react-refresh-webpack-plugin'));
169
+ }
170
+ else if (framework === 'preact') {
171
+ chain
172
+ .plugin('fastRefreshPlugin')
173
+ .use(require('@prefresh/webpack'));
174
+ }
175
+ }
151
176
  }
152
177
 
153
- function modifyH5WebpackChain(ctx, framework, chain) {
154
- setAlias$1(ctx, chain);
155
- setLoader(framework, chain);
156
- setPlugin(ctx, framework, chain);
157
- chain.merge({
158
- module: {
159
- rule: {
160
- 'process-import-taro': {
161
- test: /taro-h5[\\/]src[\\/]index/,
162
- loader: require.resolve('./api-loader')
163
- }
164
- }
165
- }
166
- });
167
- }
168
- function setAlias$1(ctx, chain) {
169
- var _a;
170
- const config = ctx.initialConfig;
171
- const alias = chain.resolve.alias;
172
- if ((_a = config.h5) === null || _a === void 0 ? void 0 : _a.useHtmlComponents) {
173
- alias.set('@tarojs/components$', '@tarojs/components-react/index');
174
- }
175
- else {
176
- alias.set('@tarojs/components$', '@tarojs/components/dist-h5/react');
177
- }
178
- }
179
- function setLoader(framework, chain) {
180
- chain.plugin('mainPlugin')
181
- .tap(args => {
182
- args[0].loaderMeta = getLoaderMeta(framework);
183
- return args;
184
- });
185
- }
186
- function setPlugin(ctx, framework, chain) {
187
- var _a, _b;
188
- const config = ctx.initialConfig;
189
- if (process.env.NODE_ENV !== 'production' &&
190
- ((_b = (_a = config.h5) === null || _a === void 0 ? void 0 : _a.devServer) === null || _b === void 0 ? void 0 : _b.hot) !== false) {
191
- // 默认开启 fast-refresh
192
- if (framework === 'react') {
193
- chain
194
- .plugin('fastRefreshPlugin')
195
- .use(require('@pmmmwh/react-refresh-webpack-plugin'));
196
- }
197
- else if (framework === 'preact') {
198
- chain
199
- .plugin('fastRefreshPlugin')
200
- .use(require('@prefresh/webpack'));
201
- }
202
- }
178
+ function modifyMiniWebpackChain(ctx, framework, chain) {
179
+ setAlias$1(ctx, framework, chain);
180
+ setLoader(framework, chain);
181
+ }
182
+ function setAlias$1(ctx, framework, chain) {
183
+ var _a;
184
+ const config = ctx.initialConfig;
185
+ const alias = chain.resolve.alias;
186
+ if (framework === 'react') {
187
+ alias.set('react-dom$', '@tarojs/react');
188
+ if (process.env.NODE_ENV !== 'production' && ((_a = config.mini) === null || _a === void 0 ? void 0 : _a.debugReact) !== true) {
189
+ // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积
190
+ alias.set('react-reconciler$', 'react-reconciler/cjs/react-reconciler.production.min.js');
191
+ alias.set('react$', 'react/cjs/react.production.min.js');
192
+ alias.set('scheduler$', 'scheduler/cjs/scheduler.production.min.js');
193
+ alias.set('react/jsx-runtime$', 'react/cjs/react-jsx-runtime.production.min.js');
194
+ // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。
195
+ // Why wiriteJson? prebundle will load package.json via readFile to check exports property.
196
+ const reactPkgPath = require.resolve('react/package.json');
197
+ if (reactPkgPath) {
198
+ const reactPkg = require('react/package.json');
199
+ const reactVersion = (reactPkg.version || '');
200
+ if ((/^[~^]?18/).test(reactVersion) && reactPkg.exports) {
201
+ reactPkg.exports = Object.assign(reactPkg.exports, {
202
+ './cjs/': './cjs/'
203
+ });
204
+ helper.fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 });
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }
210
+ function setLoader(framework, chain) {
211
+ chain.plugin('miniPlugin')
212
+ .tap(args => {
213
+ args[0].loaderMeta = getLoaderMeta(framework);
214
+ return args;
215
+ });
203
216
  }
204
217
 
205
- var index = (ctx) => {
206
- const { framework } = ctx.initialConfig;
207
- if (framework !== 'react' && framework !== 'nerv' && framework !== 'preact')
208
- return;
209
- ctx.modifyWebpackChain(({ chain }) => {
210
- // 通用
211
- setAlias(framework, chain);
212
- chain
213
- .plugin('definePlugin')
214
- .tap(args => {
215
- const config = args[0];
216
- config.__TARO_FRAMEWORK__ = `"${framework}"`;
217
- return args;
218
- });
219
- if (process.env.TARO_ENV === 'h5') {
220
- // H5
221
- modifyH5WebpackChain(ctx, framework, chain);
222
- }
223
- else {
224
- // 小程序
225
- modifyMiniWebpackChain(ctx, framework, chain);
226
- }
227
- });
228
- };
229
- function setAlias(framework, chain) {
230
- const alias = chain.resolve.alias;
231
- switch (framework) {
232
- case 'preact':
233
- alias.set('react', 'preact/compat');
234
- alias.set('react-dom/test-utils', 'preact/test-utils');
235
- alias.set('react-dom', 'preact/compat');
236
- alias.set('react/jsx-runtime', 'preact/jsx-runtime');
237
- break;
238
- case 'nerv':
239
- alias.set('react$', 'nervjs');
240
- alias.set('react-dom$', 'nervjs');
241
- break;
242
- }
218
+ var index = (ctx, config = {}) => {
219
+ const { framework } = ctx.initialConfig;
220
+ const { reactMode = 'legacy' } = config; // will change default value in the future
221
+ if (framework !== 'react' && framework !== 'nerv' && framework !== 'preact')
222
+ return;
223
+ ctx.modifyWebpackChain(({ chain }) => {
224
+ // 通用
225
+ setAlias(framework, chain);
226
+ chain
227
+ .plugin('definePlugin')
228
+ .tap(args => {
229
+ const config = args[0];
230
+ config.__TARO_FRAMEWORK__ = `"${framework}"`;
231
+ config.__TARO_FRAMEWORK_REACT_MODE__ = `"${reactMode}"`;
232
+ return args;
233
+ });
234
+ if (process.env.TARO_ENV === 'h5') {
235
+ // H5
236
+ modifyH5WebpackChain(ctx, framework, chain);
237
+ }
238
+ else {
239
+ // 小程序
240
+ modifyMiniWebpackChain(ctx, framework, chain);
241
+ }
242
+ });
243
+ ctx.modifyRunnerOpts(({ opts }) => {
244
+ if (!(opts === null || opts === void 0 ? void 0 : opts.compiler))
245
+ return;
246
+ // 提供给 webpack5 依赖预编译收集器的第三方依赖
247
+ const deps = [
248
+ 'react',
249
+ 'react-dom',
250
+ 'react/jsx-runtime',
251
+ '@tarojs/plugin-framework-react/dist/runtime'
252
+ ];
253
+ if (shared.isString(opts.compiler)) {
254
+ opts.compiler = {
255
+ type: opts.compiler
256
+ };
257
+ }
258
+ const { compiler } = opts;
259
+ if (compiler.type === 'webpack5') {
260
+ compiler.prebundle || (compiler.prebundle = {});
261
+ const prebundleOptions = compiler.prebundle;
262
+ prebundleOptions.include || (prebundleOptions.include = []);
263
+ prebundleOptions.include = prebundleOptions.include.concat(deps);
264
+ if (prebundleOptions.enable === false)
265
+ return;
266
+ const taroReactPlugin = {
267
+ name: 'taroReactPlugin',
268
+ setup(build) {
269
+ build.onLoad({ filter: /taro-h5[\\/]dist[\\/]index/ }, ({ path }) => {
270
+ const content = helper.fs.readFileSync(path).toString();
271
+ return {
272
+ contents: require('./api-loader')(content)
273
+ };
274
+ });
275
+ }
276
+ };
277
+ prebundleOptions.esbuild || (prebundleOptions.esbuild = {});
278
+ const esbuildConfig = prebundleOptions.esbuild;
279
+ esbuildConfig.plugins || (esbuildConfig.plugins = []);
280
+ esbuildConfig.plugins.push(taroReactPlugin);
281
+ }
282
+ });
283
+ };
284
+ function setAlias(framework, chain) {
285
+ const alias = chain.resolve.alias;
286
+ switch (framework) {
287
+ case 'preact':
288
+ alias.set('react', 'preact/compat');
289
+ alias.set('react-dom/test-utils', 'preact/test-utils');
290
+ alias.set('react-dom', 'preact/compat');
291
+ alias.set('react/jsx-runtime', 'preact/jsx-runtime');
292
+ break;
293
+ case 'nerv':
294
+ alias.set('react$', 'nervjs');
295
+ alias.set('react-dom$', 'nervjs');
296
+ break;
297
+ }
243
298
  }
244
299
 
245
- exports['default'] = index;
300
+ exports["default"] = index;
246
301
  //# sourceMappingURL=index.js.map