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

chore: remove ajv schema verification of modern configuration #4911

Merged
merged 5 commits into from
Nov 6, 2023

Conversation

zllkjc
Copy link
Member

@zllkjc zllkjc commented Nov 3, 2023

In Modern.js, running Ajv causes every CLI command to take an extra 50~150ms of time.

We found that the vast of users do not rely on schema verification, it can accurately filter configuration errors through type definition.

So we decide to remove Ajv, depends only on .ts config file.

Summary

🤖 Generated by Copilot at 4417a73

Removed the Ajv-based config validation feature from the core and the plugins of the modern.js CLI. This feature was unnecessary and complicated the codebase. Deleted the files and code related to the config validation schemas, the validateSchema hooks, and the repeatKeyWarning utility. Updated the function calls and types to reflect the changes.

Details

🤖 Generated by Copilot at 4417a73

  • Simplified the config validation logic by removing the use of Ajv and the schema-related code and arguments from the core and the plugins (link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link)
  • Updated the createResolveConfig function call in createCli.ts to match the new signature of the function (link)
  • Removed the validateSchema workflow from the manager object in manager.ts and the BaseHooks type in hooks.ts (link, link)
  • Removed the onSchemaError property from the CoreOptions interface in coreOptions.ts (link, link)
  • Removed the PluginValidateSchema interface from index.ts (link, link)
  • Removed the repeatKeyWarning export from utils/index.ts (link)
  • Removed the validateSchema hook from the bff, proxy, ssg, swc, tailwind, and designToken plugins in their respective files (link, link, link, link, link, link)
  • Removed the test cases for the validateSchema hook from the bff, proxy, and designToken plugins in their respective files (link, link, link)
  • Deleted the files traverseSchema.ts, patchSchema.ts, repeatKeyWarning.ts, repeatKeyWarning.test.ts, and schema.test.ts as they are no longer needed (link, link, link, link, link)

Related Issue

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 Nov 3, 2023

🦋 Changeset detected

Latest commit: ca005c3

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

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

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

@zllkjc zllkjc force-pushed the deprecated/ajv branch 2 times, most recently from 1a36507 to 652c8af Compare November 6, 2023 04:10
@chenjiahan chenjiahan enabled auto-merge (squash) November 6, 2023 06:20
@chenjiahan
Copy link
Member

👏

@chenjiahan chenjiahan merged commit 95f15d2 into main Nov 6, 2023
6 checks passed
@chenjiahan chenjiahan deleted the deprecated/ajv branch November 6, 2023 06:23
@caohuilin caohuilin mentioned this pull request Nov 8, 2023
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.

2 participants