@tarojs/plugin-framework-react 3.7.0-canary.0 → 3.8.0-canary.0
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/dist/index.js +51 -295
- package/dist/index.js.map +1 -1
- package/dist/runtime.js +245 -45
- package/dist/runtime.js.map +1 -1
- package/package.json +7 -16
package/dist/index.js
CHANGED
|
@@ -7,134 +7,28 @@ var shared = require('@tarojs/shared');
|
|
|
7
7
|
var lodash = require('lodash');
|
|
8
8
|
var acorn = require('acorn');
|
|
9
9
|
var walk = require('acorn-walk');
|
|
10
|
+
var path = require('node:path');
|
|
10
11
|
|
|
11
12
|
function _interopNamespaceDefault(e) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
});
|
|
21
|
-
}
|
|
13
|
+
var n = Object.create(null);
|
|
14
|
+
if (e) {
|
|
15
|
+
Object.keys(e).forEach(function (k) {
|
|
16
|
+
if (k !== 'default') {
|
|
17
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return e[k]; }
|
|
22
21
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
n.default = e;
|
|
26
|
+
return Object.freeze(n);
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
var acorn__namespace = /*#__PURE__*/_interopNamespaceDefault(acorn);
|
|
29
30
|
var walk__namespace = /*#__PURE__*/_interopNamespaceDefault(walk);
|
|
30
31
|
|
|
31
|
-
/******************************************************************************
|
|
32
|
-
Copyright (c) Microsoft Corporation.
|
|
33
|
-
|
|
34
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
35
|
-
purpose with or without fee is hereby granted.
|
|
36
|
-
|
|
37
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
38
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
39
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
40
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
41
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
42
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
43
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
44
|
-
***************************************************************************** */
|
|
45
|
-
/* global Reflect, Promise */
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
49
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
50
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
51
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
52
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
53
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
54
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function apiLoader (str) {
|
|
59
|
-
return `import {
|
|
60
|
-
useAddToFavorites,
|
|
61
|
-
useDidHide,
|
|
62
|
-
useDidShow,
|
|
63
|
-
useError,
|
|
64
|
-
useLaunch,
|
|
65
|
-
useLoad,
|
|
66
|
-
useOptionMenuClick,
|
|
67
|
-
usePageNotFound,
|
|
68
|
-
usePageScroll,
|
|
69
|
-
usePullDownRefresh,
|
|
70
|
-
usePullIntercept,
|
|
71
|
-
useReachBottom,
|
|
72
|
-
useReady,
|
|
73
|
-
useResize,
|
|
74
|
-
useRouter,
|
|
75
|
-
useSaveExitState,
|
|
76
|
-
useShareAppMessage,
|
|
77
|
-
useShareTimeline,
|
|
78
|
-
useTabItemTap,
|
|
79
|
-
useTitleClick,
|
|
80
|
-
useScope,
|
|
81
|
-
useUnhandledRejection,
|
|
82
|
-
useUnload
|
|
83
|
-
} from '@tarojs/plugin-framework-react/dist/runtime'
|
|
84
|
-
${str}
|
|
85
|
-
|
|
86
|
-
taro.useAddToFavorites = useAddToFavorites
|
|
87
|
-
taro.useDidHide = useDidHide
|
|
88
|
-
taro.useDidShow = useDidShow
|
|
89
|
-
taro.useError = useError
|
|
90
|
-
taro.useLaunch = useLaunch
|
|
91
|
-
taro.useLoad = useLoad
|
|
92
|
-
taro.useOptionMenuClick = useOptionMenuClick
|
|
93
|
-
taro.usePageNotFound = usePageNotFound
|
|
94
|
-
taro.usePageScroll = usePageScroll
|
|
95
|
-
taro.usePullDownRefresh = usePullDownRefresh
|
|
96
|
-
taro.usePullIntercept = usePullIntercept
|
|
97
|
-
taro.useReachBottom = useReachBottom
|
|
98
|
-
taro.useReady = useReady
|
|
99
|
-
taro.useResize = useResize
|
|
100
|
-
taro.useRouter = useRouter
|
|
101
|
-
taro.useSaveExitState = useSaveExitState
|
|
102
|
-
taro.useShareAppMessage = useShareAppMessage
|
|
103
|
-
taro.useShareTimeline = useShareTimeline
|
|
104
|
-
taro.useTabItemTap = useTabItemTap
|
|
105
|
-
taro.useTitleClick = useTitleClick
|
|
106
|
-
taro.useScope = useScope
|
|
107
|
-
taro.useUnhandledRejection = useUnhandledRejection
|
|
108
|
-
taro.useUnload = useUnload
|
|
109
|
-
|
|
110
|
-
export {
|
|
111
|
-
useAddToFavorites,
|
|
112
|
-
useDidHide,
|
|
113
|
-
useDidShow,
|
|
114
|
-
useError,
|
|
115
|
-
useLaunch,
|
|
116
|
-
useLoad,
|
|
117
|
-
useOptionMenuClick,
|
|
118
|
-
usePageNotFound,
|
|
119
|
-
usePageScroll,
|
|
120
|
-
usePullDownRefresh,
|
|
121
|
-
usePullIntercept,
|
|
122
|
-
useReachBottom,
|
|
123
|
-
useReady,
|
|
124
|
-
useResize,
|
|
125
|
-
useRouter,
|
|
126
|
-
useSaveExitState,
|
|
127
|
-
useShareAppMessage,
|
|
128
|
-
useShareTimeline,
|
|
129
|
-
useTabItemTap,
|
|
130
|
-
useTitleClick,
|
|
131
|
-
useScope,
|
|
132
|
-
useUnhandledRejection,
|
|
133
|
-
useUnload
|
|
134
|
-
}
|
|
135
|
-
`;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
32
|
function addConfig(source) {
|
|
139
33
|
const configsMap = {
|
|
140
34
|
enableShareAppMessage: ['onShareAppMessage', 'useShareAppMessage'],
|
|
@@ -241,117 +135,6 @@ class App extends React.Component {
|
|
|
241
135
|
return loaderMeta;
|
|
242
136
|
}
|
|
243
137
|
|
|
244
|
-
function h5iVitePlugin(framework) {
|
|
245
|
-
return [
|
|
246
|
-
injectLoaderMeta$1(framework),
|
|
247
|
-
setTaroApi()
|
|
248
|
-
];
|
|
249
|
-
}
|
|
250
|
-
function injectLoaderMeta$1(framework) {
|
|
251
|
-
function customizer(object = '', sources = '') {
|
|
252
|
-
if ([object, sources].every(e => typeof e === 'string'))
|
|
253
|
-
return object + sources;
|
|
254
|
-
}
|
|
255
|
-
return {
|
|
256
|
-
name: 'taro-react:loader-meta',
|
|
257
|
-
buildStart() {
|
|
258
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
259
|
-
yield this.load({ id: 'taro:compiler' });
|
|
260
|
-
const info = this.getModuleInfo('taro:compiler');
|
|
261
|
-
const compiler = info === null || info === void 0 ? void 0 : info.meta.compiler;
|
|
262
|
-
if (compiler) {
|
|
263
|
-
compiler.loaderMeta = lodash.mergeWith(getLoaderMeta(framework), compiler.loaderMeta, customizer);
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
};
|
|
268
|
-
}
|
|
269
|
-
function setTaroApi() {
|
|
270
|
-
return {
|
|
271
|
-
name: 'taro-react:process-import-taro',
|
|
272
|
-
enforce: 'pre',
|
|
273
|
-
config: () => ({
|
|
274
|
-
optimizeDeps: {
|
|
275
|
-
force: true,
|
|
276
|
-
esbuildOptions: {
|
|
277
|
-
plugins: [
|
|
278
|
-
{
|
|
279
|
-
name: 'taro:react-api',
|
|
280
|
-
setup(build) {
|
|
281
|
-
build.onLoad({ filter: /@tarojs[\\/]plugin-platform-h5[\\/]dist[\\/]runtime[\\/]apis[\\/]index/ }, (args) => __awaiter(this, void 0, void 0, function* () {
|
|
282
|
-
const input = yield helper.fs.readFile(args.path, 'utf8');
|
|
283
|
-
return {
|
|
284
|
-
contents: apiLoader(input + '\n' + 'const taro = Taro__default\n')
|
|
285
|
-
};
|
|
286
|
-
}));
|
|
287
|
-
},
|
|
288
|
-
}
|
|
289
|
-
]
|
|
290
|
-
}
|
|
291
|
-
},
|
|
292
|
-
})
|
|
293
|
-
};
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
function miniVitePlugin(ctx, framework) {
|
|
297
|
-
return [
|
|
298
|
-
injectLoaderMeta(framework),
|
|
299
|
-
aliasPlugin(ctx, framework),
|
|
300
|
-
];
|
|
301
|
-
}
|
|
302
|
-
function injectLoaderMeta(framework) {
|
|
303
|
-
return {
|
|
304
|
-
name: 'taro-react:loader-meta',
|
|
305
|
-
buildStart() {
|
|
306
|
-
const info = this.getModuleInfo('taro:compiler');
|
|
307
|
-
const compiler = info === null || info === void 0 ? void 0 : info.meta.compiler;
|
|
308
|
-
if (compiler) {
|
|
309
|
-
compiler.loaderMeta = getLoaderMeta(framework);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
};
|
|
313
|
-
}
|
|
314
|
-
function aliasPlugin(ctx, framework) {
|
|
315
|
-
if (framework === 'react') {
|
|
316
|
-
return {
|
|
317
|
-
name: 'taro-react:alias',
|
|
318
|
-
config(config) {
|
|
319
|
-
var _a;
|
|
320
|
-
const alias = [
|
|
321
|
-
{ find: /react-dom$/, replacement: '@tarojs/react' }
|
|
322
|
-
];
|
|
323
|
-
const isProd = config.mode === 'production';
|
|
324
|
-
if (!isProd && ((_a = ctx.initialConfig.mini) === null || _a === void 0 ? void 0 : _a.debugReact) !== true) {
|
|
325
|
-
// 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积
|
|
326
|
-
alias.push({ find: /react-reconciler$/, replacement: 'react-reconciler/cjs/react-reconciler.production.min.js' });
|
|
327
|
-
alias.push({ find: /react$/, replacement: 'react/cjs/react.production.min.js' });
|
|
328
|
-
alias.push({ find: /scheduler$/, replacement: 'scheduler/cjs/scheduler.production.min.js' });
|
|
329
|
-
alias.push({ find: /react\/jsx-runtime$/, replacement: 'react/cjs/react-jsx-runtime.production.min.js' });
|
|
330
|
-
// 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。
|
|
331
|
-
// Why writeJson? prebundle will load package.json via readFile to check exports property.
|
|
332
|
-
const reactPkgPath = require.resolve('react/package.json', { paths: [process.cwd()] });
|
|
333
|
-
if (reactPkgPath) {
|
|
334
|
-
const reactPkg = require('react/package.json');
|
|
335
|
-
const reactVersion = (reactPkg.version || '');
|
|
336
|
-
if ((/^[~^]?18/).test(reactVersion) && reactPkg.exports) {
|
|
337
|
-
reactPkg.exports = Object.assign(reactPkg.exports, {
|
|
338
|
-
'./cjs/': './cjs/'
|
|
339
|
-
});
|
|
340
|
-
helper.fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 });
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
return {
|
|
345
|
-
resolve: {
|
|
346
|
-
alias
|
|
347
|
-
}
|
|
348
|
-
};
|
|
349
|
-
}
|
|
350
|
-
};
|
|
351
|
-
}
|
|
352
|
-
return [];
|
|
353
|
-
}
|
|
354
|
-
|
|
355
138
|
function modifyH5WebpackChain(ctx, framework, chain) {
|
|
356
139
|
var _a;
|
|
357
140
|
setLoader$1(framework, chain);
|
|
@@ -371,19 +154,20 @@ function modifyH5WebpackChain(ctx, framework, chain) {
|
|
|
371
154
|
module: {
|
|
372
155
|
rule: {
|
|
373
156
|
'process-import-taro': {
|
|
374
|
-
test:
|
|
375
|
-
loader: require.resolve('./api-loader')
|
|
376
|
-
}
|
|
377
|
-
}
|
|
157
|
+
test: /taro-h5[\\/]dist[\\/]api[\\/]taro/,
|
|
158
|
+
loader: require.resolve('./api-loader')
|
|
159
|
+
}
|
|
160
|
+
}
|
|
378
161
|
},
|
|
379
162
|
});
|
|
380
163
|
}
|
|
381
164
|
function setLoader$1(framework, chain) {
|
|
382
165
|
function customizer(object = '', sources = '') {
|
|
383
|
-
if ([object, sources].every(
|
|
166
|
+
if ([object, sources].every(e => typeof e === 'string'))
|
|
384
167
|
return object + sources;
|
|
385
168
|
}
|
|
386
|
-
chain.plugin('mainPlugin')
|
|
169
|
+
chain.plugin('mainPlugin')
|
|
170
|
+
.tap(args => {
|
|
387
171
|
args[0].loaderMeta = lodash.mergeWith(getLoaderMeta(framework), args[0].loaderMeta, customizer);
|
|
388
172
|
return args;
|
|
389
173
|
});
|
|
@@ -396,11 +180,17 @@ function setPlugin(ctx, framework, chain) {
|
|
|
396
180
|
if (!isProd && ((_b = (_a = config.h5) === null || _a === void 0 ? void 0 : _a.devServer) === null || _b === void 0 ? void 0 : _b.hot) !== false) {
|
|
397
181
|
// 默认开启 fast-refresh
|
|
398
182
|
if (framework === 'react') {
|
|
399
|
-
chain
|
|
183
|
+
chain
|
|
184
|
+
.plugin('fastRefreshPlugin')
|
|
185
|
+
.use(require('@pmmmwh/react-refresh-webpack-plugin'));
|
|
400
186
|
}
|
|
401
187
|
else if (framework === 'preact') {
|
|
402
|
-
chain
|
|
403
|
-
|
|
188
|
+
chain
|
|
189
|
+
.plugin('hotModuleReplacementPlugin')
|
|
190
|
+
.use(require('webpack').HotModuleReplacementPlugin);
|
|
191
|
+
chain
|
|
192
|
+
.plugin('fastRefreshPlugin')
|
|
193
|
+
.use(require('@prefresh/webpack'));
|
|
404
194
|
}
|
|
405
195
|
}
|
|
406
196
|
}
|
|
@@ -419,18 +209,21 @@ function setAlias$1(ctx, framework, chain) {
|
|
|
419
209
|
const isProd = webpackConfig.mode === 'production';
|
|
420
210
|
if (!isProd && ((_a = config.mini) === null || _a === void 0 ? void 0 : _a.debugReact) !== true) {
|
|
421
211
|
// 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积
|
|
212
|
+
// 兼容pnpm workspace
|
|
213
|
+
const reactModulePath = require.resolve('react', { paths: [process.cwd()] });
|
|
214
|
+
const newFilePath = path.join(path.dirname(reactModulePath), 'cjs', 'react.production.min.js');
|
|
422
215
|
alias.set('react-reconciler$', 'react-reconciler/cjs/react-reconciler.production.min.js');
|
|
423
|
-
alias.set('react$',
|
|
216
|
+
alias.set('react$', newFilePath);
|
|
424
217
|
alias.set('react/jsx-runtime$', 'react/cjs/react-jsx-runtime.production.min.js');
|
|
425
218
|
// 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。
|
|
426
219
|
// Why writeJson? prebundle will load package.json via readFile to check exports property.
|
|
427
220
|
const reactPkgPath = require.resolve('react/package.json', { paths: [process.cwd()] });
|
|
428
221
|
if (reactPkgPath) {
|
|
429
222
|
const reactPkg = require('react/package.json');
|
|
430
|
-
const reactVersion =
|
|
431
|
-
if (
|
|
223
|
+
const reactVersion = reactPkg.version || '';
|
|
224
|
+
if (/^[~^]?18/.test(reactVersion) && reactPkg.exports) {
|
|
432
225
|
reactPkg.exports = Object.assign(reactPkg.exports, {
|
|
433
|
-
'./cjs/': './cjs/'
|
|
226
|
+
'./cjs/': './cjs/',
|
|
434
227
|
});
|
|
435
228
|
helper.fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 });
|
|
436
229
|
}
|
|
@@ -439,8 +232,7 @@ function setAlias$1(ctx, framework, chain) {
|
|
|
439
232
|
}
|
|
440
233
|
}
|
|
441
234
|
function setLoader(framework, chain) {
|
|
442
|
-
chain.plugin('miniPlugin')
|
|
443
|
-
.tap(args => {
|
|
235
|
+
chain.plugin('miniPlugin').tap((args) => {
|
|
444
236
|
args[0].loaderMeta = getLoaderMeta(framework);
|
|
445
237
|
return args;
|
|
446
238
|
});
|
|
@@ -453,7 +245,9 @@ var index = (ctx) => {
|
|
|
453
245
|
ctx.modifyWebpackChain(({ chain }) => {
|
|
454
246
|
// 通用
|
|
455
247
|
setAlias(framework, chain);
|
|
456
|
-
chain
|
|
248
|
+
chain
|
|
249
|
+
.plugin('definePlugin')
|
|
250
|
+
.tap(args => {
|
|
457
251
|
const config = args[0];
|
|
458
252
|
config.__TARO_FRAMEWORK__ = `"${framework}"`;
|
|
459
253
|
return args;
|
|
@@ -472,13 +266,18 @@ var index = (ctx) => {
|
|
|
472
266
|
return;
|
|
473
267
|
if (shared.isString(opts.compiler)) {
|
|
474
268
|
opts.compiler = {
|
|
475
|
-
type: opts.compiler
|
|
269
|
+
type: opts.compiler
|
|
476
270
|
};
|
|
477
271
|
}
|
|
478
272
|
const { compiler } = opts;
|
|
479
273
|
if (compiler.type === 'webpack5') {
|
|
480
274
|
// 提供给 webpack5 依赖预编译收集器的第三方依赖
|
|
481
|
-
const deps = [
|
|
275
|
+
const deps = [
|
|
276
|
+
'react',
|
|
277
|
+
'react-dom',
|
|
278
|
+
'react/jsx-runtime',
|
|
279
|
+
'@tarojs/plugin-framework-react/dist/runtime'
|
|
280
|
+
];
|
|
482
281
|
compiler.prebundle || (compiler.prebundle = {});
|
|
483
282
|
const prebundleOptions = compiler.prebundle;
|
|
484
283
|
prebundleOptions.include || (prebundleOptions.include = []);
|
|
@@ -490,32 +289,19 @@ var index = (ctx) => {
|
|
|
490
289
|
const taroReactPlugin = {
|
|
491
290
|
name: 'taroReactPlugin',
|
|
492
291
|
setup(build) {
|
|
493
|
-
build.onLoad({ filter:
|
|
292
|
+
build.onLoad({ filter: /taro-h5[\\/]dist[\\/]api[\\/]taro/ }, ({ path }) => {
|
|
494
293
|
const content = helper.fs.readFileSync(path).toString();
|
|
495
294
|
return {
|
|
496
|
-
contents: require('./api-loader')(content)
|
|
295
|
+
contents: require('./api-loader')(content)
|
|
497
296
|
};
|
|
498
297
|
});
|
|
499
|
-
}
|
|
298
|
+
}
|
|
500
299
|
};
|
|
501
300
|
prebundleOptions.esbuild || (prebundleOptions.esbuild = {});
|
|
502
301
|
const esbuildConfig = prebundleOptions.esbuild;
|
|
503
302
|
esbuildConfig.plugins || (esbuildConfig.plugins = []);
|
|
504
303
|
esbuildConfig.plugins.push(taroReactPlugin);
|
|
505
304
|
}
|
|
506
|
-
else if (compiler.type === 'vite') {
|
|
507
|
-
compiler.vitePlugins || (compiler.vitePlugins = []);
|
|
508
|
-
compiler.vitePlugins.push(viteCommonPlugin(framework));
|
|
509
|
-
compiler.vitePlugins.push(require('@vitejs/plugin-react').default());
|
|
510
|
-
if (shared.isWebPlatform()) {
|
|
511
|
-
// H5
|
|
512
|
-
compiler.vitePlugins.push(h5iVitePlugin(framework));
|
|
513
|
-
}
|
|
514
|
-
else {
|
|
515
|
-
// 小程序
|
|
516
|
-
compiler.vitePlugins.push(miniVitePlugin(ctx, framework));
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
305
|
});
|
|
520
306
|
};
|
|
521
307
|
function setAlias(framework, chain) {
|
|
@@ -533,36 +319,6 @@ function setAlias(framework, chain) {
|
|
|
533
319
|
break;
|
|
534
320
|
}
|
|
535
321
|
}
|
|
536
|
-
function viteCommonPlugin(framework) {
|
|
537
|
-
return {
|
|
538
|
-
name: 'taro-react:common',
|
|
539
|
-
config() {
|
|
540
|
-
const alias = framework === 'preact'
|
|
541
|
-
? [
|
|
542
|
-
{ find: 'react', replacement: 'preact/compat' },
|
|
543
|
-
{ find: 'react-dom/test-utils', replacement: 'preact/test-utils' },
|
|
544
|
-
{ find: 'react-dom', replacement: 'preact/compat' },
|
|
545
|
-
{ find: 'react/jsx-runtime', replacement: 'preact/jsx-runtime' },
|
|
546
|
-
]
|
|
547
|
-
: [];
|
|
548
|
-
return {
|
|
549
|
-
optimizeDeps: {
|
|
550
|
-
esbuildOptions: {
|
|
551
|
-
define: {
|
|
552
|
-
__TARO_FRAMEWORK__: `"${framework}"`
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
},
|
|
556
|
-
define: {
|
|
557
|
-
__TARO_FRAMEWORK__: `"${framework}"`,
|
|
558
|
-
},
|
|
559
|
-
resolve: {
|
|
560
|
-
alias,
|
|
561
|
-
},
|
|
562
|
-
};
|
|
563
|
-
},
|
|
564
|
-
};
|
|
565
|
-
}
|
|
566
322
|
|
|
567
323
|
exports.default = index;
|
|
568
324
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/api-loader.ts","../src/loader-meta.ts","../src/vite.h5.ts","../src/vite.mini.ts","../src/webpack.h5.ts","../src/webpack.mini.ts","../src/index.ts"],"sourcesContent":["export default function (str: string) {\n return `import {\n useAddToFavorites,\n useDidHide,\n useDidShow,\n useError,\n useLaunch,\n useLoad,\n useOptionMenuClick,\n usePageNotFound,\n usePageScroll,\n usePullDownRefresh,\n usePullIntercept,\n useReachBottom,\n useReady,\n useResize,\n useRouter,\n useSaveExitState,\n useShareAppMessage,\n useShareTimeline,\n useTabItemTap,\n useTitleClick,\n useScope,\n useUnhandledRejection,\n useUnload\n} from '@tarojs/plugin-framework-react/dist/runtime'\n${str}\n\ntaro.useAddToFavorites = useAddToFavorites\ntaro.useDidHide = useDidHide\ntaro.useDidShow = useDidShow\ntaro.useError = useError\ntaro.useLaunch = useLaunch\ntaro.useLoad = useLoad\ntaro.useOptionMenuClick = useOptionMenuClick\ntaro.usePageNotFound = usePageNotFound\ntaro.usePageScroll = usePageScroll\ntaro.usePullDownRefresh = usePullDownRefresh\ntaro.usePullIntercept = usePullIntercept\ntaro.useReachBottom = useReachBottom\ntaro.useReady = useReady\ntaro.useResize = useResize\ntaro.useRouter = useRouter\ntaro.useSaveExitState = useSaveExitState\ntaro.useShareAppMessage = useShareAppMessage\ntaro.useShareTimeline = useShareTimeline\ntaro.useTabItemTap = useTabItemTap\ntaro.useTitleClick = useTitleClick\ntaro.useScope = useScope\ntaro.useUnhandledRejection = useUnhandledRejection\ntaro.useUnload = useUnload\n\nexport {\n useAddToFavorites,\n useDidHide,\n useDidShow,\n useError,\n useLaunch,\n useLoad,\n useOptionMenuClick,\n usePageNotFound,\n usePageScroll,\n usePullDownRefresh,\n usePullIntercept,\n useReachBottom,\n useReady,\n useResize,\n useRouter,\n useSaveExitState,\n useShareAppMessage,\n useShareTimeline,\n useTabItemTap,\n useTitleClick,\n useScope,\n useUnhandledRejection,\n useUnload\n}\n`\n}\n","import { isWebPlatform } from '@tarojs/shared'\nimport * as acorn from 'acorn'\nimport * as walk from 'acorn-walk'\n\nimport { Frameworks } from './index'\n\ninterface ILoaderMeta {\n importFrameworkStatement: string\n mockAppStatement: string\n frameworkArgs: string\n creator: string\n creatorLocation: string\n extraImportForWeb: string\n execBeforeCreateWebApp: string\n importFrameworkName: string\n isNeedRawLoader?: boolean\n modifyConfig?: (config: Record<string, any>, source: string) => void\n}\n\nfunction addConfig (source) {\n const configsMap = {\n enableShareAppMessage: ['onShareAppMessage', 'useShareAppMessage'],\n enableShareTimeline: ['onShareTimeline', 'useShareTimeline']\n }\n const ast = acorn.parse(source, {\n ecmaVersion: 'latest',\n sourceType: 'module'\n })\n\n const additionConfig: Record<string, any> = {}\n\n function check (name: string) {\n Object.keys(configsMap).forEach(configName => {\n const apis: string[] = configsMap[configName]\n if (apis.includes(name)) {\n additionConfig[configName] = true\n }\n })\n }\n\n walk.simple(ast, {\n FunctionExpression (node: any) {\n if (!node.id || !node.id.name) return\n check(node.id.name)\n },\n FunctionDeclaration (node: any) {\n if (!node.id || !node.id.name) return\n check(node.id.name)\n },\n CallExpression (node: any) {\n const { callee } = node\n if (callee.type === 'Identifier') {\n check(callee.name)\n } else if (callee.type === 'MemberExpression') {\n if (callee.property.type === 'Identifier') {\n check(callee.property.name)\n } else if (callee.property.type === 'Literal') {\n check(callee.property.value)\n }\n }\n node.arguments.forEach(item => {\n if (item.type === 'Literal' && item.value) {\n check(item.value)\n }\n })\n }\n })\n\n return additionConfig\n}\n\nconst nervMeta = {\n importFrameworkStatement: `\nimport Nerv from 'nervjs';\n`,\n mockAppStatement: `\nclass App extends Nerv.Component {\nrender () {\n return this.props.children\n}\n}\n`,\n frameworkArgs: 'Nerv, Nerv, config',\n importFrameworkName: 'Nerv'\n}\n\nexport function getLoaderMeta (framework: Frameworks): ILoaderMeta {\n const loaderMeta = {\n importFrameworkStatement: `\nimport * as React from 'react'\nimport ReactDOM from 'react-dom'\n`,\n mockAppStatement: `\nclass App extends React.Component {\n render () {\n return this.props.children\n }\n}\n`,\n frameworkArgs: 'React, ReactDOM, config',\n creator: 'createReactApp',\n creatorLocation: '@tarojs/plugin-framework-react/dist/runtime',\n importFrameworkName: 'React',\n extraImportForWeb: '',\n execBeforeCreateWebApp: '',\n modifyConfig (config, source) {\n Object.assign(config, addConfig(source))\n }\n }\n if (framework === 'nerv') {\n Object.assign(loaderMeta, nervMeta)\n }\n\n if (isWebPlatform()) {\n if (framework === 'react') {\n const react = require('react')\n const majorVersion = Number((react.version || '18').split('.')[0])\n if ( majorVersion >= 18) {\n // Note: In react 18 or above, should using react-dom/client\n loaderMeta.importFrameworkStatement = loaderMeta.importFrameworkStatement.replace('\\'react-dom\\'', '\\'react-dom/client\\'')\n loaderMeta.extraImportForWeb += `import { findDOMNode, render, unstable_batchedUpdates } from 'react-dom'\\n`\n loaderMeta.execBeforeCreateWebApp += `Object.assign(ReactDOM, { findDOMNode, render, unstable_batchedUpdates })\\n`\n }\n }\n }\n return loaderMeta\n}\n","import { fs } from '@tarojs/helper'\nimport { mergeWith } from 'lodash'\n\nimport apiLoader from './api-loader'\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { PluginOption } from 'vite'\nimport type { Frameworks } from './index'\n\nexport function h5iVitePlugin (framework: Frameworks): PluginOption {\n return [\n injectLoaderMeta(framework),\n setTaroApi()\n ]\n}\n\nfunction injectLoaderMeta (framework): PluginOption {\n function customizer (object = '', sources = '') {\n if ([object, sources].every(e => typeof e === 'string')) return object + sources\n }\n return {\n name: 'taro-react:loader-meta',\n async buildStart () {\n await this.load({ id: 'taro:compiler' })\n const info = this.getModuleInfo('taro:compiler')\n const compiler = info?.meta.compiler\n if (compiler) {\n compiler.loaderMeta = mergeWith(\n getLoaderMeta(framework), compiler.loaderMeta, customizer\n )\n }\n }\n }\n}\n\nfunction setTaroApi (): PluginOption {\n return {\n name: 'taro-react:process-import-taro',\n enforce: 'pre',\n config: () => ({\n optimizeDeps: {\n force: true,\n esbuildOptions: {\n plugins: [\n {\n name: 'taro:react-api',\n setup (build) {\n build.onLoad({ filter: /@tarojs[\\\\/]plugin-platform-h5[\\\\/]dist[\\\\/]runtime[\\\\/]apis[\\\\/]index/ }, async (args) => {\n const input = await fs.readFile(args.path, 'utf8')\n return {\n contents: apiLoader(input + '\\n' + 'const taro = Taro__default\\n')\n }\n })\n },\n }\n ]\n }\n },\n })\n }\n}\n","import { fs } from '@tarojs/helper'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { PluginOption } from 'vite'\nimport type { Frameworks } from './index'\n\nexport function miniVitePlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return [\n injectLoaderMeta(framework),\n aliasPlugin(ctx, framework),\n ]\n}\n\nfunction injectLoaderMeta (framework: Frameworks): PluginOption {\n return {\n name: 'taro-react:loader-meta',\n buildStart () {\n const info = this.getModuleInfo('taro:compiler')\n const compiler = info?.meta.compiler\n if (compiler) {\n compiler.loaderMeta = getLoaderMeta(framework)\n }\n }\n }\n}\n\nfunction aliasPlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n if (framework === 'react') {\n return {\n name: 'taro-react:alias',\n config (config) {\n const alias: ({ find: string | RegExp, replacement: string })[] = [\n { find: /react-dom$/, replacement: '@tarojs/react' }\n ]\n\n const isProd = config.mode === 'production'\n\n if (!isProd && ctx.initialConfig.mini?.debugReact !== true) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n alias.push({ find: /react-reconciler$/, replacement: 'react-reconciler/cjs/react-reconciler.production.min.js' })\n alias.push({ find: /react$/, replacement: 'react/cjs/react.production.min.js' })\n alias.push({ find: /scheduler$/, replacement: 'scheduler/cjs/scheduler.production.min.js' })\n alias.push({ find: /react\\/jsx-runtime$/, replacement: 'react/cjs/react-jsx-runtime.production.min.js' })\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = require.resolve('react/package.json', { paths: [process.cwd()] })\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = (reactPkg.version || '')\n if ((/^[~^]?18/).test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/'\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n\n return {\n resolve: {\n alias\n }\n }\n }\n }\n }\n return []\n}\n","import { REG_TARO_H5 } from '@tarojs/helper'\nimport { mergeWith } from 'lodash'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type Chain from 'webpack-chain'\nimport type { Frameworks } from './index'\n\nexport function modifyH5WebpackChain (ctx: IPluginContext, framework: Frameworks, chain: Chain) {\n setLoader(framework, chain)\n setPlugin(ctx, framework, chain)\n\n const { isBuildNativeComp = false } = ctx.runOpts?.options || {}\n const externals: Record<string, string> = {}\n if (isBuildNativeComp) {\n // Note: 该模式不支持 prebundle 优化,不必再处理\n externals.react = 'React'\n externals['react-dom'] = 'ReactDOM'\n if (framework === 'preact') {\n externals.preact = 'preact'\n }\n }\n\n chain.merge({\n externals,\n module: {\n rule: {\n 'process-import-taro': {\n test: REG_TARO_H5,\n loader: require.resolve('./api-loader'),\n },\n },\n },\n })\n}\n\nfunction setLoader(framework: Frameworks, chain) {\n function customizer(object = '', sources = '') {\n if ([object, sources].every((e) => typeof e === 'string')) return object + sources\n }\n chain.plugin('mainPlugin').tap((args) => {\n args[0].loaderMeta = mergeWith(getLoaderMeta(framework), args[0].loaderMeta, customizer)\n return args\n })\n}\n\nfunction setPlugin(ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.h5?.devServer?.hot !== false) {\n // 默认开启 fast-refresh\n if (framework === 'react') {\n chain.plugin('fastRefreshPlugin').use(require('@pmmmwh/react-refresh-webpack-plugin'))\n } else if (framework === 'preact') {\n chain.plugin('hotModuleReplacementPlugin').use(require('webpack').HotModuleReplacementPlugin)\n chain.plugin('fastRefreshPlugin').use(require('@prefresh/webpack'))\n }\n }\n}\n","\nimport { fs } from '@tarojs/helper'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { Frameworks } from './index'\n\nexport function modifyMiniWebpackChain (ctx: IPluginContext, framework: Frameworks, chain) {\n setAlias(ctx, framework, chain)\n setLoader(framework, chain)\n}\n\nfunction setAlias (ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const alias = chain.resolve.alias\n\n if (framework === 'react') {\n alias.set('react-dom$', '@tarojs/react')\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.mini?.debugReact !== true) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n alias.set('react-reconciler$', 'react-reconciler/cjs/react-reconciler.production.min.js')\n alias.set('react$', 'react/cjs/react.production.min.js')\n alias.set('react/jsx-runtime$', 'react/cjs/react-jsx-runtime.production.min.js')\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = require.resolve('react/package.json', { paths: [process.cwd()] })\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = (reactPkg.version || '')\n if ((/^[~^]?18/).test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/'\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n }\n}\n\nfunction setLoader (framework: Frameworks, chain) {\n chain.plugin('miniPlugin')\n .tap(args => {\n args[0].loaderMeta = getLoaderMeta(framework)\n return args\n })\n}\n","import { type esbuild, fs, REG_TARO_H5 } from '@tarojs/helper'\nimport { isString, isWebPlatform } from '@tarojs/shared'\n\nimport { h5iVitePlugin } from './vite.h5'\nimport { miniVitePlugin } from './vite.mini'\nimport { modifyH5WebpackChain } from './webpack.h5'\nimport { modifyMiniWebpackChain } from './webpack.mini'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { PluginOption } from 'vite'\n\nexport type Frameworks = 'react' | 'preact' | 'nerv'\n\nexport default (ctx: IPluginContext) => {\n const { framework } = ctx.initialConfig\n \n if (framework !== 'react' && framework !== 'nerv' && framework !== 'preact') return\n\n ctx.modifyWebpackChain(({ chain }) => {\n // 通用\n setAlias(framework, chain)\n chain.plugin('definePlugin').tap((args) => {\n const config = args[0]\n config.__TARO_FRAMEWORK__ = `\"${framework}\"`\n return args\n })\n\n if (isWebPlatform()) {\n // H5\n modifyH5WebpackChain(ctx, framework, chain)\n } else {\n // 小程序\n modifyMiniWebpackChain(ctx, framework, chain)\n }\n })\n\n ctx.modifyRunnerOpts(({ opts }) => {\n if (!opts?.compiler) return\n\n if (isString(opts.compiler)) {\n opts.compiler = {\n type: opts.compiler,\n }\n }\n\n const { compiler } = opts\n if (compiler.type === 'webpack5') {\n // 提供给 webpack5 依赖预编译收集器的第三方依赖\n const deps = ['react', 'react-dom', 'react/jsx-runtime', '@tarojs/plugin-framework-react/dist/runtime']\n compiler.prebundle ||= {}\n const prebundleOptions = compiler.prebundle\n prebundleOptions.include ||= []\n prebundleOptions.include = prebundleOptions.include.concat(deps)\n prebundleOptions.exclude ||= []\n prebundleOptions.exclude.push(/mobx/) // 依赖会对 webpack 修改,默认排除\n if (prebundleOptions.enable === false) return\n\n const taroReactPlugin: esbuild.Plugin = {\n name: 'taroReactPlugin',\n setup(build) {\n build.onLoad({ filter: REG_TARO_H5 }, ({ path }) => {\n const content = fs.readFileSync(path).toString()\n return {\n contents: require('./api-loader')(content),\n }\n })\n },\n }\n\n prebundleOptions.esbuild ||= {}\n const esbuildConfig = prebundleOptions.esbuild\n esbuildConfig.plugins ||= []\n esbuildConfig.plugins.push(taroReactPlugin)\n } else if (compiler.type === 'vite') {\n compiler.vitePlugins ||= []\n compiler.vitePlugins.push(viteCommonPlugin(framework))\n compiler.vitePlugins.push(require('@vitejs/plugin-react').default())\n if (isWebPlatform()) {\n // H5\n compiler.vitePlugins.push(h5iVitePlugin(framework))\n } else {\n // 小程序\n compiler.vitePlugins.push(miniVitePlugin(ctx, framework))\n }\n }\n })\n}\n\nfunction setAlias(framework: Frameworks, chain) {\n const alias = chain.resolve.alias\n\n switch (framework) {\n case 'preact':\n alias.set('react', 'preact/compat')\n alias.set('react-dom/test-utils', 'preact/test-utils')\n alias.set('react-dom', 'preact/compat')\n alias.set('react/jsx-runtime', 'preact/jsx-runtime')\n break\n case 'nerv':\n alias.set('react$', 'nervjs')\n alias.set('react-dom$', 'nervjs')\n break\n }\n}\n\nfunction viteCommonPlugin(framework: Frameworks): PluginOption {\n return {\n name: 'taro-react:common',\n config() {\n const alias =\n framework === 'preact'\n ? [\n { find: 'react', replacement: 'preact/compat' },\n { find: 'react-dom/test-utils', replacement: 'preact/test-utils' },\n { find: 'react-dom', replacement: 'preact/compat' },\n { find: 'react/jsx-runtime', replacement: 'preact/jsx-runtime' },\n ]\n : []\n\n return {\n optimizeDeps:{\n esbuildOptions:{\n define: {\n __TARO_FRAMEWORK__: `\"${framework}\"`\n }\n }\n },\n define: {\n __TARO_FRAMEWORK__: `\"${framework}\"`,\n },\n resolve: {\n alias,\n },\n }\n },\n }\n}\n"],"names":["acorn","walk","isWebPlatform","injectLoaderMeta","mergeWith","fs","setLoader","REG_TARO_H5","setAlias","isString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/loader-meta.ts","../src/webpack.h5.ts","../src/webpack.mini.ts","../src/index.ts"],"sourcesContent":["import { isWebPlatform } from '@tarojs/shared'\nimport * as acorn from 'acorn'\nimport * as walk from 'acorn-walk'\n\nimport { Frameworks } from './index'\n\ninterface ILoaderMeta {\n importFrameworkStatement: string\n mockAppStatement: string\n frameworkArgs: string\n creator: string\n creatorLocation: string\n extraImportForWeb: string\n execBeforeCreateWebApp: string\n importFrameworkName: string\n isNeedRawLoader?: boolean\n modifyConfig?: (config: Record<string, any>, source: string) => void\n}\n\nfunction addConfig (source) {\n const configsMap = {\n enableShareAppMessage: ['onShareAppMessage', 'useShareAppMessage'],\n enableShareTimeline: ['onShareTimeline', 'useShareTimeline']\n }\n const ast = acorn.parse(source, {\n ecmaVersion: 'latest',\n sourceType: 'module'\n })\n\n const additionConfig: Record<string, any> = {}\n\n function check (name: string) {\n Object.keys(configsMap).forEach(configName => {\n const apis: string[] = configsMap[configName]\n if (apis.includes(name)) {\n additionConfig[configName] = true\n }\n })\n }\n\n walk.simple(ast, {\n FunctionExpression (node: any) {\n if (!node.id || !node.id.name) return\n check(node.id.name)\n },\n FunctionDeclaration (node: any) {\n if (!node.id || !node.id.name) return\n check(node.id.name)\n },\n CallExpression (node: any) {\n const { callee } = node\n if (callee.type === 'Identifier') {\n check(callee.name)\n } else if (callee.type === 'MemberExpression') {\n if (callee.property.type === 'Identifier') {\n check(callee.property.name)\n } else if (callee.property.type === 'Literal') {\n check(callee.property.value)\n }\n }\n node.arguments.forEach(item => {\n if (item.type === 'Literal' && item.value) {\n check(item.value)\n }\n })\n }\n })\n\n return additionConfig\n}\n\nconst nervMeta = {\n importFrameworkStatement: `\nimport Nerv from 'nervjs';\n`,\n mockAppStatement: `\nclass App extends Nerv.Component {\nrender () {\n return this.props.children\n}\n}\n`,\n frameworkArgs: 'Nerv, Nerv, config',\n importFrameworkName: 'Nerv'\n}\n\nexport function getLoaderMeta (framework: Frameworks): ILoaderMeta {\n const loaderMeta = {\n importFrameworkStatement: `\nimport * as React from 'react'\nimport ReactDOM from 'react-dom'\n`,\n mockAppStatement: `\nclass App extends React.Component {\n render () {\n return this.props.children\n }\n}\n`,\n frameworkArgs: 'React, ReactDOM, config',\n creator: 'createReactApp',\n creatorLocation: '@tarojs/plugin-framework-react/dist/runtime',\n importFrameworkName: 'React',\n extraImportForWeb: '',\n execBeforeCreateWebApp: '',\n modifyConfig (config, source) {\n Object.assign(config, addConfig(source))\n }\n }\n if (framework === 'nerv') {\n Object.assign(loaderMeta, nervMeta)\n }\n\n if (isWebPlatform()) {\n if(framework === 'react') {\n const react = require('react')\n const majorVersion = Number((react.version || '18').split('.')[0])\n if( majorVersion >= 18) {\n // Note: In react 18 or above, should using react-dom/client\n loaderMeta.importFrameworkStatement = loaderMeta.importFrameworkStatement.replace('\\'react-dom\\'', '\\'react-dom/client\\'')\n loaderMeta.extraImportForWeb += `import { findDOMNode, render, unstable_batchedUpdates } from 'react-dom'\\n`\n loaderMeta.execBeforeCreateWebApp += `Object.assign(ReactDOM, { findDOMNode, render, unstable_batchedUpdates })\\n`\n }\n }\n }\n return loaderMeta\n}\n","import { mergeWith } from 'lodash'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type Chain from 'webpack-chain'\nimport type { Frameworks } from './index'\n\nexport function modifyH5WebpackChain (ctx: IPluginContext, framework: Frameworks, chain: Chain) {\n setLoader(framework, chain)\n setPlugin(ctx, framework, chain)\n\n const { isBuildNativeComp = false } = ctx.runOpts?.options || {}\n const externals: Record<string, string> = {}\n if (isBuildNativeComp) {\n // Note: 该模式不支持 prebundle 优化,不必再处理\n externals.react = 'React'\n externals['react-dom'] = 'ReactDOM'\n if (framework === 'preact') {\n externals.preact = 'preact'\n }\n }\n\n chain.merge({\n externals,\n module: {\n rule: {\n 'process-import-taro': {\n test: /taro-h5[\\\\/]dist[\\\\/]api[\\\\/]taro/,\n loader: require.resolve('./api-loader')\n }\n }\n },\n })\n}\n\nfunction setLoader (framework: Frameworks, chain) {\n function customizer (object = '', sources = '') {\n if ([object, sources].every(e => typeof e === 'string')) return object + sources\n }\n chain.plugin('mainPlugin')\n .tap(args => {\n args[0].loaderMeta = mergeWith(\n getLoaderMeta(framework), args[0].loaderMeta, customizer\n )\n return args\n })\n}\n\nfunction setPlugin (ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.h5?.devServer?.hot !== false) {\n // 默认开启 fast-refresh\n if (framework === 'react') {\n chain\n .plugin('fastRefreshPlugin')\n .use(require('@pmmmwh/react-refresh-webpack-plugin'))\n } else if (framework === 'preact') {\n chain\n .plugin('hotModuleReplacementPlugin')\n .use(require('webpack').HotModuleReplacementPlugin)\n chain\n .plugin('fastRefreshPlugin')\n .use(require('@prefresh/webpack'))\n }\n }\n}\n","import { fs } from '@tarojs/helper'\nimport path from 'path'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { Frameworks } from './index'\n\nexport function modifyMiniWebpackChain (ctx: IPluginContext, framework: Frameworks, chain) {\n setAlias(ctx, framework, chain)\n setLoader(framework, chain)\n}\n\nfunction setAlias (ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const alias = chain.resolve.alias\n\n if (framework === 'react') {\n alias.set('react-dom$', '@tarojs/react')\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.mini?.debugReact !== true) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n // 兼容pnpm workspace\n const reactModulePath = require.resolve('react', { paths: [process.cwd()] })\n const newFilePath = path.join(path.dirname(reactModulePath), 'cjs', 'react.production.min.js')\n\n alias.set('react-reconciler$', 'react-reconciler/cjs/react-reconciler.production.min.js')\n alias.set('react$', newFilePath)\n alias.set('react/jsx-runtime$', 'react/cjs/react-jsx-runtime.production.min.js')\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = require.resolve('react/package.json', { paths: [process.cwd()] })\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = reactPkg.version || ''\n if (/^[~^]?18/.test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/',\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n }\n}\n\nfunction setLoader (framework: Frameworks, chain) {\n chain.plugin('miniPlugin').tap((args) => {\n args[0].loaderMeta = getLoaderMeta(framework)\n return args\n })\n}\n","import { type esbuild, fs } from '@tarojs/helper'\nimport { isString, isWebPlatform } from '@tarojs/shared'\n\nimport { modifyH5WebpackChain } from './webpack.h5'\nimport { modifyMiniWebpackChain } from './webpack.mini'\n\nimport type { IPluginContext } from '@tarojs/service'\n\nexport type Frameworks = 'react' | 'preact' | 'nerv'\n\nexport default (ctx: IPluginContext) => {\n const { framework } = ctx.initialConfig\n\n if (framework !== 'react' && framework !== 'nerv' && framework !== 'preact') return\n\n ctx.modifyWebpackChain(({ chain }) => {\n // 通用\n setAlias(framework, chain)\n chain\n .plugin('definePlugin')\n .tap(args => {\n const config = args[0]\n config.__TARO_FRAMEWORK__ = `\"${framework}\"`\n return args\n })\n\n if (isWebPlatform()) {\n // H5\n modifyH5WebpackChain(ctx, framework, chain)\n } else {\n // 小程序\n modifyMiniWebpackChain(ctx, framework, chain)\n }\n })\n\n ctx.modifyRunnerOpts(({ opts }) => {\n if (!opts?.compiler) return\n\n if (isString(opts.compiler)) {\n opts.compiler = {\n type: opts.compiler\n }\n }\n\n const { compiler } = opts\n if (compiler.type === 'webpack5') {\n // 提供给 webpack5 依赖预编译收集器的第三方依赖\n const deps = [\n 'react',\n 'react-dom',\n 'react/jsx-runtime',\n '@tarojs/plugin-framework-react/dist/runtime'\n ]\n compiler.prebundle ||= {}\n const prebundleOptions = compiler.prebundle\n prebundleOptions.include ||= []\n prebundleOptions.include = prebundleOptions.include.concat(deps)\n prebundleOptions.exclude ||= []\n prebundleOptions.exclude.push(/mobx/) // 依赖会对 webpack 修改,默认排除\n if (prebundleOptions.enable === false) return\n\n const taroReactPlugin: esbuild.Plugin = {\n name: 'taroReactPlugin',\n setup (build) {\n build.onLoad({ filter: /taro-h5[\\\\/]dist[\\\\/]api[\\\\/]taro/ }, ({ path }) => {\n const content = fs.readFileSync(path).toString()\n return {\n contents: require('./api-loader')(content)\n }\n })\n }\n }\n\n prebundleOptions.esbuild ||= {}\n const esbuildConfig = prebundleOptions.esbuild\n esbuildConfig.plugins ||= []\n esbuildConfig.plugins.push(taroReactPlugin)\n }\n })\n}\n\nfunction setAlias (framework: Frameworks, chain) {\n const alias = chain.resolve.alias\n\n switch (framework) {\n case 'preact':\n alias.set('react', 'preact/compat')\n alias.set('react-dom/test-utils', 'preact/test-utils')\n alias.set('react-dom', 'preact/compat')\n alias.set('react/jsx-runtime', 'preact/jsx-runtime')\n break\n case 'nerv':\n alias.set('react$', 'nervjs')\n alias.set('react-dom$', 'nervjs')\n break\n }\n}\n"],"names":["acorn","walk","isWebPlatform","setLoader","mergeWith","setAlias","fs","isString"],"mappings":"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"}
|