Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(uni-builder): add unified builder for Modern.js #5092

Merged
merged 6 commits into from
Dec 14, 2023

Conversation

9aoy
Copy link
Collaborator

@9aoy 9aoy commented Dec 14, 2023

Summary

background: web-infra-dev/rsbuild#239 (comment)

Related Links

Checklist

  • I have added changeset via pnpm run change.
  • I have updated the documentation.
  • I have added tests to cover my changes.

Copy link

changeset-bot bot commented Dec 14, 2023

🦋 Changeset detected

Latest commit: edb3300

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 271 packages
Name Type
@modern-js/uni-builder Patch
@modern-js/core Patch
@modern-js/doc-plugin-auto-sidebar Patch
@modern-js/plugin-bff Patch
@modern-js/plugin-changeset Patch
@modern-js/plugin-data-loader Patch
@modern-js/plugin-i18n Patch
@modern-js/plugin-lint Patch
@modern-js/plugin-proxy Patch
@modern-js/plugin-ssg Patch
@modern-js/plugin-swc Patch
@modern-js/plugin-tailwindcss Patch
@modern-js/builder-doc Patch
@modern-js/main-doc Patch
@modern-js/module-tools-docs Patch
@modern-js/devtools-client Patch
@modern-js/devtools-kit Patch
@modern-js/plugin-devtools Patch
@modern-js/plugin-garfish Patch
@modern-js/plugin-router-v5 Patch
@modern-js/runtime Patch
@modern-js/plugin-testing Patch
@modern-js/new-action Patch
@modern-js/sandpack-react Patch
@modern-js-app/eslint-config Patch
@modern-js/eslint-config Patch
@modern-js/tsconfig Patch
@modern-js/babel-plugin-module-resolver Patch
@modern-js/bff-core Patch
@modern-js/bff-runtime Patch
@modern-js/server-core Patch
@modern-js/create-request Patch
@modern-js/plugin-express Patch
@modern-js/plugin-koa Patch
@modern-js/plugin-polyfill Patch
@modern-js/plugin-server Patch
@modern-js/plugin-worker Patch
@modern-js/prod-server Patch
@modern-js/server Patch
@modern-js/server-utils Patch
@modern-js/builder-cli Patch
@modern-js/builder-rspack-provider Patch
@modern-js/builder-shared Patch
@modern-js/builder-webpack-provider Patch
@modern-js/builder Patch
@modern-js/builder-plugin-esbuild Patch
@modern-js/builder-plugin-image-compress Patch
@modern-js/builder-plugin-node-polyfill Patch
@modern-js/builder-plugin-stylus Patch
@modern-js/builder-plugin-swc Patch
@modern-js/builder-plugin-vue Patch
@modern-js/builder-plugin-vue2 Patch
@modern-js/plugin-module-babel Patch
@modern-js/plugin-module-banner Patch
@modern-js/plugin-module-import Patch
@modern-js/plugin-module-node-polyfill Patch
@modern-js/plugin-module-polyfill Patch
@modern-js/plugin-module-vue Patch
@modern-js/app-tools Patch
@modern-js/module-tools Patch
@modern-js/monorepo-tools Patch
@modern-js/create Patch
@modern-js/e2e Patch
@modern-js/node-bundle-require Patch
@modern-js/plugin Patch
@modern-js/runtime-utils Patch
@modern-js/types Patch
@modern-js/upgrade Patch
@modern-js/utils Patch
@modern-js/babel-compiler Patch
@modern-js/storybook-builder Patch
@modern-js/storybook Patch
@scripts/build Patch
@scripts/check-changeset Patch
@scripts/jest-config Patch
@scripts/lint-package-json Patch
@scripts/prebundle Patch
@scripts/update-codesmith Patch
@scripts/update-rsbuild Patch
@scripts/update-rspress Patch
@scripts/vitest-config Patch
tests Patch
@integration-test/alias-set Patch
api-service-koa Patch
app-docmuent Patch
integration-asset-prefix Patch
async-entry-test Patch
tmp Patch
bff-express Patch
bff-koa Patch
integration-builder-plugins Patch
integration-clean-dist-path Patch
integration-compatibility Patch
integration-copy-assets Patch
integration-custom-dist-path Patch
integration-custom-render Patch
integration-custom-template Patch
dev-server Patch
@integration-test/devtools Patch
integration-disable-html Patch
esbuild-transform-and-minify Patch
esbuild-integration Patch
integration-config-async-config-test Patch
integration-basic-local-config Patch
integration-config-function-params Patch
integration-local-config-function Patch
integration-load-config Patch
main-entry-name Patch
alias-js-test Patch
alias-ts-test Patch
asset-limit-test Patch
asset-path-test Patch
asset-publicPath-test Patch
svgr-test Patch
auto-extension-commonjs-test Patch
auto-extension-type-module-test Patch
auto-external-test Patch
banner-footer-test Patch
build-type-test Patch
copy-test Patch
decorator-test Patch
global-vars-js-test Patch
global-vars-ts-test Patch
dts-composite Patch
dts-test Patch
esbuild-options-test Patch
external-test Patch
format-cjs-test Patch
format-esm-test Patch
format-iife-test Patch
format-umd-test Patch
entry-test Patch
jsx-test Patch
metafile-test Patch
minify-test Patch
platform-test Patch
redirect-test Patch
data-url-test Patch
browser-false Patch
resolve-false Patch
ndoe-protocol-test Patch
lib1 Patch
lib2 Patch
lib3 Patch
condition-exports-test Patch
js-extensions-test Patch
main-fields-test Patch
shims-test Patch
module-tools-side-effects-test Patch
source-dir-test Patch
sourcemap-test Patch
splitting-test Patch
css-test Patch
less-test Patch
style-test Patch
postcss-test Patch
sass-test Patch
tailwindcss-test Patch
target-test Patch
transform-import Patch
transform-lodash Patch
tsconfig-test Patch
umdGlobals-test Patch
get-module-id-test Patch
dev-test Patch
build-platform-test Patch
build-preset-error-test Patch
build-preset-function-test Patch
build-preset-test Patch
build-preset-string-test Patch
integration-module-tools Patch
plugin-babel Patch
module-hooks-test Patch
plugin-node-polyfill Patch
plugin-polyfill Patch
plugin-vue Patch
nonce Patch
routes Patch
file-based-router Patch
use-loader Patch
runtime Patch
select-mul-entry-test Patch
select-one-entry-test Patch
entry Patch
server-config Patch
server-middleware Patch
server-hook-reqeust Patch
server-hook-response Patch
server-hook-router Patch
@integration-test/server-hook-reqeust Patch
server-prod Patch
@source-code-build/app-ts-loader Patch
@source-code-build/app Patch
@source-code-build/common Patch
@source-code-build/components Patch
@source-code-build/utils Patch
ssg-fixtures-nested-routes Patch
ssg-fixtures-simple Patch
ssg-fixtures-web-server Patch
ssg Patch
ssr-base-json-test Patch
ssr-base-test Patch
ssr-base-fallback-test Patch
init Patch
ssr-inline Patch
ssr-preload Patch
ssr-streaming-test Patch
ssr Patch
integration-tests-storybook Patch
swc-test-decorator-legacy Patch
swc-test-decorator Patch
swc-minify-css Patch
swc-minify-js Patch
transform-fail Patch
swc-integration Patch
integration-tailwindcss-v2 Patch
integration-tailwindcss-v3-js-config Patch
integration-tailwindcss-v3-merge-config Patch
integration-tailwindcss-v3-ts-config Patch
integration-tailwindcss-v3 Patch
twin-macro-v2 Patch
twin-macro-v3 Patch
tailwindcss-integration-test Patch
tmp-dir Patch
@e2e/testing-plugin Patch
write-to-dist Patch
@e2e/builder-cli-rspack Patch
@e2e/builder-cli-vue Patch
@e2e/builder-cli-webpack Patch
@e2e/webpack-builder-import-antd-v4 Patch
@e2e/webpack-builder-import-antd-v5 Patch
@e2e/webpack-builder-import-arco Patch
@e2e/webpack-builder-test-moment Patch
@e2e/builder-remove-prop-types Patch
@e2e/webpack-builder-source-map Patch
@e2e/builder-vue3 Patch
@e2e/builder-vue2 Patch
@e2e/builder Patch
@e2e/garfish-dashboard-router-v6 Patch
@e2e/garfish-dashboard Patch
@e2e/garfish-main-router-v6 Patch
@e2e/garfish-main Patch
@e2e/garfish-table Patch
@e2e/garfish Patch
@modern-js/generator-common Patch
@modern-js/generator-plugin Patch
@modern-js/generator-utils Patch
@modern-js/bff-generator Patch
@modern-js/dependence-generator Patch
@modern-js/entry-generator Patch
@modern-js/generator-generator Patch
@modern-js/module-doc-generator Patch
@modern-js/module-generator Patch
@modern-js/module-test-generator Patch
@modern-js/monorepo-generator Patch
@modern-js/mwa-generator Patch
@modern-js/router-v5-generator Patch
@modern-js/rspack-generator Patch
@modern-js/ssg-generator Patch
@modern-js/storybook-generator Patch
@modern-js/storybook-next-generator Patch
@modern-js/test-generator Patch
@modern-js/upgrade-generator Patch
@modern-js/generator-plugin-plugin Patch
@modern-js/base-generator Patch
@modern-js/changeset-generator Patch
@modern-js/packages-generator Patch
@modern-js/repo-generator Patch
@modern-js/server-generator Patch
@modern-js/tailwindcss-generator Patch
@modern-js/generator-cases Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@9aoy 9aoy requested a review from chenjiahan December 14, 2023 06:40
@chenjiahan chenjiahan merged commit 03a3196 into main Dec 14, 2023
8 checks passed
@chenjiahan chenjiahan deleted the feat/init-uni-builder branch December 14, 2023 06:51
@caohuilin caohuilin mentioned this pull request Dec 20, 2023

