Skip to content

Commit

Permalink
fix(plugin-vue): remove react-related babel plugins (#4005)
Browse files Browse the repository at this point in the history
* fix(plugin-vue): remove react-related babel plugins

* chore: fix

* chore: fix peer dependencies
  • Loading branch information
chenjiahan committed Jun 19, 2023
1 parent ef041c0 commit 36f5bdf
Show file tree
Hide file tree
Showing 25 changed files with 240 additions and 351 deletions.
11 changes: 11 additions & 0 deletions .changeset/olive-wolves-love.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
'@modern-js/builder-webpack-provider': patch
'@modern-js/babel-preset-base': patch
'@modern-js/babel-preset-app': patch
'@modern-js/builder-plugin-vue': patch
'@modern-js/server-utils': patch
---

fix(plugin-vue): remove react-related babel plugins

fix(plugin-vue): 移除 react 相关的 babel 插件
12 changes: 9 additions & 3 deletions packages/builder/builder-rspack-provider/src/plugins/css.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
getCssModulesAutoRule,
getPostcssConfig,
getCssModuleLocalIdentName,
resolveLoader,
resolvePackage,
type BundlerChain,
type BuilderContext,
type StyleLoaderOptions,
Expand Down Expand Up @@ -89,8 +89,9 @@ export async function applyBaseCSSRule({
rule
.use(CHAIN_ID.USE.CSS_MODULES_TS)
.loader(
resolveLoader(
resolvePackage(
'@modern-js/builder-shared/css-modules-typescript-loader',
__dirname,
),
)
.options({
Expand All @@ -101,7 +102,12 @@ export async function applyBaseCSSRule({
} else {
rule
.use(CHAIN_ID.USE.IGNORE_CSS)
.loader(resolveLoader('@modern-js/builder-shared/ignore-css-loader'))
.loader(
resolvePackage(
'@modern-js/builder-shared/ignore-css-loader',
__dirname,
),
)
.end();
}

Expand Down
6 changes: 4 additions & 2 deletions packages/builder/builder-shared/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,9 @@ export function isWebTarget(target: BuilderTarget | BuilderTarget[]) {
);
}

export function resolveLoader(loader: string) {
export function resolvePackage(loader: string, dirname: string) {
// Vitest do not support require.resolve to source file
return process.env.VITEST ? loader : require.resolve(loader);
return process.env.VITEST
? loader
: require.resolve(loader, { paths: [dirname] });
}
2 changes: 2 additions & 0 deletions packages/builder/builder-webpack-provider/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@
"test:ui": "vitest --ui"
},
"dependencies": {
"@babel/core": "^7.21.8",
"@babel/preset-react": "^7.18.6",
"@modern-js/babel-preset-app": "workspace:*",
"@modern-js/babel-preset-base": "workspace:*",
"@modern-js/builder-shared": "workspace:*",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ export const builderPluginBabel = (): BuilderPlugin => ({
userBabelConfigUtils: babelUtils,
overrideBrowserslist: browserslist,
importAntd: false,
disableReactPreset: true,
}),
};

Expand Down
12 changes: 9 additions & 3 deletions packages/builder/builder-webpack-provider/src/plugins/css.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {
CSS_REGEX,
resolveLoader,
resolvePackage,
isUseCssExtract,
getPostcssConfig,
ModifyChainUtils,
Expand Down Expand Up @@ -93,8 +93,9 @@ export async function applyBaseCSSRule({
rule
.use(CHAIN_ID.USE.CSS_MODULES_TS)
.loader(
resolveLoader(
resolvePackage(
'@modern-js/builder-shared/css-modules-typescript-loader',
__dirname,
),
)
.options({
Expand All @@ -105,7 +106,12 @@ export async function applyBaseCSSRule({
} else {
rule
.use(CHAIN_ID.USE.IGNORE_CSS)
.loader(resolveLoader('@modern-js/builder-shared/ignore-css-loader'))
.loader(
resolvePackage(
'@modern-js/builder-shared/ignore-css-loader',
__dirname,
),
)
.end();
}

Expand Down
38 changes: 37 additions & 1 deletion packages/builder/builder-webpack-provider/src/plugins/react.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,46 @@
import type { BuilderPlugin } from '../types';
import type { BuilderConfig, BuilderPlugin } from '../types';
import { isUsingHMR } from '@modern-js/builder-shared';

export const builderPluginReact = (): BuilderPlugin => ({
name: 'builder-plugin-react',

setup(api) {
api.modifyBuilderConfig(async (config, { mergeBuilderConfig }) => {
const { isProd, isBeyondReact17 } = await import('@modern-js/utils');

const babelConfig: BuilderConfig = {
tools: {
babel(_, { addPresets, addPlugins }) {
const isNewJsx = isBeyondReact17(api.context.rootPath);
const presetReactOptions = {
development: !isProd(),
// Will use the native built-in instead of trying to polyfill
useBuiltIns: true,
useSpread: false,
runtime: isNewJsx ? 'automatic' : 'classic',
};

addPresets([
[require.resolve('@babel/preset-react'), presetReactOptions],
]);

if (isProd()) {
addPlugins([
[
require.resolve(
'../../compiled/babel-plugin-transform-react-remove-prop-types',
),
{ removeImport: true },
],
]);
}
},
},
};

return mergeBuilderConfig(babelConfig, config);
});

api.modifyWebpackChain(async (chain, utils) => {
const config = api.getNormalizedConfig();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { TS_REGEX, applyScriptCondition } from '@modern-js/builder-shared';
import {
TS_REGEX,
resolvePackage,
applyScriptCondition,
} from '@modern-js/builder-shared';
import _ from '@modern-js/utils/lodash';
import { BuilderPlugin } from '../types';
import { getUseBuiltIns } from './babel';
Expand All @@ -17,17 +21,14 @@ export const builderPluginTsLoader = (): BuilderPlugin => {
const babelLoaderOptions = {
presets: [
[
// When running test, using the package name,
// Otherwise vitest will failed to resolve the preset
process.env.NODE_ENV === 'test'
? '@modern-js/babel-preset-app'
: require.resolve('@modern-js/babel-preset-app'),
resolvePackage('@modern-js/babel-preset-app', __dirname),
{
appDirectory: rootPath,
target: 'client',
useTsLoader: true,
useBuiltIns: getUseBuiltIns(config),
userBabelConfig: config.tools.babel,
disableReactPreset: true,
},
],
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,15 +245,6 @@ exports[`webpackConfig > should not have any pluginImport in Babel 1`] = `
"useBuiltIns": "entry",
},
],
[
"<WORKSPACE>/node_modules/<PNPM_INNER>/@babel/preset-react/lib/index.js",
{
"development": true,
"runtime": "automatic",
"useBuiltIns": true,
"useSpread": false,
},
],
[
"<WORKSPACE>/node_modules/<PNPM_INNER>/@babel/preset-typescript/lib/index.js",
{
Expand Down Expand Up @@ -354,15 +345,6 @@ exports[`webpackConfig > should not have any pluginImport in Babel 1`] = `
"useBuiltIns": "entry",
},
],
[
"<WORKSPACE>/node_modules/<PNPM_INNER>/@babel/preset-react/lib/index.js",
{
"development": true,
"runtime": "automatic",
"useBuiltIns": true,
"useSpread": false,
},
],
[
"<WORKSPACE>/node_modules/<PNPM_INNER>/@babel/preset-typescript/lib/index.js",
{
Expand Down Expand Up @@ -482,15 +464,6 @@ exports[`webpackConfig > should not set default pluginImport for Babel 1`] = `
"useBuiltIns": "entry",
},
],
[
"<WORKSPACE>/node_modules/<PNPM_INNER>/@babel/preset-react/lib/index.js",
{
"development": true,
"runtime": "automatic",
"useBuiltIns": true,
"useSpread": false,
},
],
[
"<WORKSPACE>/node_modules/<PNPM_INNER>/@babel/preset-typescript/lib/index.js",
{
Expand Down Expand Up @@ -600,15 +573,6 @@ exports[`webpackConfig > should not set default pluginImport for Babel 1`] = `
"useBuiltIns": "entry",
},
],
[
"<WORKSPACE>/node_modules/<PNPM_INNER>/@babel/preset-react/lib/index.js",
{
"development": true,
"runtime": "automatic",
"useBuiltIns": true,
"useSpread": false,
},
],
[
"<WORKSPACE>/node_modules/<PNPM_INNER>/@babel/preset-typescript/lib/index.js",
{
Expand Down Expand Up @@ -750,15 +714,6 @@ exports[`webpackConfig > should set proper pluginImport option in Babel 1`] = `
"useBuiltIns": "entry",
},
],
[
"<WORKSPACE>/node_modules/<PNPM_INNER>/@babel/preset-react/lib/index.js",
{
"development": true,
"runtime": "automatic",
"useBuiltIns": true,
"useSpread": false,
},
],
[
"<WORKSPACE>/node_modules/<PNPM_INNER>/@babel/preset-typescript/lib/index.js",
{
Expand Down Expand Up @@ -867,15 +822,6 @@ exports[`webpackConfig > should set proper pluginImport option in Babel 1`] = `
"useBuiltIns": "entry",
},
],
[
"<WORKSPACE>/node_modules/<PNPM_INNER>/@babel/preset-react/lib/index.js",
{
"development": true,
"runtime": "automatic",
"useBuiltIns": true,
"useSpread": false,
},
],
[
"<WORKSPACE>/node_modules/<PNPM_INNER>/@babel/preset-typescript/lib/index.js",
{
Expand Down
Loading

0 comments on commit 36f5bdf

Please sign in to comment.