if (isProd) {
baseBabelConfig.plugins?.push([
require.resolve('babel-plugin-transform-react-remove-prop-types'),

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

babel-plugin-transform-react-remove-prop-types 这个 plugin 默认会移除组件的 propTypes 属性。

请问在 React 配置中默认加上这个移除组件的propTypes静态属性是一个通用的做法吗?如果用户想关掉这个怎么操作呢?

image

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

是不是排除对 node_modules 处理比较合适一点?第三方包如果用了 propTypes 做其他的事情(例如上面图里的 pick props),会造成一些预期之外的事情。

img_v3_0278_3ef73774-7155-4bfb-b378-a6148e0ce7dg

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

目前需要手动通过 tools.babel 修改配置移除,后面会提供对应配置项。

在没有配置 source.include 的情况下,是只对项目 src 下的所有文件 和 项目外的 ts|tsx|jsx|mts|cts 文件编译;如果命中前面的规则但不希望转译的话,可以通过 source.exclude 排除

Copy link

@shijiatongxue shijiatongxue Jan 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

目前需要手动通过 tools.babel 修改配置移除,后面会提供对应配置项。

在没有配置 source.include 的情况下,是只对项目 src 下的所有文件 和 项目外的 ts|tsx|jsx|mts|cts 文件编译;如果命中前面的规则但不希望转译的话,可以通过 source.exclude 排除

明白。不过这个配置可能会导致源码走 modernjs 的 babel 处理 react 的静态属性。很多用户不太关心这些配置,直接用的默认配置,但是默认配置会出现上面说的报错。

目前所有使用默认配置的用户都有可能在生产环境出现这个报错。团队内部是否可以讨论一下这个插件是不是默认加上。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants