From 1e9e4ae1984ea5f41ba9fabca0670be91b0a3bf2 Mon Sep 17 00:00:00 2001 From: gh-pages-bot <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 04:38:55 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20main=20from=20@=20web-infra-de?= =?UTF-8?q?v/modern.js@ff300aeb8b0c1661a3a235f2de84f8fa6237f8e4=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modern-js/builder/api/builder-core.html | 6 +- modern-js/builder/api/builder-instance.html | 6 +- modern-js/builder/api/builder-types.html | 4 +- modern-js/builder/api/config-dev.html | 14 +- modern-js/builder/api/config-experiments.html | 14 +- modern-js/builder/api/config-html.html | 24 +- modern-js/builder/api/config-output.html | 38 +- modern-js/builder/api/config-performance.html | 24 +- modern-js/builder/api/config-security.html | 10 +- modern-js/builder/api/config-source.html | 38 +- modern-js/builder/api/config-tools.html | 104 +- modern-js/builder/api/index.html | 4 +- modern-js/builder/api/plugin-core.html | 10 +- modern-js/builder/api/plugin-hooks.html | 6 +- modern-js/builder/en/api/builder-core.html | 6 +- .../builder/en/api/builder-instance.html | 6 +- modern-js/builder/en/api/builder-types.html | 4 +- modern-js/builder/en/api/config-dev.html | 14 +- .../builder/en/api/config-experiments.html | 14 +- modern-js/builder/en/api/config-html.html | 24 +- modern-js/builder/en/api/config-output.html | 38 +- .../builder/en/api/config-performance.html | 24 +- modern-js/builder/en/api/config-security.html | 10 +- modern-js/builder/en/api/config-source.html | 38 +- modern-js/builder/en/api/config-tools.html | 104 +- modern-js/builder/en/api/index.html | 4 +- modern-js/builder/en/api/plugin-core.html | 10 +- modern-js/builder/en/api/plugin-hooks.html | 6 +- .../guide/advanced/browser-compatibility.html | 20 +- .../en/guide/advanced/browserslist.html | 22 +- .../guide/advanced/custom-webpack-config.html | 12 +- .../builder/en/guide/advanced/define.html | 18 +- modern-js/builder/en/guide/advanced/hmr.html | 10 +- modern-js/builder/en/guide/advanced/rem.html | 6 +- .../en/guide/advanced/rspack-start.html | 130 +-- .../builder/en/guide/advanced/storybook.html | 20 +- .../builder/en/guide/basic/build-target.html | 12 +- .../builder/en/guide/basic/builder-cli.html | 8 +- .../en/guide/basic/builder-config.html | 26 +- .../builder/en/guide/basic/css-usage.html | 32 +- .../builder/en/guide/basic/html-template.html | 40 +- .../builder/en/guide/basic/typescript.html | 18 +- .../builder/en/guide/debug/debug-mode.html | 10 +- .../builder/en/guide/faq/exceptions.html | 6 +- modern-js/builder/en/guide/faq/features.html | 6 +- modern-js/builder/en/guide/faq/general.html | 14 +- modern-js/builder/en/guide/faq/hmr.html | 6 +- modern-js/builder/en/guide/features.html | 130 +-- .../builder/en/guide/framework/vue2.html | 12 +- .../builder/en/guide/framework/vue3.html | 12 +- modern-js/builder/en/guide/glossary.html | 20 +- modern-js/builder/en/guide/introduction.html | 48 +- .../en/guide/optimization/split-chunk.html | 8 +- modern-js/builder/en/guide/quick-start.html | 26 +- modern-js/builder/en/index.html | 4 +- .../builder/en/plugins/introduction.html | 14 +- modern-js/builder/en/plugins/list.html | 20 +- .../builder/en/plugins/plugin-esbuild.html | 18 +- .../en/plugins/plugin-image-compress.html | 6 +- .../en/plugins/plugin-node-polyfill.html | 6 +- .../builder/en/plugins/plugin-stylus.html | 6 +- modern-js/builder/en/plugins/plugin-swc.html | 34 +- modern-js/builder/en/plugins/plugin-vue.html | 12 +- modern-js/builder/en/plugins/plugin-vue2.html | 12 +- .../guide/advanced/browser-compatibility.html | 20 +- .../builder/guide/advanced/browserslist.html | 22 +- .../guide/advanced/custom-webpack-config.html | 12 +- modern-js/builder/guide/advanced/define.html | 18 +- modern-js/builder/guide/advanced/hmr.html | 10 +- modern-js/builder/guide/advanced/rem.html | 6 +- .../builder/guide/advanced/rspack-start.html | 132 +-- .../builder/guide/advanced/storybook.html | 22 +- .../builder/guide/basic/build-target.html | 12 +- .../builder/guide/basic/builder-cli.html | 8 +- .../builder/guide/basic/builder-config.html | 26 +- modern-js/builder/guide/basic/css-usage.html | 32 +- .../builder/guide/basic/html-template.html | 40 +- modern-js/builder/guide/basic/typescript.html | 16 +- modern-js/builder/guide/debug/debug-mode.html | 10 +- modern-js/builder/guide/faq/exceptions.html | 6 +- modern-js/builder/guide/faq/features.html | 6 +- modern-js/builder/guide/faq/general.html | 14 +- modern-js/builder/guide/faq/hmr.html | 6 +- modern-js/builder/guide/features.html | 130 +-- modern-js/builder/guide/framework/vue2.html | 12 +- modern-js/builder/guide/framework/vue3.html | 12 +- modern-js/builder/guide/glossary.html | 20 +- modern-js/builder/guide/introduction.html | 48 +- .../guide/optimization/split-chunk.html | 8 +- modern-js/builder/guide/quick-start.html | 26 +- modern-js/builder/index.html | 4 +- modern-js/builder/plugins/introduction.html | 14 +- modern-js/builder/plugins/list.html | 20 +- modern-js/builder/plugins/plugin-esbuild.html | 18 +- .../plugins/plugin-image-compress.html | 6 +- .../builder/plugins/plugin-node-polyfill.html | 6 +- modern-js/builder/plugins/plugin-stylus.html | 6 +- modern-js/builder/plugins/plugin-swc.html | 34 +- modern-js/builder/plugins/plugin-vue.html | 12 +- modern-js/builder/plugins/plugin-vue2.html | 12 +- ...tyles.7c5c11e3.css => styles.c246dc17.css} | 2 +- modern-js/builder/static/js/7860.b69ddd1b.js | 2 + ...CENSE.txt => 7860.b69ddd1b.js.LICENSE.txt} | 1010 ++++++++--------- modern-js/builder/static/js/9521.19af8cde.js | 2 - .../{4291.88dc87bd.js => 1003.390997c2.js} | 4 +- ...CENSE.txt => 1003.390997c2.js.LICENSE.txt} | 0 .../builder/static/js/async/1022.99f81db4.js | 2 + ...CENSE.txt => 1022.99f81db4.js.LICENSE.txt} | 0 .../{6383.08ff3460.js => 1047.9e35d86c.js} | 4 +- ...CENSE.txt => 1047.9e35d86c.js.LICENSE.txt} | 0 .../builder/static/js/async/1052.8025e95e.js | 2 - .../builder/static/js/async/12.88db1204.js | 2 + ...LICENSE.txt => 12.88db1204.js.LICENSE.txt} | 0 .../{8725.171600dd.js => 1232.ea2604d1.js} | 4 +- ...CENSE.txt => 1232.ea2604d1.js.LICENSE.txt} | 0 .../{1419.30ba41a8.js => 1282.32280e73.js} | 4 +- ...CENSE.txt => 1282.32280e73.js.LICENSE.txt} | 0 .../{9174.251c4ace.js => 1285.d15005f4.js} | 4 +- ...CENSE.txt => 1285.d15005f4.js.LICENSE.txt} | 0 .../builder/static/js/async/13.f4494dfe.js | 2 - .../builder/static/js/async/131.40fa558f.js | 2 - .../{3633.6a24f42e.js => 1352.7be9b628.js} | 4 +- ...CENSE.txt => 1352.7be9b628.js.LICENSE.txt} | 0 .../{2913.8e20e1cf.js => 1363.259065f3.js} | 4 +- ...CENSE.txt => 1363.259065f3.js.LICENSE.txt} | 0 .../builder/static/js/async/195.1baa40ee.js | 2 - .../builder/static/js/async/1971.15c13118.js | 2 - .../builder/static/js/async/198.617bb9dd.js | 2 + ...ICENSE.txt => 198.617bb9dd.js.LICENSE.txt} | 0 .../{9519.74bbb57e.js => 2009.ce730eec.js} | 4 +- ...CENSE.txt => 2009.ce730eec.js.LICENSE.txt} | 0 .../builder/static/js/async/214.4e719606.js | 2 - .../{3078.6a3bb37e.js => 2200.a3834650.js} | 4 +- ...CENSE.txt => 2200.a3834650.js.LICENSE.txt} | 0 .../{1787.17247191.js => 2305.f9bd6735.js} | 4 +- ...CENSE.txt => 2305.f9bd6735.js.LICENSE.txt} | 0 .../{5828.ca22cdec.js => 2425.916bf4df.js} | 4 +- ...CENSE.txt => 2425.916bf4df.js.LICENSE.txt} | 0 .../{2907.ae5510ef.js => 2456.6f41c7c3.js} | 4 +- ...CENSE.txt => 2456.6f41c7c3.js.LICENSE.txt} | 0 .../{1197.5069e03f.js => 2505.82f05f40.js} | 4 +- ...CENSE.txt => 2505.82f05f40.js.LICENSE.txt} | 0 .../{9942.ca51deb4.js => 2520.5578d1bc.js} | 4 +- ...CENSE.txt => 2520.5578d1bc.js.LICENSE.txt} | 0 .../builder/static/js/async/2695.c8ab6d36.js | 2 + ...CENSE.txt => 2695.c8ab6d36.js.LICENSE.txt} | 0 .../builder/static/js/async/2806.422ab6d2.js | 2 - .../builder/static/js/async/285.dc0f4492.js | 2 - .../builder/static/js/async/2855.3a165ad2.js | 2 + ...CENSE.txt => 2855.3a165ad2.js.LICENSE.txt} | 0 .../{3777.20daeec4.js => 2868.44681afd.js} | 4 +- ...CENSE.txt => 2868.44681afd.js.LICENSE.txt} | 0 .../{8521.c4ce8f03.js => 2901.c1535b12.js} | 4 +- ...CENSE.txt => 2901.c1535b12.js.LICENSE.txt} | 0 .../builder/static/js/async/296.c4d901fd.js | 2 + ...ICENSE.txt => 296.c4d901fd.js.LICENSE.txt} | 0 .../builder/static/js/async/2982.dfe0393c.js | 2 + ...CENSE.txt => 2982.dfe0393c.js.LICENSE.txt} | 0 .../builder/static/js/async/308.d6afdc5c.js | 2 + ...ICENSE.txt => 308.d6afdc5c.js.LICENSE.txt} | 0 .../{6216.e5e17298.js => 3166.e60758be.js} | 4 +- ...CENSE.txt => 3166.e60758be.js.LICENSE.txt} | 0 .../{8267.f8a9024c.js => 343.febc0d0f.js} | 4 +- ...ICENSE.txt => 343.febc0d0f.js.LICENSE.txt} | 0 .../builder/static/js/async/3522.7d864f91.js | 2 + ...CENSE.txt => 3522.7d864f91.js.LICENSE.txt} | 0 .../{3600.33251d90.js => 3555.69d8ff4b.js} | 4 +- ...CENSE.txt => 3555.69d8ff4b.js.LICENSE.txt} | 0 .../builder/static/js/async/3569.055abd7b.js | 2 - .../builder/static/js/async/3617.e56ad7ff.js | 2 - .../{4549.0c2d12ea.js => 3681.9b030551.js} | 4 +- ...CENSE.txt => 3681.9b030551.js.LICENSE.txt} | 0 .../builder/static/js/async/3683.4b49e333.js | 2 - .../builder/static/js/async/3756.7f20e765.js | 2 - .../{4209.16118459.js => 3758.c10bff75.js} | 4 +- ...CENSE.txt => 3758.c10bff75.js.LICENSE.txt} | 0 .../{2967.a91acb3f.js => 3837.fa6ac68e.js} | 4 +- ...CENSE.txt => 3837.fa6ac68e.js.LICENSE.txt} | 0 .../{5574.9e8d36be.js => 3914.6ab5b2fe.js} | 4 +- ...CENSE.txt => 3914.6ab5b2fe.js.LICENSE.txt} | 0 .../{4978.ff4c044a.js => 3918.df87aa03.js} | 4 +- ...CENSE.txt => 3918.df87aa03.js.LICENSE.txt} | 0 .../builder/static/js/async/4.10d241de.js | 2 - .../{2332.bee40052.js => 4187.009c3f45.js} | 4 +- ...CENSE.txt => 4187.009c3f45.js.LICENSE.txt} | 0 .../{4923.f375b9db.js => 4271.605cf482.js} | 4 +- ...CENSE.txt => 4271.605cf482.js.LICENSE.txt} | 0 .../{7251.b1c7f7ef.js => 4273.2fbf6bfa.js} | 4 +- ...CENSE.txt => 4273.2fbf6bfa.js.LICENSE.txt} | 0 .../{3817.851c2475.js => 4280.8970f515.js} | 4 +- ...CENSE.txt => 4280.8970f515.js.LICENSE.txt} | 0 .../{3725.4abcbd87.js => 4288.9dff144d.js} | 4 +- ...CENSE.txt => 4288.9dff144d.js.LICENSE.txt} | 0 .../{5212.d42cf789.js => 4549.73d20c98.js} | 4 +- ...CENSE.txt => 4549.73d20c98.js.LICENSE.txt} | 0 .../builder/static/js/async/458.93848422.js | 2 - .../{7717.917d2b99.js => 4580.35692733.js} | 4 +- ...CENSE.txt => 4580.35692733.js.LICENSE.txt} | 0 .../builder/static/js/async/4601.c63cfba4.js | 2 - .../{9512.378d4b24.js => 4838.4205c2e5.js} | 4 +- ...CENSE.txt => 4838.4205c2e5.js.LICENSE.txt} | 0 .../builder/static/js/async/4981.73ce4afa.js | 2 + ...CENSE.txt => 4981.73ce4afa.js.LICENSE.txt} | 0 .../{6161.87dc09dc.js => 4991.68b96da0.js} | 4 +- ...CENSE.txt => 4991.68b96da0.js.LICENSE.txt} | 0 .../{1813.9d06c444.js => 5068.9941239f.js} | 4 +- ...CENSE.txt => 5068.9941239f.js.LICENSE.txt} | 0 .../{2881.d2d754c0.js => 5069.f04fde07.js} | 4 +- ...CENSE.txt => 5069.f04fde07.js.LICENSE.txt} | 0 .../{3669.bff51222.js => 5072.b31568da.js} | 4 +- ...CENSE.txt => 5072.b31568da.js.LICENSE.txt} | 0 .../{1489.acede760.js => 5391.a95a58fe.js} | 4 +- ...CENSE.txt => 5391.a95a58fe.js.LICENSE.txt} | 0 .../builder/static/js/async/5444.88fa6588.js | 2 + ...CENSE.txt => 5444.88fa6588.js.LICENSE.txt} | 0 .../{2643.c7d3d7e4.js => 5450.52afb6c6.js} | 4 +- ...CENSE.txt => 5450.52afb6c6.js.LICENSE.txt} | 0 .../{4505.d11214cf.js => 5484.27dd6f9e.js} | 4 +- ...CENSE.txt => 5484.27dd6f9e.js.LICENSE.txt} | 0 .../builder/static/js/async/5675.e7425e57.js | 2 - .../{8092.7d29c996.js => 5699.c814e7ac.js} | 4 +- ...CENSE.txt => 5699.c814e7ac.js.LICENSE.txt} | 0 .../{6815.4122c8cf.js => 5789.86e1a99b.js} | 4 +- ...CENSE.txt => 5789.86e1a99b.js.LICENSE.txt} | 0 .../builder/static/js/async/585.75966274.js | 2 + ...ICENSE.txt => 585.75966274.js.LICENSE.txt} | 0 .../{9330.5e4a6f32.js => 5859.0f89154c.js} | 4 +- ...CENSE.txt => 5859.0f89154c.js.LICENSE.txt} | 0 .../{8916.b19183c1.js => 6018.c5cc70cb.js} | 4 +- ...CENSE.txt => 6018.c5cc70cb.js.LICENSE.txt} | 0 .../builder/static/js/async/6062.e812bfa9.js | 2 + ...CENSE.txt => 6062.e812bfa9.js.LICENSE.txt} | 0 .../{4522.3ab34cea.js => 6069.11bfdfee.js} | 4 +- ...CENSE.txt => 6069.11bfdfee.js.LICENSE.txt} | 0 .../{4951.ded1e170.js => 6241.95ad27a6.js} | 4 +- ...CENSE.txt => 6241.95ad27a6.js.LICENSE.txt} | 0 .../{3264.ffd7d92c.js => 6269.7d97b3a5.js} | 4 +- ...CENSE.txt => 6269.7d97b3a5.js.LICENSE.txt} | 0 .../builder/static/js/async/6283.4937c2ad.js | 2 - .../builder/static/js/async/6344.97409fb8.js | 2 + ...CENSE.txt => 6344.97409fb8.js.LICENSE.txt} | 0 .../builder/static/js/async/6379.446829fe.js | 2 + ...CENSE.txt => 6379.446829fe.js.LICENSE.txt} | 18 +- .../{3082.dfe4e2d8.js => 6422.4407fb08.js} | 4 +- ...CENSE.txt => 6422.4407fb08.js.LICENSE.txt} | 0 .../{9681.2ae52d83.js => 6654.3e2da4a4.js} | 4 +- ...CENSE.txt => 6654.3e2da4a4.js.LICENSE.txt} | 0 .../{8822.678a6325.js => 6756.bb4fbe53.js} | 4 +- ...CENSE.txt => 6756.bb4fbe53.js.LICENSE.txt} | 0 .../builder/static/js/async/6782.05ec0d18.js | 2 + ...CENSE.txt => 6782.05ec0d18.js.LICENSE.txt} | 0 .../builder/static/js/async/6807.1c85adde.js | 2 + ...CENSE.txt => 6807.1c85adde.js.LICENSE.txt} | 0 .../{1729.e03a667d.js => 6940.cab48fab.js} | 4 +- ...CENSE.txt => 6940.cab48fab.js.LICENSE.txt} | 0 .../{3217.26a1b45b.js => 7127.1d236549.js} | 4 +- ...CENSE.txt => 7127.1d236549.js.LICENSE.txt} | 0 .../builder/static/js/async/7149.2f845766.js | 2 - .../builder/static/js/async/7204.62583af1.js | 2 + ...CENSE.txt => 7204.62583af1.js.LICENSE.txt} | 0 .../{9622.11660da0.js => 722.4b5dbea0.js} | 4 +- ...ICENSE.txt => 722.4b5dbea0.js.LICENSE.txt} | 0 .../builder/static/js/async/7285.8d19ae1d.js | 2 - .../builder/static/js/async/742.69bcf28d.js | 2 - .../{7652.e6336a56.js => 7505.8cb3ba2d.js} | 4 +- ...CENSE.txt => 7505.8cb3ba2d.js.LICENSE.txt} | 0 .../builder/static/js/async/762.41e97ada.js | 2 - .../{3855.71b7123c.js => 7697.384dfd47.js} | 4 +- ...CENSE.txt => 7697.384dfd47.js.LICENSE.txt} | 0 .../{6020.06b1260f.js => 7724.6224cadd.js} | 4 +- ...CENSE.txt => 7724.6224cadd.js.LICENSE.txt} | 0 .../{2934.1e001d53.js => 7821.30063f9b.js} | 4 +- ...CENSE.txt => 7821.30063f9b.js.LICENSE.txt} | 0 .../{1796.4b42bddd.js => 7850.7fdfa0a5.js} | 4 +- ...CENSE.txt => 7850.7fdfa0a5.js.LICENSE.txt} | 0 .../{1049.99662450.js => 7856.02223097.js} | 4 +- ...CENSE.txt => 7856.02223097.js.LICENSE.txt} | 0 .../{6790.a164fb05.js => 8021.6b10cea4.js} | 4 +- ...CENSE.txt => 8021.6b10cea4.js.LICENSE.txt} | 0 .../builder/static/js/async/811.c2b66481.js | 2 + ...ICENSE.txt => 811.c2b66481.js.LICENSE.txt} | 0 .../{1028.ef7733c3.js => 8142.8738b127.js} | 4 +- ...CENSE.txt => 8142.8738b127.js.LICENSE.txt} | 0 .../builder/static/js/async/8187.262733da.js | 2 + ...CENSE.txt => 8187.262733da.js.LICENSE.txt} | 0 .../builder/static/js/async/8276.7f3f0867.js | 2 + ...CENSE.txt => 8276.7f3f0867.js.LICENSE.txt} | 0 .../{6335.c4b9f363.js => 8407.e6647e4f.js} | 4 +- ...CENSE.txt => 8407.e6647e4f.js.LICENSE.txt} | 0 .../builder/static/js/async/8507.f7a7a64e.js | 2 - .../builder/static/js/async/851.d9526493.js | 2 - .../builder/static/js/async/873.0612410a.js | 2 + ...ICENSE.txt => 873.0612410a.js.LICENSE.txt} | 0 .../{2129.c76db993.js => 8845.e7ba6cf6.js} | 4 +- ...CENSE.txt => 8845.e7ba6cf6.js.LICENSE.txt} | 0 .../{6425.08be25b8.js => 8867.b82caa63.js} | 4 +- ...CENSE.txt => 8867.b82caa63.js.LICENSE.txt} | 0 .../builder/static/js/async/8886.30b9dbba.js | 2 + ...CENSE.txt => 8886.30b9dbba.js.LICENSE.txt} | 0 .../builder/static/js/async/9013.b9f07e85.js | 2 + ...CENSE.txt => 9013.b9f07e85.js.LICENSE.txt} | 0 .../{9041.f18f5ecb.js => 9071.6c996606.js} | 4 +- ...CENSE.txt => 9071.6c996606.js.LICENSE.txt} | 0 .../builder/static/js/async/9152.04afbd35.js | 2 + ...CENSE.txt => 9152.04afbd35.js.LICENSE.txt} | 0 .../builder/static/js/async/918.d8626717.js | 2 - .../builder/static/js/async/923.2d0a9e70.js | 2 + ...ICENSE.txt => 923.2d0a9e70.js.LICENSE.txt} | 0 .../builder/static/js/async/926.e3d44738.js | 2 - .../builder/static/js/async/936.442cb8fa.js | 2 - .../{4080.2c83d250.js => 9443.99074180.js} | 4 +- ...CENSE.txt => 9443.99074180.js.LICENSE.txt} | 0 .../builder/static/js/async/9462.21e3cb58.js | 2 + .../js/async/9462.21e3cb58.js.LICENSE.txt | 5 + .../builder/static/js/async/9475.d5b19e8f.js | 2 + ...CENSE.txt => 9475.d5b19e8f.js.LICENSE.txt} | 0 .../builder/static/js/async/9543.694017d7.js | 2 + ...CENSE.txt => 9543.694017d7.js.LICENSE.txt} | 0 .../builder/static/js/async/958.416efa60.js | 2 - .../js/async/958.416efa60.js.LICENSE.txt | 5 - .../{8766.8950dc7c.js => 9707.16e27a1b.js} | 4 +- ...CENSE.txt => 9707.16e27a1b.js.LICENSE.txt} | 0 .../builder/static/js/async/9723.545d1eaf.js | 2 - .../{9387.f62ba6d8.js => 9750.5377bf29.js} | 4 +- ...CENSE.txt => 9750.5377bf29.js.LICENSE.txt} | 0 .../{1219.9897e37b.js => 9775.020610dc.js} | 4 +- ...CENSE.txt => 9775.020610dc.js.LICENSE.txt} | 0 .../{6792.4be149a1.js => 9812.b2bc8322.js} | 4 +- ...CENSE.txt => 9812.b2bc8322.js.LICENSE.txt} | 0 .../{3664.0462a774.js => 9882.9e1b77b2.js} | 4 +- ...CENSE.txt => 9882.9e1b77b2.js.LICENSE.txt} | 0 .../builder/static/js/async/9895.00aa29b7.js | 2 - .../{1876.13ae91e0.js => 9975.1d6604f5.js} | 4 +- ...CENSE.txt => 9975.1d6604f5.js.LICENSE.txt} | 0 modern-js/builder/static/js/index.eb93c963.js | 2 + ...ENSE.txt => index.eb93c963.js.LICENSE.txt} | 4 +- modern-js/builder/static/js/index.f028db1d.js | 2 - .../builder/static/js/styles.76fcac28.js | 1 - .../builder/static/js/styles.cae6f0d6.js | 1 + 339 files changed, 1834 insertions(+), 1834 deletions(-) rename modern-js/builder/static/css/{styles.7c5c11e3.css => styles.c246dc17.css} (76%) create mode 100644 modern-js/builder/static/js/7860.b69ddd1b.js rename modern-js/builder/static/js/{9521.19af8cde.js.LICENSE.txt => 7860.b69ddd1b.js.LICENSE.txt} (99%) delete mode 100644 modern-js/builder/static/js/9521.19af8cde.js rename modern-js/builder/static/js/async/{4291.88dc87bd.js => 1003.390997c2.js} (99%) rename modern-js/builder/static/js/async/{2129.c76db993.js.LICENSE.txt => 1003.390997c2.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/1022.99f81db4.js rename modern-js/builder/static/js/async/{1028.ef7733c3.js.LICENSE.txt => 1022.99f81db4.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{6383.08ff3460.js => 1047.9e35d86c.js} (99%) rename modern-js/builder/static/js/async/{1052.8025e95e.js.LICENSE.txt => 1047.9e35d86c.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/1052.8025e95e.js create mode 100644 modern-js/builder/static/js/async/12.88db1204.js rename modern-js/builder/static/js/async/{2332.bee40052.js.LICENSE.txt => 12.88db1204.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{8725.171600dd.js => 1232.ea2604d1.js} (99%) rename modern-js/builder/static/js/async/{1197.5069e03f.js.LICENSE.txt => 1232.ea2604d1.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{1419.30ba41a8.js => 1282.32280e73.js} (99%) rename modern-js/builder/static/js/async/{1219.9897e37b.js.LICENSE.txt => 1282.32280e73.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{9174.251c4ace.js => 1285.d15005f4.js} (98%) rename modern-js/builder/static/js/async/{13.f4494dfe.js.LICENSE.txt => 1285.d15005f4.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/13.f4494dfe.js delete mode 100644 modern-js/builder/static/js/async/131.40fa558f.js rename modern-js/builder/static/js/async/{3633.6a24f42e.js => 1352.7be9b628.js} (99%) rename modern-js/builder/static/js/async/{1419.30ba41a8.js.LICENSE.txt => 1352.7be9b628.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{2913.8e20e1cf.js => 1363.259065f3.js} (99%) rename modern-js/builder/static/js/async/{1489.acede760.js.LICENSE.txt => 1363.259065f3.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/195.1baa40ee.js delete mode 100644 modern-js/builder/static/js/async/1971.15c13118.js create mode 100644 modern-js/builder/static/js/async/198.617bb9dd.js rename modern-js/builder/static/js/async/{1729.e03a667d.js.LICENSE.txt => 198.617bb9dd.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{9519.74bbb57e.js => 2009.ce730eec.js} (84%) rename modern-js/builder/static/js/async/{2806.422ab6d2.js.LICENSE.txt => 2009.ce730eec.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/214.4e719606.js rename modern-js/builder/static/js/async/{3078.6a3bb37e.js => 2200.a3834650.js} (99%) rename modern-js/builder/static/js/async/{1787.17247191.js.LICENSE.txt => 2200.a3834650.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{1787.17247191.js => 2305.f9bd6735.js} (98%) rename modern-js/builder/static/js/async/{1796.4b42bddd.js.LICENSE.txt => 2305.f9bd6735.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{5828.ca22cdec.js => 2425.916bf4df.js} (97%) rename modern-js/builder/static/js/async/{1813.9d06c444.js.LICENSE.txt => 2425.916bf4df.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{2907.ae5510ef.js => 2456.6f41c7c3.js} (98%) rename modern-js/builder/static/js/async/{1876.13ae91e0.js.LICENSE.txt => 2456.6f41c7c3.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{1197.5069e03f.js => 2505.82f05f40.js} (99%) rename modern-js/builder/static/js/async/{1971.15c13118.js.LICENSE.txt => 2505.82f05f40.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{9942.ca51deb4.js => 2520.5578d1bc.js} (98%) rename modern-js/builder/static/js/async/{214.4e719606.js.LICENSE.txt => 2520.5578d1bc.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/2695.c8ab6d36.js rename modern-js/builder/static/js/async/{2643.c7d3d7e4.js.LICENSE.txt => 2695.c8ab6d36.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/2806.422ab6d2.js delete mode 100644 modern-js/builder/static/js/async/285.dc0f4492.js create mode 100644 modern-js/builder/static/js/async/2855.3a165ad2.js rename modern-js/builder/static/js/async/{285.dc0f4492.js.LICENSE.txt => 2855.3a165ad2.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{3777.20daeec4.js => 2868.44681afd.js} (98%) rename modern-js/builder/static/js/async/{3683.4b49e333.js.LICENSE.txt => 2868.44681afd.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{8521.c4ce8f03.js => 2901.c1535b12.js} (88%) rename modern-js/builder/static/js/async/{2967.a91acb3f.js.LICENSE.txt => 2901.c1535b12.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/296.c4d901fd.js rename modern-js/builder/static/js/async/{2881.d2d754c0.js.LICENSE.txt => 296.c4d901fd.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/2982.dfe0393c.js rename modern-js/builder/static/js/async/{2907.ae5510ef.js.LICENSE.txt => 2982.dfe0393c.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/308.d6afdc5c.js rename modern-js/builder/static/js/async/{2913.8e20e1cf.js.LICENSE.txt => 308.d6afdc5c.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{6216.e5e17298.js => 3166.e60758be.js} (97%) rename modern-js/builder/static/js/async/{2934.1e001d53.js.LICENSE.txt => 3166.e60758be.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{8267.f8a9024c.js => 343.febc0d0f.js} (99%) rename modern-js/builder/static/js/async/{3078.6a3bb37e.js.LICENSE.txt => 343.febc0d0f.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/3522.7d864f91.js rename modern-js/builder/static/js/async/{131.40fa558f.js.LICENSE.txt => 3522.7d864f91.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{3600.33251d90.js => 3555.69d8ff4b.js} (98%) rename modern-js/builder/static/js/async/{3217.26a1b45b.js.LICENSE.txt => 3555.69d8ff4b.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/3569.055abd7b.js delete mode 100644 modern-js/builder/static/js/async/3617.e56ad7ff.js rename modern-js/builder/static/js/async/{4549.0c2d12ea.js => 3681.9b030551.js} (99%) rename modern-js/builder/static/js/async/{3264.ffd7d92c.js.LICENSE.txt => 3681.9b030551.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/3683.4b49e333.js delete mode 100644 modern-js/builder/static/js/async/3756.7f20e765.js rename modern-js/builder/static/js/async/{4209.16118459.js => 3758.c10bff75.js} (97%) rename modern-js/builder/static/js/async/{3600.33251d90.js.LICENSE.txt => 3758.c10bff75.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{2967.a91acb3f.js => 3837.fa6ac68e.js} (84%) rename modern-js/builder/static/js/async/{3082.dfe4e2d8.js.LICENSE.txt => 3837.fa6ac68e.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{5574.9e8d36be.js => 3914.6ab5b2fe.js} (95%) rename modern-js/builder/static/js/async/{3617.e56ad7ff.js.LICENSE.txt => 3914.6ab5b2fe.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{4978.ff4c044a.js => 3918.df87aa03.js} (97%) rename modern-js/builder/static/js/async/{3633.6a24f42e.js.LICENSE.txt => 3918.df87aa03.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/4.10d241de.js rename modern-js/builder/static/js/async/{2332.bee40052.js => 4187.009c3f45.js} (93%) rename modern-js/builder/static/js/async/{3725.4abcbd87.js.LICENSE.txt => 4187.009c3f45.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{4923.f375b9db.js => 4271.605cf482.js} (99%) rename modern-js/builder/static/js/async/{3664.0462a774.js.LICENSE.txt => 4271.605cf482.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{7251.b1c7f7ef.js => 4273.2fbf6bfa.js} (99%) rename modern-js/builder/static/js/async/{3756.7f20e765.js.LICENSE.txt => 4273.2fbf6bfa.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{3817.851c2475.js => 4280.8970f515.js} (99%) rename modern-js/builder/static/js/async/{3817.851c2475.js.LICENSE.txt => 4280.8970f515.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{3725.4abcbd87.js => 4288.9dff144d.js} (89%) rename modern-js/builder/static/js/async/{4.10d241de.js.LICENSE.txt => 4288.9dff144d.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{5212.d42cf789.js => 4549.73d20c98.js} (98%) rename modern-js/builder/static/js/async/{3855.71b7123c.js.LICENSE.txt => 4549.73d20c98.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/458.93848422.js rename modern-js/builder/static/js/async/{7717.917d2b99.js => 4580.35692733.js} (97%) rename modern-js/builder/static/js/async/{3777.20daeec4.js.LICENSE.txt => 4580.35692733.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/4601.c63cfba4.js rename modern-js/builder/static/js/async/{9512.378d4b24.js => 4838.4205c2e5.js} (97%) rename modern-js/builder/static/js/async/{4080.2c83d250.js.LICENSE.txt => 4838.4205c2e5.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/4981.73ce4afa.js rename modern-js/builder/static/js/async/{4291.88dc87bd.js.LICENSE.txt => 4981.73ce4afa.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{6161.87dc09dc.js => 4991.68b96da0.js} (88%) rename modern-js/builder/static/js/async/{6161.87dc09dc.js.LICENSE.txt => 4991.68b96da0.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{1813.9d06c444.js => 5068.9941239f.js} (99%) rename modern-js/builder/static/js/async/{4209.16118459.js.LICENSE.txt => 5068.9941239f.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{2881.d2d754c0.js => 5069.f04fde07.js} (99%) rename modern-js/builder/static/js/async/{4522.3ab34cea.js.LICENSE.txt => 5069.f04fde07.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{3669.bff51222.js => 5072.b31568da.js} (99%) rename modern-js/builder/static/js/async/{3669.bff51222.js.LICENSE.txt => 5072.b31568da.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{1489.acede760.js => 5391.a95a58fe.js} (98%) rename modern-js/builder/static/js/async/{4549.0c2d12ea.js.LICENSE.txt => 5391.a95a58fe.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/5444.88fa6588.js rename modern-js/builder/static/js/async/{4923.f375b9db.js.LICENSE.txt => 5444.88fa6588.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{2643.c7d3d7e4.js => 5450.52afb6c6.js} (99%) rename modern-js/builder/static/js/async/{4951.ded1e170.js.LICENSE.txt => 5450.52afb6c6.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{4505.d11214cf.js => 5484.27dd6f9e.js} (99%) rename modern-js/builder/static/js/async/{4505.d11214cf.js.LICENSE.txt => 5484.27dd6f9e.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/5675.e7425e57.js rename modern-js/builder/static/js/async/{8092.7d29c996.js => 5699.c814e7ac.js} (98%) rename modern-js/builder/static/js/async/{4601.c63cfba4.js.LICENSE.txt => 5699.c814e7ac.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{6815.4122c8cf.js => 5789.86e1a99b.js} (99%) rename modern-js/builder/static/js/async/{4978.ff4c044a.js.LICENSE.txt => 5789.86e1a99b.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/585.75966274.js rename modern-js/builder/static/js/async/{5212.d42cf789.js.LICENSE.txt => 585.75966274.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{9330.5e4a6f32.js => 5859.0f89154c.js} (99%) rename modern-js/builder/static/js/async/{5574.9e8d36be.js.LICENSE.txt => 5859.0f89154c.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{8916.b19183c1.js => 6018.c5cc70cb.js} (97%) rename modern-js/builder/static/js/async/{5675.e7425e57.js.LICENSE.txt => 6018.c5cc70cb.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/6062.e812bfa9.js rename modern-js/builder/static/js/async/{7149.2f845766.js.LICENSE.txt => 6062.e812bfa9.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{4522.3ab34cea.js => 6069.11bfdfee.js} (99%) rename modern-js/builder/static/js/async/{5828.ca22cdec.js.LICENSE.txt => 6069.11bfdfee.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{4951.ded1e170.js => 6241.95ad27a6.js} (97%) rename modern-js/builder/static/js/async/{6216.e5e17298.js.LICENSE.txt => 6241.95ad27a6.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{3264.ffd7d92c.js => 6269.7d97b3a5.js} (99%) rename modern-js/builder/static/js/async/{6283.4937c2ad.js.LICENSE.txt => 6269.7d97b3a5.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/6283.4937c2ad.js create mode 100644 modern-js/builder/static/js/async/6344.97409fb8.js rename modern-js/builder/static/js/async/{6335.c4b9f363.js.LICENSE.txt => 6344.97409fb8.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/6379.446829fe.js rename modern-js/builder/static/js/async/{3569.055abd7b.js.LICENSE.txt => 6379.446829fe.js.LICENSE.txt} (81%) rename modern-js/builder/static/js/async/{3082.dfe4e2d8.js => 6422.4407fb08.js} (99%) rename modern-js/builder/static/js/async/{7652.e6336a56.js.LICENSE.txt => 6422.4407fb08.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{9681.2ae52d83.js => 6654.3e2da4a4.js} (98%) rename modern-js/builder/static/js/async/{7717.917d2b99.js.LICENSE.txt => 6654.3e2da4a4.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{8822.678a6325.js => 6756.bb4fbe53.js} (88%) rename modern-js/builder/static/js/async/{8521.c4ce8f03.js.LICENSE.txt => 6756.bb4fbe53.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/6782.05ec0d18.js rename modern-js/builder/static/js/async/{6383.08ff3460.js.LICENSE.txt => 6782.05ec0d18.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/6807.1c85adde.js rename modern-js/builder/static/js/async/{8092.7d29c996.js.LICENSE.txt => 6807.1c85adde.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{1729.e03a667d.js => 6940.cab48fab.js} (99%) rename modern-js/builder/static/js/async/{6425.08be25b8.js.LICENSE.txt => 6940.cab48fab.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{3217.26a1b45b.js => 7127.1d236549.js} (99%) rename modern-js/builder/static/js/async/{6790.a164fb05.js.LICENSE.txt => 7127.1d236549.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/7149.2f845766.js create mode 100644 modern-js/builder/static/js/async/7204.62583af1.js rename modern-js/builder/static/js/async/{6792.4be149a1.js.LICENSE.txt => 7204.62583af1.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{9622.11660da0.js => 722.4b5dbea0.js} (99%) rename modern-js/builder/static/js/async/{9622.11660da0.js.LICENSE.txt => 722.4b5dbea0.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/7285.8d19ae1d.js delete mode 100644 modern-js/builder/static/js/async/742.69bcf28d.js rename modern-js/builder/static/js/async/{7652.e6336a56.js => 7505.8cb3ba2d.js} (92%) rename modern-js/builder/static/js/async/{8766.8950dc7c.js.LICENSE.txt => 7505.8cb3ba2d.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/762.41e97ada.js rename modern-js/builder/static/js/async/{3855.71b7123c.js => 7697.384dfd47.js} (99%) rename modern-js/builder/static/js/async/{6815.4122c8cf.js.LICENSE.txt => 7697.384dfd47.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{6020.06b1260f.js => 7724.6224cadd.js} (98%) rename modern-js/builder/static/js/async/{6020.06b1260f.js.LICENSE.txt => 7724.6224cadd.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{2934.1e001d53.js => 7821.30063f9b.js} (98%) rename modern-js/builder/static/js/async/{7251.b1c7f7ef.js.LICENSE.txt => 7821.30063f9b.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{1796.4b42bddd.js => 7850.7fdfa0a5.js} (99%) rename modern-js/builder/static/js/async/{7285.8d19ae1d.js.LICENSE.txt => 7850.7fdfa0a5.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{1049.99662450.js => 7856.02223097.js} (98%) rename modern-js/builder/static/js/async/{1049.99662450.js.LICENSE.txt => 7856.02223097.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{6790.a164fb05.js => 8021.6b10cea4.js} (99%) rename modern-js/builder/static/js/async/{762.41e97ada.js.LICENSE.txt => 8021.6b10cea4.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/811.c2b66481.js rename modern-js/builder/static/js/async/{195.1baa40ee.js.LICENSE.txt => 811.c2b66481.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{1028.ef7733c3.js => 8142.8738b127.js} (98%) rename modern-js/builder/static/js/async/{8267.f8a9024c.js.LICENSE.txt => 8142.8738b127.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/8187.262733da.js rename modern-js/builder/static/js/async/{8507.f7a7a64e.js.LICENSE.txt => 8187.262733da.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/8276.7f3f0867.js rename modern-js/builder/static/js/async/{458.93848422.js.LICENSE.txt => 8276.7f3f0867.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{6335.c4b9f363.js => 8407.e6647e4f.js} (97%) rename modern-js/builder/static/js/async/{851.d9526493.js.LICENSE.txt => 8407.e6647e4f.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/8507.f7a7a64e.js delete mode 100644 modern-js/builder/static/js/async/851.d9526493.js create mode 100644 modern-js/builder/static/js/async/873.0612410a.js rename modern-js/builder/static/js/async/{8725.171600dd.js.LICENSE.txt => 873.0612410a.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{2129.c76db993.js => 8845.e7ba6cf6.js} (98%) rename modern-js/builder/static/js/async/{9681.2ae52d83.js.LICENSE.txt => 8845.e7ba6cf6.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{6425.08be25b8.js => 8867.b82caa63.js} (99%) rename modern-js/builder/static/js/async/{8916.b19183c1.js.LICENSE.txt => 8867.b82caa63.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/8886.30b9dbba.js rename modern-js/builder/static/js/async/{9041.f18f5ecb.js.LICENSE.txt => 8886.30b9dbba.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/9013.b9f07e85.js rename modern-js/builder/static/js/async/{9174.251c4ace.js.LICENSE.txt => 9013.b9f07e85.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{9041.f18f5ecb.js => 9071.6c996606.js} (99%) rename modern-js/builder/static/js/async/{918.d8626717.js.LICENSE.txt => 9071.6c996606.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/9152.04afbd35.js rename modern-js/builder/static/js/async/{742.69bcf28d.js.LICENSE.txt => 9152.04afbd35.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/918.d8626717.js create mode 100644 modern-js/builder/static/js/async/923.2d0a9e70.js rename modern-js/builder/static/js/async/{8822.678a6325.js.LICENSE.txt => 923.2d0a9e70.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/926.e3d44738.js delete mode 100644 modern-js/builder/static/js/async/936.442cb8fa.js rename modern-js/builder/static/js/async/{4080.2c83d250.js => 9443.99074180.js} (99%) rename modern-js/builder/static/js/async/{926.e3d44738.js.LICENSE.txt => 9443.99074180.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/9462.21e3cb58.js create mode 100644 modern-js/builder/static/js/async/9462.21e3cb58.js.LICENSE.txt create mode 100644 modern-js/builder/static/js/async/9475.d5b19e8f.js rename modern-js/builder/static/js/async/{9330.5e4a6f32.js.LICENSE.txt => 9475.d5b19e8f.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/async/9543.694017d7.js rename modern-js/builder/static/js/async/{936.442cb8fa.js.LICENSE.txt => 9543.694017d7.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/958.416efa60.js delete mode 100644 modern-js/builder/static/js/async/958.416efa60.js.LICENSE.txt rename modern-js/builder/static/js/async/{8766.8950dc7c.js => 9707.16e27a1b.js} (72%) rename modern-js/builder/static/js/async/{9519.74bbb57e.js.LICENSE.txt => 9707.16e27a1b.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/9723.545d1eaf.js rename modern-js/builder/static/js/async/{9387.f62ba6d8.js => 9750.5377bf29.js} (98%) rename modern-js/builder/static/js/async/{9387.f62ba6d8.js.LICENSE.txt => 9750.5377bf29.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{1219.9897e37b.js => 9775.020610dc.js} (98%) rename modern-js/builder/static/js/async/{9512.378d4b24.js.LICENSE.txt => 9775.020610dc.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{6792.4be149a1.js => 9812.b2bc8322.js} (99%) rename modern-js/builder/static/js/async/{9723.545d1eaf.js.LICENSE.txt => 9812.b2bc8322.js.LICENSE.txt} (100%) rename modern-js/builder/static/js/async/{3664.0462a774.js => 9882.9e1b77b2.js} (99%) rename modern-js/builder/static/js/async/{9895.00aa29b7.js.LICENSE.txt => 9882.9e1b77b2.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/async/9895.00aa29b7.js rename modern-js/builder/static/js/async/{1876.13ae91e0.js => 9975.1d6604f5.js} (98%) rename modern-js/builder/static/js/async/{9942.ca51deb4.js.LICENSE.txt => 9975.1d6604f5.js.LICENSE.txt} (100%) create mode 100644 modern-js/builder/static/js/index.eb93c963.js rename modern-js/builder/static/js/{index.f028db1d.js.LICENSE.txt => index.eb93c963.js.LICENSE.txt} (100%) delete mode 100644 modern-js/builder/static/js/index.f028db1d.js delete mode 100644 modern-js/builder/static/js/styles.76fcac28.js create mode 100644 modern-js/builder/static/js/styles.cae6f0d6.js diff --git a/modern-js/builder/api/builder-core.html b/modern-js/builder/api/builder-core.html index fc4e6f3934..b56fb43f42 100644 --- a/modern-js/builder/api/builder-core.html +++ b/modern-js/builder/api/builder-core.html @@ -1,4 +1,4 @@ -Builder Core - Modern.js Builder +Builder Core - Modern.js Builder -Modern.js Builder

Builder Core

+Modern.js Builder

Builder Core

本章节描述了 Builder 提供的一些核心方法。

createBuilder

创建一个 Builder 实例对象。

@@ -58,7 +58,7 @@

options
  • cwd: 当前执行构建的根路径,默认值为 process.cwd()
  • entry: 构建入口对象
  • -
  • target: 构建产物类型,默认值为 ['web'],详见 构建产物类型 章节。
  • +
  • target: 构建产物类型,默认值为 ['web'],详见 构建产物类型 章节。
  • framework: 框架的英文名称,唯一标识符,默认值为 'modern.js'
  • configPath: 框架配置文件的路径(绝对路径),该参数影响构建缓存更新
  • diff --git a/modern-js/builder/api/builder-instance.html b/modern-js/builder/api/builder-instance.html index fb3c6426d9..834ed203ff 100644 --- a/modern-js/builder/api/builder-instance.html +++ b/modern-js/builder/api/builder-instance.html @@ -1,4 +1,4 @@ -Builder Instance - Modern.js Builder +Builder Instance - Modern.js Builder -Modern.js Builder

    Builder Instance

    +Modern.js Builder

    Builder Instance

    本章节描述了 Builder 实例对象上所有的属性和方法。

    builder.context

    builder.context 是一个只读对象,提供一些上下文信息。

    @@ -330,7 +330,7 @@

    builder.inspectConfig

    查看 Builder 内部最终生成的 builder 配置和 bundler 配置。

    TIP

    inspectConfig 方法不支持与 startDevServer / build 方法同时使用。

    -

    当你需要在构建过程中查看完整的 builder 和 bundler 配置时,可以使用 调试模式,也可以通过 onBeforeBuildonBeforeCreateCompile 等钩子函数来获取。 +

    当你需要在构建过程中查看完整的 builder 和 bundler 配置时,可以使用 调试模式,也可以通过 onBeforeBuildonBeforeCreateCompile 等钩子函数来获取。

    -

    定义 HTML 模板的文件路径,对应 html-webpack-plugintemplate 配置项。

    +

    定义 HTML 模板的文件路径,对应 html-webpack-plugintemplate 配置项。

    示例

    使用自定义的 HTML 模板文件替代默认模板,可以添加如下设置:

    export default {
    @@ -562,7 +562,7 @@ 

    示例 template: './static/index.html', }, };

    -

    详细用法可参考 Rsbuild - html.template

    +

    详细用法可参考 Rsbuild - html.template

    html.templateByEntries

    • 类型: Object
    • @@ -602,7 +602,7 @@

      options: object; }; };

    -

    定义 HTML 模板中的参数,对应 html-webpack-plugintemplateParameters 配置项。你可以使用配置为对象或者函数。

    +

    定义 HTML 模板中的参数,对应 html-webpack-plugintemplateParameters 配置项。你可以使用配置为对象或者函数。

    如果是对象,会和默认参数合并。比如:

    export default {
       html: {
    @@ -630,7 +630,7 @@ 

    }, }, };

    -

    详细用法可参考 Rsbuild - html.templateParameters

    +

    详细用法可参考 Rsbuild - html.templateParameters

    html.templateParametersByEntries

    • 类型: Object
    • @@ -665,7 +665,7 @@

      html.t title: 'example', }, };

    -

    详细用法可参考 Rsbuild - html.title

    +

    详细用法可参考 Rsbuild - html.title

    html.titleByEntries

    -

    指定项目兼容的目标浏览器范围。该值会被 @babel/preset-envautoprefixer 用来确定需要转换的 JavaScript 语法特性和需要添加的 CSS 浏览器前缀。

    +

    指定项目兼容的目标浏览器范围。该值会被 @babel/preset-envautoprefixer 用来确定需要转换的 JavaScript 语法特性和需要添加的 CSS 浏览器前缀。

    优先级

    overrideBrowserslist 配置的优先级高于项目中的 .browserslistrc 配置文件和 package.json 中的 browserslist 字段。

    大多数场景下,推荐优先使用 .browserslistrc 文件,而不是使用 overrideBrowserslist 配置。因为 .browserslistrc 文件是官方定义的配置文件,通用性更强,可以被社区中的其他库识别。

    @@ -1190,7 +1190,7 @@

    示例 ], }, };

    -

    可以查看 browserslist 文档 来了解如何自定义浏览器范围。

    +

    可以查看 browserslist 文档 来了解如何自定义浏览器范围。

    根据产物类型设置

    当你同时构建多种类型的产物时,你可以为不同的产物类型设置不同的目标浏览器范围。此时,你需要把 overrideBrowserslist 设置为一个对象,对象的 key 为对应的产物类型。

    比如为 webnode 设置不同的范围:

    @@ -1223,7 +1223,7 @@

    usage等价于 @babel/preset-envuseBuiltIns: 'usage' 配置。

    ua

    根据当前请求的 UA 信息,动态下发 Polyfill 代码。

    -

    动态下发能力需要与上层框架结合使用,详情可参考 Modern.js - 运行时按需 Polyfill

    +

    动态下发能力需要与上层框架结合使用,详情可参考 Modern.js - 运行时按需 Polyfill

    off

    不注入 Polyfill。使用此选项时,需要自行保证代码的兼容性。

    output.svgDefaultExport

    diff --git a/modern-js/builder/api/config-performance.html b/modern-js/builder/api/config-performance.html index 633f64ef03..4f694e9da3 100644 --- a/modern-js/builder/api/config-performance.html +++ b/modern-js/builder/api/config-performance.html @@ -1,4 +1,4 @@ -Performance Config - Modern.js Builder +Performance Config - Modern.js Builder -Modern.js Builder

    Performance Config

    +Modern.js Builder

    Performance Config

    本章节描述了 Builder 中与性能有关的配置。

    performance.buildCache

      @@ -74,7 +74,7 @@

    • 类型: Object | undefined
    -

    用于开启 webpack-bundle-analyzer 插件来分析产物体积。

    +

    用于开启 webpack-bundle-analyzer 插件来分析产物体积。

    默认情况下,Builder 不会开启 webpack-bundle-analyzer。当开启该功能后,内部的默认配置如下:

    const defaultConfig = {
       analyzerMode: 'static',
    @@ -292,9 +292,9 @@ 

    默认值: undefined

    -

    为哪些资源配置 dns-prefetch 属性。

    +

    为哪些资源配置 dns-prefetch 属性。

    配置该属性可以在请求资源之前解析域名,降低请求延迟,提升加载性能。

    -

    更多信息可参考:Using dns-prefetch

    +

    更多信息可参考:Using dns-prefetch

    示例

    export default {
       performance: {
    @@ -312,7 +312,7 @@ 

  • 默认值: undefined
  • -

    为哪些资源配置 preconnect 属性。

    +

    为哪些资源配置 preconnect 属性。

    配置该属性会预先建立与服务器的连接,如果站点是 HTTPS 的,则此过程包括 DNS 解析,建立 TCP 连接以及执行 TLS 握手。将 Preconnect 和 DnsPrefetch 结合使用可进一步减少跨域请求的延迟。

    示例

    export default {
    @@ -336,7 +336,7 @@ 

  • 默认值: undefined
  • -

    为哪些资源配置 prefetch 属性。

    +

    为哪些资源配置 prefetch 属性。

    该属性用于配置在将来某些导航下可能需要的资源,此时,浏览器通常在空闲状态时获取此资源。

    Boolean 类型

    当设置 performance.prefetchtrue,将根据如下配置对资源进行预获取:

    @@ -380,7 +380,7 @@

  • 默认值: undefined
  • -

    为哪些资源配置 preload 属性。

    +

    为哪些资源配置 preload 属性。

    该属性通常用于配置当前导航下可能需要的资源,此时,浏览器通常以中等优先级(不是布局阻塞)获取此资源。

    Boolean 类型

    当设置 performance.preloadtrue,将根据如下配置对资源进行预加载:

    @@ -433,7 +433,7 @@

    类型: boolean
  • 默认值: false
  • -

    是否捕获每个模块的耗时信息,对应 webpack / Rspack 的 profile 配置。

    +

    是否捕获每个模块的耗时信息,对应 webpack / Rspack 的 profile 配置。

    示例

    export default {
       performance: {
    @@ -468,7 +468,7 @@ 

    类型: boolean
  • 默认值: false
  • -

    是否移除 moment.js 的语言包文件。

    +

    是否移除 moment.js 的语言包文件。

    moment.js 默认包含了大量的语言包文件,会导致打包后的包体积增大。

    当项目中使用了 moment.js 时,推荐开启此选项,自动排除所有的语言包文件:

    export default {
    @@ -487,8 +487,8 @@ 

    默认值: true
  • 打包工具: 仅支持 webpack
  • -

    是否模块化 lodash 的导入,删除未使用的 lodash 模块,从而减少 lodash 代码体积。

    -

    这项优化基于 babel-plugin-lodashswc-plugin-lodash 实现。

    +

    是否模块化 lodash 的导入,删除未使用的 lodash 模块,从而减少 lodash 代码体积。

    +

    这项优化基于 babel-plugin-lodashswc-plugin-lodash 实现。

    示例

    该选项默认开启,Builder 会自动将 lodash 的代码引用指向子路径。

    比如:

    diff --git a/modern-js/builder/api/config-security.html b/modern-js/builder/api/config-security.html index da2f1ef34e..dac6257fc5 100644 --- a/modern-js/builder/api/config-security.html +++ b/modern-js/builder/api/config-security.html @@ -1,4 +1,4 @@ -Security Config - Modern.js Builder +Security Config - Modern.js Builder -Modern.js Builder

    Security Config

    +Modern.js Builder

    Security Config

    本章节描述了 Builder 中与安全有关的配置。

    security.sri

      @@ -26,11 +26,11 @@

      secu
    • 打包工具: 仅支持 webpack

    为 HTML 所引入的子资源添加完整性属性 —— integrity,使浏览器能够验证引入资源的完整性,以此防止下载的资源被篡改。

    -

    启动该选项后会将 webpack 的 output.crossOriginLoading 配置项设置为 anonymous

    +

    启动该选项后会将 webpack 的 output.crossOriginLoading 配置项设置为 anonymous

    SRI 介绍

    子资源完整性 Subresource Integrity(SRI)是专门用来校验资源的一种方案,它读取资源标签中的 integrity 属性,将其中的信息摘要值,和资源实际的信息摘要值进行对比,如果发现无法匹配,那么浏览器就会拒绝执行资源。

    对于 script 标签来说,结果为拒绝执行其中的代码;对于 CSS link 来说,结果为不加载其中的样式。

    -

    关于 SRI 的更多内容,可以查看 Subresource Integrity - MDN

    +

    关于 SRI 的更多内容,可以查看 Subresource Integrity - MDN

    示例

    默认情况下,不会开启 SRI,当开启之后它的默认配置如下:

    {
    @@ -102,7 +102,7 @@ 

    checkSy
  • 类型: string[]
  • 默认值: 当前项目的 browserslist 配置
  • -

    targets 表示项目的目标浏览器范围,它的值为标准的 browserslist 数组,如果你不了解 browserslist 的用法,请参考 「设置浏览器范围」

    +

    targets 表示项目的目标浏览器范围,它的值为标准的 browserslist 数组,如果你不了解 browserslist 的用法,请参考 「设置浏览器范围」

    Builder 会读取 targets 的值,并自动推导出构建产物中可以使用的最低 ECMAScript 语法版本,比如 ES5ES6

    source.include

    const defaultInclude = [
    @@ -177,7 +177,7 @@ 

    so ];

    source.include 用于指定额外需要编译的 JavaScript 文件。

    为了避免二次编译,默认情况下,Rsbuild 只会编译当前目录下的 JavaScript 文件,以及所有目录下的 TypeScript 和 JSX 文件,不会编译 node_modules 下的 JavaScript 文件。

    -

    通过 source.include 配置项,可以指定需要 Rsbuild 额外进行编译的目录或模块。source.include 的用法与 Rspack 中的 Rule.include 一致,支持传入字符串、正则表达式来匹配模块的路径。

    +

    通过 source.include 配置项,可以指定需要 Rsbuild 额外进行编译的目录或模块。source.include 的用法与 Rspack 中的 Rule.include 一致,支持传入字符串、正则表达式来匹配模块的路径。

    比如:

    import path from 'path';
     
    @@ -245,11 +245,11 @@ 

    }, }, };

    -

    sourceType 设置为 unambiguous 可能会产生一些其他影响,请参考 Babel 官方文档

    +

    sourceType 设置为 unambiguous 可能会产生一些其他影响,请参考 Babel 官方文档

    如果你匹配的模块是通过 symlink 链接到当前项目中的,那么需要匹配这个模块的真实路径,而不是 symlink 后的路径。

    比如,你将 Monorepo 中的 packages/foo 路径 symlink 到当前项目的 node_modules/foo 路径下,则需要去匹配 packages/foo 路径,而不是 node_modules/foo 路径。

    -

    该行为可以通过 webpack 的 resolve.symlinks 配置项来进行控制。

    +

    该行为可以通过 webpack 的 resolve.symlinks 配置项来进行控制。

    注意事项

    注意,source.include 不应该被用于编译整个 node_modules 目录,比如下面的写法是错误的:

    export default {
    @@ -263,7 +263,7 @@ 

    so
  • 类型: Array<string | RegExp>
  • 默认值: []
  • -

    指定不需要编译的 JavaScript/TypeScript 文件。用法与 webpack 中的 Rule.exclude 一致,支持传入字符串或正则表达式来匹配模块的路径。

    +

    指定不需要编译的 JavaScript/TypeScript 文件。用法与 webpack 中的 Rule.exclude 一致,支持传入字符串或正则表达式来匹配模块的路径。

    比如:

    import path from 'path';
     
    @@ -285,8 +285,8 @@ 

    sou
  • 嵌套对象的父子键名之间会用 . 连接作为需要替换的变量名。
  • 以 typeof 开头的键名会用来替换 typeof 调用。
  • -

    更多细节参考 webpack - DefinePlugin

    -
    TIP

    在使用 Rspack 作为打包工具时,支持的类型可参考 Rspack.builtins.define +

    更多细节参考 webpack - DefinePlugin

    +
    TIP

    在使用 Rspack 作为打包工具时,支持的类型可参考 Rspack.builtins.define

    示例

    export default {
    @@ -419,8 +419,8 @@ 

    Func }, };

    source.transformImport

    -

    用于按需引入组件库的代码和样式,能力等价于 babel-plugin-import

    -

    它与 babel-plugin-import 的区别在于,source.transformImport 不与 Babel 耦合。Builder 会自动识别当前使用的编译工具是 Babel、SWC 还是 Rspack,并添加相应的按需引入配置。

    +

    用于按需引入组件库的代码和样式,能力等价于 babel-plugin-import

    +

    它与 babel-plugin-import 的区别在于,source.transformImport 不与 Babel 耦合。Builder 会自动识别当前使用的编译工具是 Babel、SWC 还是 Rspack,并添加相应的按需引入配置。

    • 类型:
    @@ -439,13 +439,13 @@

  • 默认值:
  • -

    当项目中安装了 Ant Design 组件库 <= 4.x 版本时,Builder 会自动添加以下默认配置:

    +

    当项目中安装了 Ant Design 组件库 <= 4.x 版本时,Builder 会自动添加以下默认配置:

    const defaultAntdConfig = {
       libraryName: 'antd',
       libraryDirectory: isServer ? 'lib' : 'es',
       style: true,
     };
    -

    当项目中安装了 Arco Design 组件库 时,Builder 会自动添加以下默认配置:

    +

    当项目中安装了 Arco Design 组件库 时,Builder 会自动添加以下默认配置:

    const defaultArcoConfig = [
       {
         libraryName: '@arco-design/web-react',
    @@ -564,7 +564,7 @@ 

    customName

    自定义转换后的导入路径,输入是引入的成员,例如配置成 (member) => `my-lib/${member}` ,会将 import { foo } from 'bar' 转换成 import foo from 'my-lib/foo'

    -

    在使用 Rspack 构建时,不能使用函数配置,但可以使用 handlebars 模版字符串,对于上面的函数配置,在使用模版字符串时可以用以下模版代替 my-lib/{{ member }},也可以使用一些内置帮助方法,例如 my-lib/{{ kebabCase member }} 来转换成 kebab-case 格式,除了 kebabCase 以外还有 camelCase,snakeCase,upperCase,lowerCase 可以使用。

    +

    在使用 Rspack 构建时,不能使用函数配置,但可以使用 handlebars 模版字符串,对于上面的函数配置,在使用模版字符串时可以用以下模版代替 my-lib/{{ member }},也可以使用一些内置帮助方法,例如 my-lib/{{ kebabCase member }} 来转换成 kebab-case 格式,除了 kebabCase 以外还有 camelCase,snakeCase,upperCase,lowerCase 可以使用。

    customStyleName

    • 类型: ((member: string) => string | undefined) | string
    • @@ -577,7 +577,7 @@

      customStyl

    自定义转换后的样式导入路径,输入是引入的成员,例如配置成 (member) => `my-lib/${member}` ,会将 import { foo } from 'bar' 转换成 import foo from 'my-lib/foo'

    -

    在使用 Rspack 构建时,不能使用函数配置,但可以使用 handlebars 模版字符串,对于上面的函数配置,在使用模版字符串时可以用以下模版代替 my-lib/{{ member }},也可以使用一些内置帮助方法,例如 my-lib/{{ kebabCase member }} 来转换成 kebab-case 格式,除了 kebabCase 以外还有 camelCase,snakeCase,upperCase,lowerCase 可以使用。

    +

    在使用 Rspack 构建时,不能使用函数配置,但可以使用 handlebars 模版字符串,对于上面的函数配置,在使用模版字符串时可以用以下模版代替 my-lib/{{ member }},也可以使用一些内置帮助方法,例如 my-lib/{{ kebabCase member }} 来转换成 kebab-case 格式,除了 kebabCase 以外还有 camelCase,snakeCase,upperCase,lowerCase 可以使用。

    source.preEntry

    • 类型: string | string[]
    • @@ -613,7 +613,7 @@

      类型: string | Record<BuilderTarget, string>
    • 默认值: undefined
    -

    用于为 resolve.extensions 添加统一的前缀。

    +

    用于为 resolve.extensions 添加统一的前缀。

    如果多个文件拥有相同的名称,但具有不同的文件后缀,Builder 会根据 extensions 数组的顺序进行识别,解析数组中第一个被识别的文件,并跳过其余文件。

    示例

    下面是配置 .web 前缀的例子。

    @@ -653,7 +653,7 @@

  • 默认值: undefined
  • -

    该配置项将决定你使用 package.json 哪个字段导入 npm 模块。对应 webpack 的 resolve.mainFields 配置。

    +

    该配置项将决定你使用 package.json 哪个字段导入 npm 模块。对应 webpack 的 resolve.mainFields 配置。

    示例

    export default {
       source: {
    diff --git a/modern-js/builder/api/config-tools.html b/modern-js/builder/api/config-tools.html
    index d87f869456..0d323a3e44 100644
    --- a/modern-js/builder/api/config-tools.html
    +++ b/modern-js/builder/api/config-tools.html
    @@ -1,4 +1,4 @@
    -Tools Config - Modern.js Builder
    +Tools Config - Modern.js Builder
     
    -Modern.js Builder

    Tools Config

    +Modern.js Builder

    Tools Config

    本章节描述了 Builder 中与底层工具有关的配置。

    tools.autoprefixer

      @@ -21,7 +21,7 @@

      // 以及 `output.overrideBrowserslist`(优先级更高) 配置 overrideBrowserslist: browserslist, }

    -

    通过 tools.autoprefixer 可以修改 autoprefixer 的配置。

    +

    通过 tools.autoprefixer 可以修改 autoprefixer 的配置。

    Object 类型

    tools.autoprefixer 的值为 Object 类型时,会与默认配置通过 Object.assign 合并。比如:

    export default {
    @@ -46,7 +46,7 @@ 

    tools
  • 类型: Object | Function
  • 默认值: undefined
  • -

    通过 tools.babel 可以修改 babel-loader 的配置项。

    +

    通过 tools.babel 可以修改 babel-loader 的配置项。

    使用场景

    请留意 tools.babel 在以下使用场景中的局限性:

      @@ -156,7 +156,7 @@

      mod
      • 类型: (options: PresetEnvOptions) => void
      -

      修改 @babel/preset-env 的配置项,传入的配置会与默认配置进行浅层合并,比如:

      +

      修改 @babel/preset-env 的配置项,传入的配置会与默认配置进行浅层合并,比如:

      export default {
         tools: {
           babel(config, { modifyPresetEnvOptions }) {
      @@ -172,7 +172,7 @@ 

      m
      • 类型: (options: PresetReactOptions) => void
      -

      修改 @babel/preset-react 的配置项,传入的配置会与默认配置进行浅层合并,比如:

      +

      修改 @babel/preset-react 的配置项,传入的配置会与默认配置进行浅层合并,比如:

      export default {
         tools: {
           babel(config, { modifyPresetReactOptions }) {
      @@ -183,11 +183,11 @@ 

      m }, };

      addIncludes

      -

      已废弃,请使用 source.include 代替,两者功能完全一致。

      +

      已废弃,请使用 source.include 代替,两者功能完全一致。

      addExcludes

      -

      已废弃,请使用 source.exclude 代替,两者功能完全一致。

      +

      已废弃,请使用 source.exclude 代替,两者功能完全一致。

      调试 Babel 配置

      -

      当你通过 tools.babel 修改 babel-loader 配置后,可以在 Builder 调试模式 下查看最终生成的配置。

      +

      当你通过 tools.babel 修改 babel-loader 配置后,可以在 Builder 调试模式 下查看最终生成的配置。

      首先通过 DEBUG=builder 参数开启调试模式:

      # 调试开发环境
       DEBUG=builder pnpm dev
      @@ -207,12 +207,12 @@ 

      什么是 BundlerChain

      Bundler chain 是 webpack chain 的子集,其中包含一部分 webpack chain API,你可以用它来同时修改 webpack 和 Rspack 的配置。

      -

      通过 bundler chain 修改的配置,在 webpack 和 Rspack 构建时均可生效。需要注意的是,bundler chain 只支持修改 webpack 和 Rspack 间无差异部分的配置。如,修改 devtool 配置项(webpack 和 Rspack 的 devtool 属性值类型相同),或添加一个Rspack 兼容的 webpack 插件。

      +

      通过 bundler chain 修改的配置,在 webpack 和 Rspack 构建时均可生效。需要注意的是,bundler chain 只支持修改 webpack 和 Rspack 间无差异部分的配置。如,修改 devtool 配置项(webpack 和 Rspack 的 devtool 属性值类型相同),或添加一个Rspack 兼容的 webpack 插件。

      tools.bundlerChain 的执行时机早于 tools.webpackChain / tools.webpack / tools.rspack,因此会被其他几个配置中的修改所覆盖。

      -

      更多信息可参考 Rsbuild#tools.bundlerChain

      +

      更多信息可参考 Rsbuild#tools.bundlerChain

      tools.cssExtract

      • 类型: Object | Function
      • @@ -232,7 +232,7 @@

        • 打包工具: 仅支持 webpack
        -

        通过 tools.cssExtract 可以更改 mini-css-extract-plugin 的配置。

        +

        通过 tools.cssExtract 可以更改 mini-css-extract-plugin 的配置。

        Object 类型

        当此值为 Object 类型时,与默认配置通过 Object.assign 合并。比如:

        export default {
        @@ -254,13 +254,13 @@ 

        Func }, }, };

        -

        更多配置细节可参考 mini-css-extract-plugin

        +

        更多配置细节可参考 mini-css-extract-plugin

        tools.cssLoader

        • 类型: Object | Function
        • 默认值: undefined
        -

        通过 tools.cssLoader 可以修改 css-loader 的配置项。默认配置如下:

        +

        通过 tools.cssLoader 可以修改 css-loader 的配置项。默认配置如下:

        {
           modules: {
             auto: true,
        @@ -275,8 +275,8 @@ 

        t // importLoaders 在编译 css 文件时为 `1`,在编译 sass/less 文件时为 `2` importLoaders: 1 || 2, }

        -
        TIP

        在使用 Rspack 作为打包工具时,仅支持在 disableCssExtract 时使用该配置。

        -

        修改 CSS Modules 相关配置,推荐使用 output.cssModules 配置项。 +

        TIP

        在使用 Rspack 作为打包工具时,仅支持在 disableCssExtract 时使用该配置。

        +

        修改 CSS Modules 相关配置,推荐使用 output.cssModules 配置项。

        Object 类型

        当此值为 Object 类型时,会与默认配置进行深层合并 (deep merge)。比如:

        @@ -305,7 +305,7 @@

        t
      • 默认值: {}

      通过 tools.devServer 可以修改开发环境服务器的配置。

      -
      TIP

      Modern.js 中并没有直接使用 webpack-dev-server@rspack/dev-server, 而是基于 webpack-dev-middleware 实现 DevServer。 +

      TIP

      Modern.js 中并没有直接使用 webpack-dev-server@rspack/dev-server, 而是基于 webpack-dev-middleware 实现 DevServer。

      选项

      after

      @@ -414,7 +414,7 @@

      devMiddlewar
      {
         writeToDisk: (file: string) => !file.includes('.hot-update.'),
       }
      -

      devMiddleware 配置项。当前配置是 webpack-dev-middleware 配置项的子集.

      +

      devMiddleware 配置项。当前配置是 webpack-dev-middleware 配置项的子集.

      headers

      • 类型: Record<string, string>
      • @@ -443,13 +443,13 @@

        history }, }, };

      -

      更多选项和详细信息可参考 connect-history-api-fallback 文档。

      +

      更多选项和详细信息可参考 connect-history-api-fallback 文档。

      hot

      • 类型: boolean
      • 默认值: true
      -

      是否开启 Hot Module Replacement 热更新能力。

      +

      是否开启 Hot Module Replacement 热更新能力。

      https

      • 类型: boolean | { key: string; cert: string }
      • @@ -546,7 +546,7 @@

        proxy }, }, };

    -

    此时,/api/users 请求将会代理到 http://localhost:3000/api/users。

    +

    此时,/api/users 请求将会代理到 http://localhost:3000/api/users。

    如果你不想传递 /api,可以通过 pathRewrite 重写请求路径:

    export default {
       tools: {
    @@ -560,7 +560,7 @@ 

    proxy }, }, };

    -

    DevServer Proxy 基于 http-proxy-middleware 实现。你可以使用 http-proxy-middleware 的所有配置项,具体可以查看文档。

    +

    DevServer Proxy 基于 http-proxy-middleware 实现。你可以使用 http-proxy-middleware 的所有配置项,具体可以查看文档。

    DevServer Proxy 完整类型定义为:

    import type { Options as HttpProxyOptions } from 'http-proxy-middleware';
     
    @@ -654,7 +654,7 @@ 

    minifyURLs: true, }, };

    -

    通过 tools.htmlPlugin 可以修改 html-webpack-plugin@rspack/plugin-html 的配置项。

    +

    通过 tools.htmlPlugin 可以修改 html-webpack-plugin@rspack/plugin-html 的配置项。

    Object 类型

    tools.htmlPlugin 的值为 Object 类型时,会与默认配置通过 Object.assign 合并。

    export default {
    @@ -711,7 +711,7 @@ 

    tools. // 默认在开发环境下启用 CSS 的 Source Map sourceMap: isDev, };

    -

    你可以通过 tools.less 修改 less-loader 的配置。

    +

    你可以通过 tools.less 修改 less-loader 的配置。

    Object 类型

    tools.less 的值为 Object 类型时,会与默认配置通过 Object.assign 进行浅层合并,值得注意的是,lessOptions 会通过 deepMerge 进行深层合并。

    export default {
    @@ -772,10 +772,10 @@ 

    t ], }, };

    -

    在生产环境构建时,Builder 会通过 css-minimizer-webpack-plugin 对 CSS 代码进行压缩优化。可以通过 tools.minifyCss 修改 css-minimizer-webpack-plugin 的配置。

    +

    在生产环境构建时,Builder 会通过 css-minimizer-webpack-plugin 对 CSS 代码进行压缩优化。可以通过 tools.minifyCss 修改 css-minimizer-webpack-plugin 的配置。

    Object 类型

    tools.minifyCss 的值为 Object 类型时,会与默认配置通过 Object.assign 合并。

    -

    例如下面修改 cssnanopreset 配置:

    +

    例如下面修改 cssnanopreset 配置:

    export default {
       tools: {
         minifyCss: {
    @@ -821,7 +821,7 @@ 

    too sourceMap: isDev, }, };

    -

    Builder 默认集成 PostCSS,你可以通过 tools.postcsspostcss-loader 进行配置。

    +

    Builder 默认集成 PostCSS,你可以通过 tools.postcsspostcss-loader 进行配置。

    Function 类型

    值为 Function 类型时,内部默认配置作为第一参数传入,可以直接修改配置对象不做返回,也可以返回一个对象作为最终结果;第二个参数为修改 postcss-loader 配置的工具函数集合。

    例如,需要在原有插件的基础上新增一个 PostCSS 插件,在 postcssOptions.plugins 数组中 push 一个新的插件即可:

    @@ -889,7 +889,7 @@

    tools.p
  • 类型: true | Object | Function | undefined
  • 默认值: false
  • -

    配置 Pug 模板引擎。

    +

    配置 Pug 模板引擎。

    Boolean 类型

    Builder 默认不启用 Pug 模板引擎,你可以将 tools.pug 设置为 true 来启用它。

    export default {
    @@ -907,7 +907,7 @@ 

    Object }, }, };

    -

    详细参数请查看 Pug API Reference

    +

    详细参数请查看 Pug API Reference

    Function 类型

    tools.pug 配置为 Function 类型时,默认配置作为第一个参数传入,可以直接修改配置对象,也可以返回一个值作为最终结果。

    export default {
    @@ -926,7 +926,7 @@ 

    tools. // 默认在开发环境下启用 CSS 的 Source Map sourceMap: isDev, };

    -

    你可以通过 tools.sass 修改 sass-loader 的配置。

    +

    你可以通过 tools.sass 修改 sass-loader 的配置。

    Object 类型

    tools.sass 的值为 Object 类型时,会与默认配置通过 Object.assign 进行浅层合并,值得注意的是,sassOptions 会通过 deepMerge 进行深层合并。

    export default {
    @@ -975,7 +975,7 @@ 

    类型: Object | Function
  • 默认值: {}
  • -

    通过 tools.styleLoader 可以设置 style-loader 的配置项。

    +

    通过 tools.styleLoader 可以设置 style-loader 的配置项。

    值得注意的是,Builder 默认不会开启 style-loader,你可以通过 output.disableCssExtract 配置项来开启它。

    Object 类型

    当此值为 Object 类型时,与默认配置通过 Object.assign 合并。比如:

    @@ -1009,7 +1009,7 @@

    pure: isProd, transpileTemplateLiterals: true, }

    -

    对应 babel-plugin-styled-components 或使用 SWC 时 @swc/plugin-styled-components 的配置。 值为 Object 类型时,利用 Object.assign 函数与默认配置合并。比如:

    +

    对应 babel-plugin-styled-components 或使用 SWC 时 @swc/plugin-styled-components 的配置。 值为 Object 类型时,利用 Object.assign 函数与默认配置合并。比如:

    export default {
       tools: {
         styledComponents: {
    @@ -1047,7 +1047,7 @@ 

    tool
    • 打包工具: 仅支持 webpack
    -

    在生产环境构建时,Builder 会通过 terser-webpack-plugin 对 JavaScript 代码进行压缩优化。可以通过 tools.terser 修改 terser-webpack-plugin 的配置。

    +

    在生产环境构建时,Builder 会通过 terser-webpack-plugin 对 JavaScript 代码进行压缩优化。可以通过 tools.terser 修改 terser-webpack-plugin 的配置。

    Object 类型

    tools.terser 的值为 Object 类型时,会与默认配置通过 Object.assign 合并。

    例如通过 exclude 排除部分文件的压缩:

    @@ -1067,7 +1067,7 @@

    Fun }, }, };

    -
    禁用代码压缩

    如果你需要禁用代码压缩,可以使用 output.disableMinimize 配置项。 +

    禁用代码压缩

    如果你需要禁用代码压缩,可以使用 output.disableMinimize 配置项。

    tools.tsLoader

      @@ -1075,8 +1075,8 @@

      to
    • 默认值: undefined
    • 打包工具: 仅支持 webpack
    -
    不再推荐使用 ts-loader

    使用 babel-loaderRspack 转译 TypeScript 代码的性能明显优于 ts-loader 且能够使用更多拓展能力。

    -

    启用 ts-loader 时将无法使用 source.transformImporttools.styledComponents 等由 Babel 和 SWC 提供支持的能力。 +

    不再推荐使用 ts-loader

    使用 babel-loaderRspack 转译 TypeScript 代码的性能明显优于 ts-loader 且能够使用更多拓展能力。

    +

    启用 ts-loader 时将无法使用 source.transformImporttools.styledComponents 等由 Babel 和 SWC 提供支持的能力。

    项目中默认不开启 ts-loader,当 tools.tsLoader 不为 undefined 则表示开启 ts-loader,同时禁用 babel-loader 对 TypeScript 的编译。

    Object 类型

    @@ -1109,9 +1109,9 @@

    Fun };

    工具函数

    addIncludes

    -

    已废弃,请使用 source.include 代替,两者功能完全一致。

    +

    已废弃,请使用 source.include 代替,两者功能完全一致。

    addExcludes

    -

    已废弃,请使用 source.exclude 代替,两者功能完全一致。

    +

    已废弃,请使用 source.exclude 代替,两者功能完全一致。

    tools.tsChecker

    • 类型: Object | Function
    • @@ -1142,7 +1142,7 @@

      t }, }, },

    -

    默认情况下,Builder 会开启 fork-ts-checker-webpack-plugin 进行类型检查。你可以通过 output.disableTsChecker 配置项来关闭类型检查。

    +

    默认情况下,Builder 会开启 fork-ts-checker-webpack-plugin 进行类型检查。你可以通过 output.disableTsChecker 配置项来关闭类型检查。

    Object 类型

    tsChecker 的值为 Object 类型时,会与默认配置进行深层合并。

    export default {
    @@ -1171,12 +1171,12 @@ 

    too
  • 默认值: undefined
  • 打包工具: 仅支持 webpack
  • -

    tools.webpack 选项用于配置原生的 webpack

    +

    tools.webpack 选项用于配置原生的 webpack

    tools.bundlerChain 同样可以修改 webpack 配置,并且功能更加强大,建议优先使用 tools.bundlerChain

    Object 类型

    -

    tools.webpack 可以配置为一个对象,这个对象将会和内置的 webpack 配置通过 webpack-merge 进行深层合并。

    +

    tools.webpack 可以配置为一个对象,这个对象将会和内置的 webpack 配置通过 webpack-merge 进行深层合并。

    比如添加 resolve.alias 配置:

    export default {
       tools: {
    @@ -1307,7 +1307,7 @@ 

    addRules
  • 类型: (rules: RuleSetRule | RuleSetRule[]) => void
  • -

    添加额外的 webpack rules

    +

    添加额外的 webpack rules

    示例:

    export default {
       tools: {
    @@ -1377,7 +1377,7 @@ 

    removePlugin<
  • 类型: (name: string) => void
  • 删除内部的 webpack 插件,参数为该插件的 constructor.name

    -

    例如,删除内部的 fork-ts-checker-webpack-plugin

    +

    例如,删除内部的 fork-ts-checker-webpack-plugin

    export default {
       tools: {
         webpack: (config, { removePlugin }) => {
    @@ -1389,7 +1389,7 @@ 

    mergeConfig
  • 类型: (...configs: WebpackConfig[]) => WebpackConfig
  • -

    用于合并多份 webpack 配置,等价于 webpack-merge

    +

    用于合并多份 webpack 配置,等价于 webpack-merge

    export default {
       tools: {
         webpack: (config, { mergeConfig }) => {
    @@ -1403,7 +1403,7 @@ 

    getCompile
    • 类型: (name: string) => string
    -

    获取 builder 内置依赖的所在路径,等价于 webpackChain#getCompiledPath

    +

    获取 builder 内置依赖的所在路径,等价于 webpackChain#getCompiledPath

    tools.webpackChain

    • 类型: Function | undefined
    • @@ -1577,7 +1577,7 @@

      CHAIN_ID.RULE RULE.STYLUS -处理 stylus 的规则(依赖 Stylus 插件) +处理 stylus 的规则(依赖 Stylus 插件RULE.SVG @@ -1846,16 +1846,16 @@

      CHAIN_ID

      使用示例

      -

      使用示例可参考:WebpackChain 使用示例

      +

      使用示例可参考:WebpackChain 使用示例

      tools.rspack

      • 类型: Object | Function | undefined
      • 默认值: undefined
      • 打包工具: 仅支持 Rspack
      -

      tools.rspack 选项用于配置原生的 Rspack

      +

      tools.rspack 选项用于配置原生的 Rspack

      Object 类型

      -

      tools.rspack 可以配置为一个对象,这个对象将会和内置的 Rspack 配置通过 webpack-merge 进行深层合并。

      +

      tools.rspack 可以配置为一个对象,这个对象将会和内置的 Rspack 配置通过 webpack-merge 进行深层合并。

      比如添加 resolve.alias 配置:

      export default {
         tools: {
      @@ -1974,7 +1974,7 @@ 

      addRules
    • 类型: (rules: RuleSetRule | RuleSetRule[]) => void
    -

    添加额外的 Rspack rules

    +

    添加额外的 Rspack rules

    示例:

    export default {
       tools: {
    @@ -2036,7 +2036,7 @@ 

    removePlugi
  • 类型: (name: string) => void
  • 删除内部的 Rspack 插件,参数为该插件的 constructor.name

    -

    例如,删除内部的 webpack-bundle-analyzer

    +

    例如,删除内部的 webpack-bundle-analyzer

    export default {
       tools: {
         rspack: (config, { removePlugin }) => {
    @@ -2048,7 +2048,7 @@ 

    mergeConfig<
    • 类型: (...configs: RspackConfig[]) => RspackConfig
    -

    用于合并多份 Rspack 配置,等价于 webpack-merge

    +

    用于合并多份 Rspack 配置,等价于 webpack-merge

    export default {
       tools: {
         rspack: (config, { mergeConfig }) => {
    diff --git a/modern-js/builder/api/index.html b/modern-js/builder/api/index.html
    index 570b4cf4ab..94640422ab 100644
    --- a/modern-js/builder/api/index.html
    +++ b/modern-js/builder/api/index.html
    @@ -1,4 +1,4 @@
    -API - Modern.js Builder
    +API - Modern.js Builder
     
    -Modern.js Builder

    API

    配置

    \ No newline at end of file +Modern.js Builder
    \ No newline at end of file diff --git a/modern-js/builder/api/plugin-core.html b/modern-js/builder/api/plugin-core.html index 18bae99dac..2301113662 100644 --- a/modern-js/builder/api/plugin-core.html +++ b/modern-js/builder/api/plugin-core.html @@ -1,4 +1,4 @@ -Plugin Core - Modern.js Builder +Plugin Core - Modern.js Builder -Modern.js Builder

    Plugin Core

    +Modern.js Builder

    Plugin Core

    本章节描述了 Builder 插件核心的类型定义和 API。

    BuilderPlugin

    插件对象的类型,插件对象包含以下属性:

    @@ -76,7 +76,7 @@

    移除插

    比如同时注册上述的 Foo 和 Bar 插件,由于 Bar 插件声明 remove 了 Foo 插件,因此 Foo 插件不会生效。

    BuilderPluginAPI

    插件 API 对象的类型。插件 API 对象上挂载了提供给插件使用的上下文数据、工具函数和注册生命周期钩子的函数。

    -

    关于生命周期钩子的完整介绍,请阅读 Plugin Hooks 章节。

    +

    关于生命周期钩子的完整介绍,请阅读 Plugin Hooks 章节。

    在使用 webpack-provider 或 rspack-provider 时,BuilderPluginAPI 的类型定义有一定不同,你可以根据插件的使用场景来引入对应的类型。

    适用于 webpack-provider 的插件

    开发适用于 webpack-provider 的插件时,请从 @modern-js/builder-webpack-provider 中引入 BuilderPluginAPI

    @@ -109,7 +109,7 @@

    同时适用于 webpack-provider 和 rspack-provider 的插件

    想要开发同时适用于 webpack-provider 和 rspack-provider 的插件时,请从 @modern-js/builder-shared 中引入 DefaultBuilderPlugin

    需要注意的是,开发 webpack 和 Rspack 同时支持的插件,意味着不能使用任何带有 webpack 或 Rspack 标识的 api,如 modifyWebpackConfigmodifyRspackConfig

    -

    可通过 modifyBundlerChain 修改同时适用于 webpack 和 Rspack 的配置。

    +

    可通过 modifyBundlerChain 修改同时适用于 webpack 和 Rspack 的配置。

    import type { BuilderPlugin } from '@modern-js/builder';
     import type { DefaultBuilderPlugin } from '@modern-js/builder-shared';
     
    @@ -124,7 +124,7 @@ 

    });

    api.context

    api.context 是一个只读对象,提供一些上下文信息。

    -

    api.context 的内容与 builder.context 完全一致,请参考 builder.context

    +

    api.context 的内容与 builder.context 完全一致,请参考 builder.context

    • Example
    diff --git a/modern-js/builder/api/plugin-hooks.html b/modern-js/builder/api/plugin-hooks.html index 078c288f69..96e74fec6b 100644 --- a/modern-js/builder/api/plugin-hooks.html +++ b/modern-js/builder/api/plugin-hooks.html @@ -1,4 +1,4 @@ -Plugin Hooks - Modern.js Builder +Plugin Hooks - Modern.js Builder -Modern.js Builder

    Plugin Hooks

    +Modern.js Builder

    Plugin Hooks

    本章节描述了 Builder 插件提供的生命周期钩子。

    概览

    通用钩子

    @@ -69,7 +69,7 @@

    mo

    modifyBundlerChain 实验性

    什么是 BundlerChain

    Bundler chain 是 webpack chain 的子集,其中包含一部分 webpack chain API,你可以用它来同时修改 webpack 和 Rspack 的配置。

    -

    通过 bundler chain 修改的配置,在 webpack 和 Rspack 构建时均可生效。需要注意的是,bundler chain 只支持修改 webpack 和 Rspack 间无差异部分的配置。如,修改 devtool 配置项(webpack 和 Rspack 的 devtool 属性值类型相同),或添加一个Rspack 兼容的 webpack 插件。

    +

    通过 bundler chain 修改的配置,在 webpack 和 Rspack 构建时均可生效。需要注意的是,bundler chain 只支持修改 webpack 和 Rspack 间无差异部分的配置。如,修改 devtool 配置项(webpack 和 Rspack 的 devtool 属性值类型相同),或添加一个Rspack 兼容的 webpack 插件。

    modifyBundlerChain 用于调用 bundler chain 来修改 webpack / Rspack 的配置。你在使用 webpack-provider 或 rspack-provider 时都可以使用该 hook。

    diff --git a/modern-js/builder/en/api/builder-instance.html b/modern-js/builder/en/api/builder-instance.html index d5e5e53303..55a2fb8b1f 100644 --- a/modern-js/builder/en/api/builder-instance.html +++ b/modern-js/builder/en/api/builder-instance.html @@ -1,4 +1,4 @@ -Builder Instance - Modern.js Builder +Builder Instance - Modern.js Builder -Modern.js Builder

    Builder Instance

    +Modern.js Builder

    Builder Instance

    This section describes all the properties and methods on the Builder instance object.

    builder.context

    builder.context is a read-only object that provides some context infos.

    @@ -330,7 +330,7 @@

    builder.inspectConfig

    Inspect the final generated builder config and bundler config.

    TIP

    The inspectConfig method does not support simultaneous use with the startDevServer / build method.

    -

    When you need to view the complete builder and bundler configurations during the build process, you can use the debug mode or obtain them through hooks such as onBeforeBuild and onBeforeCreateCompile. +

    When you need to view the complete builder and bundler configurations during the build process, you can use the debug mode or obtain them through hooks such as onBeforeBuild and onBeforeCreateCompile.

    Limitation

    -

    This configuration is used to modify the content of HTML files after Builder completes building, and does not resolve or parse new modules. It cannot be used to import uncompiled source code files. Also cannot replace configurations such as source.preEntry.

    +

    This configuration is used to modify the content of HTML files after Builder completes building, and does not resolve or parse new modules. It cannot be used to import uncompiled source code files. Also cannot replace configurations such as source.preEntry.

    For example, for the following project:

    web-app
     ├── src
    @@ -553,7 +553,7 @@ 

    htm
  • Type: string | Function
  • Default:
  • -

    Define the path to the HTML template, corresponding to the template config of html-webpack-plugin.

    +

    Define the path to the HTML template, corresponding to the template config of html-webpack-plugin.

    Example

    Replace the default template with a custom HTML template file, you can add the following config:

    export default {
    @@ -561,7 +561,7 @@ 

    Example template: './static/index.html', }, };

    -

    For detailed usage, please refer to Rsbuild - html.template.

    +

    For detailed usage, please refer to Rsbuild - html.template.

    html.templateByEntries

    • Type: Object
    • @@ -601,7 +601,7 @@

      options: object; }; };

    -

    Define the parameters in the HTML template, corresponding to the templateParameters config of html-webpack-plugin. You can use the config as an object or a function.

    +

    Define the parameters in the HTML template, corresponding to the templateParameters config of html-webpack-plugin. You can use the config as an object or a function.

    If it is an object, it will be merged with the default parameters. For example:

    export default {
       html: {
    @@ -629,7 +629,7 @@ 

    }, }, };

    -

    For detailed usage, please refer to Rsbuild - html.templateParameters.

    +

    For detailed usage, please refer to Rsbuild - html.templateParameters.

    html.templateParametersByEntries

    • Type: Object
    • @@ -664,7 +664,7 @@

      html.t title: 'example', }, };

    -

    For detailed usage, please refer to Rsbuild - html.title.

    +

    For detailed usage, please refer to Rsbuild - html.title.

    html.titleByEntries

    -

    Specifies the range of target browsers that the project is compatible with. This value will be used by @babel/preset-env and autoprefixer to identify the JavaScript syntax that need to be transformed and the CSS browser prefixes that need to be added.

    +

    Specifies the range of target browsers that the project is compatible with. This value will be used by @babel/preset-env and autoprefixer to identify the JavaScript syntax that need to be transformed and the CSS browser prefixes that need to be added.

    Priority

    The overrideBrowserslist config will override the .browserslistrc config file in the project and the browserslist field in package.json.

    In most cases, it is recommended to use the .browserslistrc file rather than the overrideBrowserslist config. Because the .browserslistrc file is the official config file, it is more general and can be recognized by other libraries in the community.

    @@ -1192,7 +1192,7 @@

    Example ], }, };

    -

    Check out the browserslist documentation to learn more about browserslist.

    +

    Check out the browserslist documentation to learn more about browserslist.

    Set according to Targets

    When you build multiple targets at the same time, you can set different browser ranges for different targets. At this point, you need to set overrideBrowserslist to an object whose key is the corresponding build target.

    For example to set different ranges for web and node:

    @@ -1225,7 +1225,7 @@

    usageEquivalent to useBuiltIns: 'usage' configuration in @babel/preset-env.

    ua

    The Polyfill code is dynamically delivered according to the currently requested UA information.

    -

    The dynamic delivery feature needs to be used with the upper-level framework. For more details, please refer to Modern.js - Polyfill At Runtime.

    +

    The dynamic delivery feature needs to be used with the upper-level framework. For more details, please refer to Modern.js - Polyfill At Runtime.

    off

    Polyfill is not injected. When using this option, you need to ensure code compatibility yourself.

    output.svgDefaultExport

    diff --git a/modern-js/builder/en/api/config-performance.html b/modern-js/builder/en/api/config-performance.html index e1c5d6c60a..2741d7010a 100644 --- a/modern-js/builder/en/api/config-performance.html +++ b/modern-js/builder/en/api/config-performance.html @@ -1,4 +1,4 @@ -Performance Config - Modern.js Builder +Performance Config - Modern.js Builder -Modern.js Builder

    Performance Config

    +Modern.js Builder

    Performance Config

    This section describes some performance related configurations in Modern.js Builder.

    performance.buildCache

      @@ -74,7 +74,7 @@

    • Type: Object | undefined
    -

    Used to enable the webpack-bundle-analyzer plugin to analyze the size of the output.

    +

    Used to enable the webpack-bundle-analyzer plugin to analyze the size of the output.

    By default, Builder does not enable webpack-bundle-analyzer. When this feature is enabled, the default configuration is as follows:

    const defaultConfig = {
       analyzerMode: 'static',
    @@ -306,9 +306,9 @@ 

    Default: undefined

    -

    Specifies that the user agent should preemptively perform DNS resolution for the target resource's origin, refer to dns-prefetch.

    +

    Specifies that the user agent should preemptively perform DNS resolution for the target resource's origin, refer to dns-prefetch.

    After this property is set, the domain name can be resolved before the resource is requested, reducing request latency and improving loading performance.

    -

    See Using dns-prefetch for more details.

    +

    See Using dns-prefetch for more details.

    Example

    export default {
       performance: {
    @@ -326,7 +326,7 @@ 

  • Default: undefined
  • -

    Specifies that the user agent should preemptively connect to the target resource's origin, refer to preconnect.

    +

    Specifies that the user agent should preemptively connect to the target resource's origin, refer to preconnect.

    Configuring this property will establish a connection with the server. If the site is HTTPS, this process includes DNS resolution, TCP connection establishment, and TLS handshake. Combining Preconnect and DnsPrefetch can further reduce the delay of cross-domain requests.

    Example

    export default {
    @@ -350,7 +350,7 @@ 

  • Default: undefined
  • -

    Specifies that the user agent should preemptively fetch and cache the target resource as it is likely to be required for a followup navigation. Refer to prefetch.

    +

    Specifies that the user agent should preemptively fetch and cache the target resource as it is likely to be required for a followup navigation. Refer to prefetch.

    Boolean Type

    When setting performance.prefetch to true, resources will be prefetched according to the following configuration:

    {
    @@ -393,7 +393,7 @@ 

  • Default: undefined
  • -

    Specifies that the user agent must preemptively fetch and cache the target resource for current navigation according to the potential destination given by the as attribute (and the priority associated with the corresponding destination). Refer to preload.

    +

    Specifies that the user agent must preemptively fetch and cache the target resource for current navigation according to the potential destination given by the as attribute (and the priority associated with the corresponding destination). Refer to preload.

    Boolean Type

    When setting performance.preload to true, resources will be preloaded according to the following configuration:

    {
    @@ -445,7 +445,7 @@ 

    Type: boolean
  • Default: false
  • -

    Whether capture timing information for each module, same as the profile config of webpack / Rspack.

    +

    Whether capture timing information for each module, same as the profile config of webpack / Rspack.

    Example

    export default {
       performance: {
    @@ -480,7 +480,7 @@ 

    Type: boolean
  • Default: false
  • -

    Whether to remove the locales of moment.js.

    +

    Whether to remove the locales of moment.js.

    moment.js contains a lot of locales by default, which will increase the bundle size.

    When moment.js is used in the project, it is recommended to enable this option to automatically exclude all locales:

    export default {
    @@ -499,8 +499,8 @@ 

    Default: true
  • Bundler: only support webpack
  • -

    Specifies whether to modularize the import of lodash and remove unused lodash modules to reduce the code size of lodash.

    -

    This optimization is implemented using babel-plugin-lodash and swc-plugin-lodash under the hood.

    +

    Specifies whether to modularize the import of lodash and remove unused lodash modules to reduce the code size of lodash.

    +

    This optimization is implemented using babel-plugin-lodash and swc-plugin-lodash under the hood.

    Example

    This option is enabled by default, and Builder will automatically redirects the code references of lodash to sub-paths.

    For example:

    diff --git a/modern-js/builder/en/api/config-security.html b/modern-js/builder/en/api/config-security.html index cb190fc6b5..a93f802d03 100644 --- a/modern-js/builder/en/api/config-security.html +++ b/modern-js/builder/en/api/config-security.html @@ -1,4 +1,4 @@ -Security Config - Modern.js Builder +Security Config - Modern.js Builder -Modern.js Builder

    Security Config

    +Modern.js Builder

    Security Config

    This section describes some security related configurations in Modern.js Builder.

    security.sri

      @@ -26,11 +26,11 @@

      secu
    • Bundler: only support webpack

    Adding an integrity attribute (integrity) to sub-resources introduced by HTML allows the browser to verify the integrity of the introduced resource, thus preventing tampering with the downloaded resource.

    -

    Enabling this option will set the webpack output.crossOriginLoading configuration option to anonymous.

    +

    Enabling this option will set the webpack output.crossOriginLoading configuration option to anonymous.

    Introduce SRI

    Subresource Integrity (SRI) is a security feature that enables browsers to verify that resources they fetch (for example, from a CDN) are delivered without unexpected manipulation. It works by allowing you to provide a cryptographic hash that a fetched resource must match.

    For script tags, the result is to refuse to execute the code; for CSS links, the result is not to load the styles.

    -

    For more on subresource integrity, see Subresource Integrity - MDN.

    +

    For more on subresource integrity, see Subresource Integrity - MDN.

    Example

    By default, SRI is not turned on, and when it is, its default configuration is as follows:

    {
    @@ -102,7 +102,7 @@ 

    checkSy
  • Type: string[]
  • Default: The browserslist configuration of the current project
  • -

    targets is the target browser range of the project. Its value is a standard browserslist array. If you are not familiar with the usage of browserslist, please refer to "Browserslist".

    +

    targets is the target browser range of the project. Its value is a standard browserslist array. If you are not familiar with the usage of browserslist, please refer to "Browserslist".

    Builder will read the value of targets and automatically deduce the minimum ECMAScript syntax version that can be used in the build artifacts, such as ES5 or ES6.

    source.include

    const defaultInclude = [
    @@ -177,7 +177,7 @@ 

    so ];

    The source.include is used to specify additional JavaScript files that need to be compiled.

    To avoid redundant compilation, by default, Rsbuild only compiles JavaScript files in the current directory and TypeScript and JSX files in all directories. It does not compile JavaScript files under node_modules.

    -

    Through the source.include config, you can specify directories or modules that need to be compiled by Rsbuild. The usage of source.include is consistent with Rule.include in Rspack, which supports passing in strings or regular expressions to match the module path.

    +

    Through the source.include config, you can specify directories or modules that need to be compiled by Rsbuild. The usage of source.include is consistent with Rule.include in Rspack, which supports passing in strings or regular expressions to match the module path.

    For example:

    import path from 'path';
     
    @@ -245,11 +245,11 @@ 

    }, }, };

    -

    Setting sourceType to unambiguous may have some other effects, please refer to Babel official documentation.

    +

    Setting sourceType to unambiguous may have some other effects, please refer to Babel official documentation.

    If you match a module that is symlinked to the current project, then you need to match the real path of the module, not the symlinked path.

    For example, if you symlink the packages/foo path in Monorepo to the node_modules/foo path of the current project, you need to match the packages/foo path, not the node_modules/foo path.

    -

    This behavior can be controlled via webpack's resolve.symlinks config.

    +

    This behavior can be controlled via webpack's resolve.symlinks config.

    Precautions

    Note that source.include should not be used to compile the entire node_modules directory. For example, the following usage is wrong:

    export default {
    @@ -263,7 +263,7 @@ 

    so
  • Type: Array<string | RegExp>
  • Default: []
  • -

    Specifies JavaScript/TypeScript files that do not need to be compiled. The usage is consistent with Rule.exclude in webpack, which supports passing in strings or regular expressions to match the module path.

    +

    Specifies JavaScript/TypeScript files that do not need to be compiled. The usage is consistent with Rule.exclude in webpack, which supports passing in strings or regular expressions to match the module path.

    For example:

    import path from 'path';
     
    @@ -285,8 +285,8 @@ 

    sou
  • If the value is an object all keys are defined the same way.
  • If you prefix typeof to the key, it's only defined for typeof calls.
  • -

    For more information please visit webpack - DefinePlugin.

    -
    TIP

    When using Rspack as the bundler, the supported types can be found in Rspack.builtins.define. +

    For more information please visit webpack - DefinePlugin.

    +
    TIP

    When using Rspack as the bundler, the supported types can be found in Rspack.builtins.define.

    Example

    export default {
    @@ -420,8 +420,8 @@ 

    Functi }, };

    source.transformImport

    -

    Used to import the code and style of the component library on demand, which is equivalent to babel-plugin-import.

    -

    The difference between it and babel-plugin-import is that source.transformImport is not coupled with Babel. Builder will automatically identify whether the currently used tools is Babel, SWC or Rspack, and apply the corresponding on-demand import configuration.

    +

    Used to import the code and style of the component library on demand, which is equivalent to babel-plugin-import.

    +

    The difference between it and babel-plugin-import is that source.transformImport is not coupled with Babel. Builder will automatically identify whether the currently used tools is Babel, SWC or Rspack, and apply the corresponding on-demand import configuration.

    • Type:
    @@ -440,13 +440,13 @@

  • Default:
  • -

    When the Ant Design component library <= 4.x version is installed in the project, Builder will automatically add the following default configurations:

    +

    When the Ant Design component library <= 4.x version is installed in the project, Builder will automatically add the following default configurations:

    const defaultAntdConfig = {
       libraryName: 'antd',
       libraryDirectory: isServer ? 'lib' : 'es',
       style: true,
     };
    -

    When the Arco Design component library is installed in the project, Builder will automatically add the following default configurations:

    +

    When the Arco Design component library is installed in the project, Builder will automatically add the following default configurations:

    const defaultArcoConfig = [
       {
         libraryName: '@arco-design/web-react',
    @@ -564,7 +564,7 @@ 

    customName

    Customize the imported path after conversion. The input is the imported member. For example, configure it as (member) => `my-lib/${member}` , which will convert import { foo } from 'bar' to import foo from 'my-lib/foo'.

    -

    When using Rspack to build, function configurations cannot be used, but you can use handlebars template strings. For the above function configuration, you can use the following template instead of my-lib/{{ member }}, or use some built-in helper methods, such as my-lib/{{ kebabCase member }} to convert it to kebab-case format. In addition to kebabCase, there are also camelCase, snakeCase, upperCase, and lowerCase that can be used.

    +

    When using Rspack to build, function configurations cannot be used, but you can use handlebars template strings. For the above function configuration, you can use the following template instead of my-lib/{{ member }}, or use some built-in helper methods, such as my-lib/{{ kebabCase member }} to convert it to kebab-case format. In addition to kebabCase, there are also camelCase, snakeCase, upperCase, and lowerCase that can be used.

    customStyleName

    • Type: ((member: string) => string | undefined) | string
    • @@ -577,7 +577,7 @@

      customStyl

    Customize the imported style path after conversion. The input is the imported member. For example, configure it as (member) => `my-lib/${member}` , which will convert import { foo } from 'bar' to import foo from 'my-lib/foo'.

    -

    When using Rspack to build, function configurations cannot be used, but you can use handlebars template strings. For the above function configuration, you can use the following template instead of my-lib/{{ member }}, or use some built-in helper methods, such as my-lib/{{ kebabCase member }} to convert it to kebab-case format. In addition to kebabCase, there are also camelCase, snakeCase, upperCase, and lowerCase that can be used.

    +

    When using Rspack to build, function configurations cannot be used, but you can use handlebars template strings. For the above function configuration, you can use the following template instead of my-lib/{{ member }}, or use some built-in helper methods, such as my-lib/{{ kebabCase member }} to convert it to kebab-case format. In addition to kebabCase, there are also camelCase, snakeCase, upperCase, and lowerCase that can be used.

    source.preEntry

    • Type: string | string[]
    • @@ -613,7 +613,7 @@

      Type: string | Record<BuilderTarget, string>
    • Default: undefined
    -

    Add a prefix to resolve.extensions.

    +

    Add a prefix to resolve.extensions.

    If multiple files share the same name but have different extensions, Builder will resolve the one with the extension listed first in the array and skip the rest.

    Example

    export default {
    @@ -652,7 +652,7 @@ 

  • Default: undefined
  • -

    This config will determine which field of package.json you use to import the npm module. Same as the resolve.mainFields config of webpack.

    +

    This config will determine which field of package.json you use to import the npm module. Same as the resolve.mainFields config of webpack.

    Example

    export default {
       source: {
    diff --git a/modern-js/builder/en/api/config-tools.html b/modern-js/builder/en/api/config-tools.html
    index 32d866a593..761cf3b57c 100644
    --- a/modern-js/builder/en/api/config-tools.html
    +++ b/modern-js/builder/en/api/config-tools.html
    @@ -1,4 +1,4 @@
    -Tools Config - Modern.js Builder
    +Tools Config - Modern.js Builder
     
    -Modern.js Builder

    Tools Config

    +Modern.js Builder

    Tools Config

    This section describes some low-level tools configurations in Modern.js Builder.

    tools.autoprefixer

      @@ -21,7 +21,7 @@

      // and the `output.overrideBrowserslist` (higher priority) config overrideBrowserslist: browserslist, }

    -

    You can modify the config of autoprefixer by tools.autoprefixer.

    +

    You can modify the config of autoprefixer by tools.autoprefixer.

    Object Type

    When tools.autoprefixer is configured as Object type, it is merged with the default config through Object.assign. For example:

    export default {
    @@ -46,7 +46,7 @@ 

    tools
  • Type: Object | Function
  • Default: undefined
  • -

    With tools.babel you can modify the options of babel-loader.

    +

    With tools.babel you can modify the options of babel-loader.

    Usage Scenarios

    Please note the limitations of tools.babel in the following usage scenarios:

      @@ -157,7 +157,7 @@

      mod
      • Type: (options: PresetEnvOptions) => void
      -

      Modify the configuration of @babel/preset-env, the configuration you pass in will be shallowly merged with default config. For example:

      +

      Modify the configuration of @babel/preset-env, the configuration you pass in will be shallowly merged with default config. For example:

      export default {
         tools: {
           babel(config, { modifyPresetEnvOptions }) {
      @@ -173,7 +173,7 @@ 

      m
      • Type: (options: PresetReactOptions) => void
      -

      Modify the configuration of @babel/preset-react, the configuration you pass in will be shallowly merged with default config. For example:

      +

      Modify the configuration of @babel/preset-react, the configuration you pass in will be shallowly merged with default config. For example:

      export default {
         tools: {
           babel(config, { modifyPresetReactOptions }) {
      @@ -184,11 +184,11 @@ 

      m }, };

      addIncludes

      -

      Deprecated, please use source.include instead, both have the same functionality.

      +

      Deprecated, please use source.include instead, both have the same functionality.

      addExcludes

      -

      Deprecated, please use source.exclude instead, both have the same functionality.

      +

      Deprecated, please use source.exclude instead, both have the same functionality.

      Debugging Babel Configuration

      -

      After modifying the babel-loader configuration through tools.babel, you can view the final generated configuration in Builder debug mode.

      +

      After modifying the babel-loader configuration through tools.babel, you can view the final generated configuration in Builder debug mode.

      First, enable debug mode by using the DEBUG=builder parameter:

      # Debug development mode
       DEBUG=builder pnpm dev
      @@ -204,12 +204,12 @@ 

      You can modify the webpack and Rspack configuration by configuring tools.bundlerChain which is type of Function. The function receives two parameters, the first is the original bundler chain object, and the second is an object containing some utils.

      What is BundlerChain

      Bundler chain is a subset of webpack chain, which contains part of the webpack chain API that you can use to modify both webpack and Rspack configuration.

      -

      Configurations modified via bundler chain will work on both webpack and Rspack builds. Note that the bundler chain only supports modifying the configuration of the non-differentiated parts of webpack and Rspack. For example, modifying the devtool configuration option (webpack and Rspack have the same devtool property value type), or adding an Rspack-compatible webpack plugin.

      +

      Configurations modified via bundler chain will work on both webpack and Rspack builds. Note that the bundler chain only supports modifying the configuration of the non-differentiated parts of webpack and Rspack. For example, modifying the devtool configuration option (webpack and Rspack have the same devtool property value type), or adding an Rspack-compatible webpack plugin.

      tools.bundlerChain is executed earlier than tools.webpackChain / tools.webpack / tools.rspack and thus will be overridden by changes in others.

      -

      For more information, please refer to Rsbuild#tools.bundlerChain

      +

      For more information, please refer to Rsbuild#tools.bundlerChain

      tools.cssExtract

      • Type: Object | Function
      • @@ -230,7 +230,7 @@

        • Bundler: only support webpack
        -

        The config of mini-css-extract-plugin can be modified through tools.cssExtract.

        +

        The config of mini-css-extract-plugin can be modified through tools.cssExtract.

        Object Type

        When this value is an Object, it is merged with the default config via Object.assign. For example:

        export default {
        @@ -252,13 +252,13 @@ 

        Functi }, }, };

        -

        For more config details, please refer to mini-css-extract-plugin.

        +

        For more config details, please refer to mini-css-extract-plugin.

        tools.cssLoader

        • Type: Object | Function
        • Default: undefined
        -

        The config of css-loader can be modified through tools.cssLoader. The default config is as follows:

        +

        The config of css-loader can be modified through tools.cssLoader. The default config is as follows:

        {
           modules: {
             auto: true,
        @@ -273,8 +273,8 @@ 

        t // importLoaders is `1` when compiling css files, and is `2` when compiling sass/less files importLoaders: 1 || 2, }

        -
        TIP

        When using Rspack as the bundler, this configuration is only supported when set disableCssExtract is true.

        -

        To modify CSS Modules configuration, it is recommended to use the output.cssModules configuration. +

        TIP

        When using Rspack as the bundler, this configuration is only supported when set disableCssExtract is true.

        +

        To modify CSS Modules configuration, it is recommended to use the output.cssModules configuration.

        Object Type

        When this value is an Object, it is merged with the default config via deep merge. For example:

        @@ -303,7 +303,7 @@

        t
      • Default: {}

      The config of DevServer can be modified through tools.devServer.

      -
      TIP

      Modern.js does not directly use webpack-dev-server or @rspack/dev-server, but implement DevServer based on webpack-dev-middleware. +

      TIP

      Modern.js does not directly use webpack-dev-server or @rspack/dev-server, but implement DevServer based on webpack-dev-middleware.

      Options

      after

      @@ -412,7 +412,7 @@

      devMiddlewar
      {
         writeToDisk: (file: string) => !file.includes('.hot-update.'),
       }
      -

      The config of devMiddleware. Current options is the subset of webpack-dev-middleware.

      +

      The config of devMiddleware. Current options is the subset of webpack-dev-middleware.

      headers

      • Type: Record<string, string>
      • @@ -441,13 +441,13 @@

        history }, }, };

      -

      For more options and information, see the connect-history-api-fallback documentation.

      +

      For more options and information, see the connect-history-api-fallback documentation.

      hot

      • Type: boolean
      • Default: true
      -

      Enable Hot Module Replacement feature.

      +

      Enable Hot Module Replacement feature.

      https

      • Type: boolean | { key: string; cert: string }
      • @@ -544,7 +544,7 @@

        proxy }, }, };

      -

      A request to /api/users will now proxy the request to http://localhost:3000/api/users.

      +

      A request to /api/users will now proxy the request to http://localhost:3000/api/users.

      If you don't want /api to be passed along, we need to rewrite the path:

      export default {
         tools: {
      @@ -558,7 +558,7 @@ 

      proxy }, }, };

      -

      The DevServer Proxy makes use of the http-proxy-middleware package. Check out its documentation for more advanced usages.

      +

      The DevServer Proxy makes use of the http-proxy-middleware package. Check out its documentation for more advanced usages.

      The full type definition of DevServer Proxy is:

      import type { Options as HttpProxyOptions } from 'http-proxy-middleware';
       
      @@ -652,7 +652,7 @@ 

      minifyURLs: true, }, };

      -

      The configs of html-webpack-plugin or @rspack/plugin-html can be modified through tools.htmlPlugin.

      +

      The configs of html-webpack-plugin or @rspack/plugin-html can be modified through tools.htmlPlugin.

      Object Type

      When tools.htmlPlugin is Object type, the value will be merged with the default config via Object.assign.

      export default {
      @@ -710,7 +710,7 @@ 

      tools. // CSS Source Map enabled by default in development environment sourceMap: isDev, };

      -

      You can modify the config of less-loader via tools.less.

      +

      You can modify the config of less-loader via tools.less.

      Object Type

      When tools.less is configured as Object type, it is merged with the default config through Object.assign in a shallow way. It should be noted that lessOptions is merged through deepMerge in a deep way. For example:

      export default {
      @@ -771,10 +771,10 @@ 

      t ], }, };

      -

      When building for production, Builder will minimize the CSS code through css-minimizer-webpack-plugin. The config of css-minimizer-webpack-plugin can be modified via tools.minifyCss.

      +

      When building for production, Builder will minimize the CSS code through css-minimizer-webpack-plugin. The config of css-minimizer-webpack-plugin can be modified via tools.minifyCss.

      Object Type

      When tools.minifyCss is Object type, it will be merged with the default config via Object.assign.

      -

      For example, modify the preset config of cssnano:

      +

      For example, modify the preset config of cssnano:

      export default {
         tools: {
           minifyCss: {
      @@ -820,7 +820,7 @@ 

      too sourceMap: isDev, }, };

      -

      Builder integrates PostCSS by default, you can configure postcss-loader through tools.postcss.

      +

      Builder integrates PostCSS by default, you can configure postcss-loader through tools.postcss.

      Function Type

      When the value is a Function, the internal default config is passed as the first parameter, and the config object can be modified directly without returning, or an object can be returned as the final result; the second parameter is a set of tool functions for modifying the postcss-loader config.

      For example, you need to add a PostCSS plugin on the basis of the original plugin, and push a new plugin to the postcssOptions.plugins array:

      @@ -888,7 +888,7 @@

      tools.p
    • Type: true | Object | Function | undefined
    • Default: false
    -

    Configure the Pug template engine.

    +

    Configure the Pug template engine.

    Boolean Type

    Pug template engine is not enabled by default, you can enable it by setting tools.pug to true.

    export default {
    @@ -906,7 +906,7 @@ 

    Object T }, }, };

    -

    For detailed options, please refer to Pug API Reference.

    +

    For detailed options, please refer to Pug API Reference.

    Function Type

    When tools.pug is Function type, the default configuration is passed in as the first parameter, the configuration object can be modified directly, or a value can be returned as the final result.

    export default {
    @@ -925,7 +925,7 @@ 

    tools. // CSS Source Map enabled by default in development environment sourceMap: isDev, };

    -

    You can modify the config of sass-loader via tools.sass.

    +

    You can modify the config of sass-loader via tools.sass.

    Object Type

    When tools.sass is Object type, it is merged with the default config through Object.assign. It should be noted that sassOptions is merged through deepMerge in a deep way.

    For example:

    @@ -975,7 +975,7 @@

    Type: Object | Function
  • Default: {}
  • -

    The config of style-loader can be set through tools.styleLoader.

    +

    The config of style-loader can be set through tools.styleLoader.

    It is worth noting that Builder does not enable style-loader by default. You can use output.disableCssExtract config to enable it.

    Object Type

    When this value is an Object, it is merged with the default config via Object.assign. For example:

    @@ -1011,7 +1011,7 @@

    pure: isProd, transpileTemplateLiterals: true, }

    -

    tools.styledComponents config is corresponding to babel-plugin-styled-components, or @swc/plugin-styled-components when using SWC plugin.

    +

    tools.styledComponents config is corresponding to babel-plugin-styled-components, or @swc/plugin-styled-components when using SWC plugin.

    When the value is an Object, use the Object.assign function to merge with the default config. For example:

    export default {
       tools: {
    @@ -1049,7 +1049,7 @@ 

    tool
    • Bundler: only support webpack
    -

    When building for production, Builder will minimize the JavaScript code through terser-webpack-plugin. The config of terser-webpack-plugin can be modified via tools.terser.

    +

    When building for production, Builder will minimize the JavaScript code through terser-webpack-plugin. The config of terser-webpack-plugin can be modified via tools.terser.

    Object Type

    When tools.terser is Object type, it will be merged with the default config via Object.assign.

    For example, to exclude some files from minification:

    @@ -1069,7 +1069,7 @@

    Funct }, }, };

    -
    Disable code minification

    If you need to disable code minification, you can use the output.disableMinimize configuration. +

    Disable code minification

    If you need to disable code minification, you can use the output.disableMinimize configuration.

    tools.tsLoader

      @@ -1077,8 +1077,8 @@

      to
    • Default: undefined
    • Bundler: only support webpack
    -
    Alternatives for ts-loader

    Using babel-loader or Rspack instead of ts-loader can significantly improve compilation speed and provide better extendability.

    -

    ts-loader cannot be used with certain features such as source.transformImport and tools.styledComponents provided by Babel & SWC. +

    Alternatives for ts-loader

    Using babel-loader or Rspack instead of ts-loader can significantly improve compilation speed and provide better extendability.

    +

    ts-loader cannot be used with certain features such as source.transformImport and tools.styledComponents provided by Babel & SWC.

    ts-loader is not enabled by default in the project. When tools.tsLoader is not undefined, builder will use ts-loader instead of babel-loader to compile TypeScript code.

    Object Type

    @@ -1111,9 +1111,9 @@

    Funct };

    Util Functions

    addIncludes

    -

    Deprecated, please use source.include instead, both have the same functionality.

    +

    Deprecated, please use source.include instead, both have the same functionality.

    addExcludes

    -

    Deprecated, please use source.exclude instead, both have the same functionality.

    +

    Deprecated, please use source.exclude instead, both have the same functionality.

    tools.tsChecker

    • Type: Object | Function
    • @@ -1144,7 +1144,7 @@

      t }, }, },

    -

    By default, the fork-ts-checker-webpack-plugin is enabled for type checking. You can use output.disableTsChecker config to disable it.

    +

    By default, the fork-ts-checker-webpack-plugin is enabled for type checking. You can use output.disableTsChecker config to disable it.

    Object Type

    When the value of tsChecker is of type Object, it will be deeply merged with the default configuration.

    export default {
    @@ -1173,12 +1173,12 @@ 

    too
  • Default: undefined
  • Bundler: only support webpack
  • -

    tools.webpack is used to configure webpack.

    +

    tools.webpack is used to configure webpack.

    tools.bundlerChain is also used to modify the webpack configuration, and the function is more powerful. It is recommended to use tools.bundlerChain first.

    Object Type

    -

    tools.webpack can be configured as an object to be deep merged with the built-in webpack configuration through webpack-merge.

    +

    tools.webpack can be configured as an object to be deep merged with the built-in webpack configuration through webpack-merge.

    For example, add resolve.alias configuration:

    export default {
       tools: {
    @@ -1309,7 +1309,7 @@ 

    addRules
  • Type: (rules: RuleSetRule | RuleSetRule[]) => void
  • -

    Add additional webpack rules.

    +

    Add additional webpack rules.

    For example:

    export default {
       tools: {
    @@ -1379,7 +1379,7 @@ 

    removePlugin<
  • Type: (name: string) => void
  • Remove the internal webpack plugin, the parameter is the constructor.name of the plugin.

    -

    For example, remove the internal fork-ts-checker-webpack-plugin:

    +

    For example, remove the internal fork-ts-checker-webpack-plugin:

    export default {
       tools: {
         webpack: (config, { removePlugin }) => {
    @@ -1391,7 +1391,7 @@ 

    mergeConfig
  • Type: (...configs: WebpackConfig[]) => WebpackConfig
  • -

    Used to merge multiple webpack configs, same as webpack-merge.

    +

    Used to merge multiple webpack configs, same as webpack-merge.

    export default {
       tools: {
         webpack: (config, { mergeConfig }) => {
    @@ -1405,7 +1405,7 @@ 

    getCompile
    • Type: (name: string) => string
    -

    Get the path to the builder built-in dependencies, same as webpackChain#getCompiledPath.

    +

    Get the path to the builder built-in dependencies, same as webpackChain#getCompiledPath.

    tools.webpackChain

    • Type: Function | undefined
    • @@ -1571,7 +1571,7 @@

      CHAIN_ID.RULE RULE.STYLUS -Rule for stylus(requires Stylus plugin) +Rule for stylus(requires Stylus plugin) RULE.SVG @@ -1840,16 +1840,16 @@

      CHAIN_ID

      Examples

      -

      For usage examples, please refer to: WebpackChain usage examples.

      +

      For usage examples, please refer to: WebpackChain usage examples.

      tools.rspack

      • Type: Object | Function | undefined
      • Default: undefined
      • Bundler: only support Rspack
      -

      tools.rspack is used to configure Rspack.

      +

      tools.rspack is used to configure Rspack.

      Object Type

      -

      tools.rspack can be configured as an object to be deep merged with the built-in Rspack configuration through webpack-merge.

      +

      tools.rspack can be configured as an object to be deep merged with the built-in Rspack configuration through webpack-merge.

      For example, add resolve.alias configuration:

      export default {
         tools: {
      @@ -1968,7 +1968,7 @@ 

      addRules
    • Type: (rules: RuleSetRule | RuleSetRule[]) => void
    -

    Add additional Rspack rules.

    +

    Add additional Rspack rules.

    For example:

    export default {
       tools: {
    @@ -2030,7 +2030,7 @@ 

    removePlugi
  • Type: (name: string) => void
  • Remove the internal Rspack plugin, the parameter is the constructor.name of the plugin.

    -

    For example, remove the internal webpack-bundle-analyzer:

    +

    For example, remove the internal webpack-bundle-analyzer:

    export default {
       tools: {
         rspack: (config, { removePlugin }) => {
    @@ -2042,7 +2042,7 @@ 

    mergeConfig<
    • Type: (...configs: RspackConfig[]) => RspackConfig
    -

    Used to merge multiple Rspack configs, same as webpack-merge.

    +

    Used to merge multiple Rspack configs, same as webpack-merge.

    export default {
       tools: {
         rspack: (config, { mergeConfig }) => {
    diff --git a/modern-js/builder/en/api/index.html b/modern-js/builder/en/api/index.html
    index 0f0d659dc4..123a83e27a 100644
    --- a/modern-js/builder/en/api/index.html
    +++ b/modern-js/builder/en/api/index.html
    @@ -1,4 +1,4 @@
    -API - Modern.js Builder
    +API - Modern.js Builder
     
    -Modern.js Builder

    API

    Config

    \ No newline at end of file +Modern.js Builder
    \ No newline at end of file diff --git a/modern-js/builder/en/api/plugin-core.html b/modern-js/builder/en/api/plugin-core.html index b2f061eed2..1c598cb7ab 100644 --- a/modern-js/builder/en/api/plugin-core.html +++ b/modern-js/builder/en/api/plugin-core.html @@ -1,4 +1,4 @@ -Plugin Core - Modern.js Builder +Plugin Core - Modern.js Builder -Modern.js Builder

    Plugin Core

    +Modern.js Builder

    Plugin Core

    This section describes the core plugin types and APIs.

    BuilderPlugin

    The type of the plugin object. The plugin object contains the following properties:

    @@ -77,7 +77,7 @@

    Remov

    For example, if you register both the Foo and Bar plugins mentioned above, the Foo plugin will not take effect because the Bar plugin declares the removal of the Foo plugin.

    BuilderPluginAPI

    The type of plugin API. The plugin API provides the context info, utility functions and lifecycle hooks.

    -

    For a complete introduction to lifecycle hooks, please read the Plugin Hooks chapter.

    +

    For a complete introduction to lifecycle hooks, please read the Plugin Hooks chapter.

    When using webpack-provider or rspack-provider, the type definition of BuilderPluginAPI is somewhat different, and you can introduce the corresponding type according to the usage scenario of the plugin.

    Plugin for webpack-provider

    When developing plugins for webpack-provider, please import BuilderPluginAPI from @modern-js/builder-webpack-provider.

    @@ -110,7 +110,7 @@

    Plugins for both webpack-provider and rspack-provider

    When developing plugins for both webpack-provider and rspack-provider, please import DefaultBuilderPlugin from @modern-js/builder-shared.

    Note that developing plugins that can support both webpack and Rspack at the same time means that you cannot use any APIs with webpack / Rspack identifiers, such as modifyWebpackConfig or modifyRspackConfig.

    -

    You can use modifyBundlerChain to modify the configuration that applies to both webpack and Rspack.

    +

    You can use modifyBundlerChain to modify the configuration that applies to both webpack and Rspack.

    import type { BuilderPlugin } from '@modern-js/builder';
     import type { DefaultBuilderPlugin } from '@modern-js/builder-shared';
     
    @@ -125,7 +125,7 @@ 

    });

    api.context

    api.context is a read-only object that provides some context information.

    -

    The content of api.context is exactly the same as builder.context, please refer to builder.context.

    +

    The content of api.context is exactly the same as builder.context, please refer to builder.context.

    • Example
    diff --git a/modern-js/builder/en/api/plugin-hooks.html b/modern-js/builder/en/api/plugin-hooks.html index 88f9b3a4dd..6e0a715782 100644 --- a/modern-js/builder/en/api/plugin-hooks.html +++ b/modern-js/builder/en/api/plugin-hooks.html @@ -1,4 +1,4 @@ -Plugin Hooks - Modern.js Builder +Plugin Hooks - Modern.js Builder -Modern.js Builder

    Plugin Hooks

    +Modern.js Builder

    Plugin Hooks

    This section describes the lifetime hooks provided by Builder plugin.

    Overview

    Common Hooks

    @@ -69,7 +69,7 @@

    mo

    modifyBundlerChain experimental

    Bundler chain is a subset of webpack chain, which contains part of the webpack chain API that you can use to modify both webpack and Rspack configuration.

    modifyBundlerChain is used to call the bundler chain to modify the webpack / Rspack configuration. You can use this hook when using webpack-provider or rspack-provider.

    -

    This hook only supports modifying the configuration of the non-differentiated parts of webpack and Rspack. For example, modifying the devtool configuration option (webpack and Rspack have the same devtool property value type), or adding an Rspack-compatible webpack plugin.

    +

    This hook only supports modifying the configuration of the non-differentiated parts of webpack and Rspack. For example, modifying the devtool configuration option (webpack and Rspack have the same devtool property value type), or adding an Rspack-compatible webpack plugin.

    • Type
    diff --git a/modern-js/builder/en/guide/advanced/browser-compatibility.html b/modern-js/builder/en/guide/advanced/browser-compatibility.html index ab467ffb6e..96f994d391 100644 --- a/modern-js/builder/en/guide/advanced/browser-compatibility.html +++ b/modern-js/builder/en/guide/advanced/browser-compatibility.html @@ -1,4 +1,4 @@ -Browser Compatibility - Modern.js Builder +Browser Compatibility - Modern.js Builder -Modern.js Builder

    Browser Compatibility

    +Modern.js Builder

    Browser Compatibility

    This chapter introduces how to use the capabilities provided by Builder to deal with browser compatibility issues.

    Set browserslist

    Before dealing with compatibility issues, you first need to clarify which browsers your project needs to support, and add the corresponding browserslist config.

    • -

      If you haven't set browserslist yet, please read the Browserslist chapter first.

      +

      If you haven't set browserslist yet, please read the Browserslist chapter first.

    • If you have set a browserslist, Builder will automatically compile according to that scope, downgrade JavaScript syntax and CSS syntax, and inject the required polyfill. In most cases, you can safely use modern ECMAScript features without worrying about compatibility issues.

      @@ -100,7 +100,7 @@

      Downgrade the current project code

      The code of the current project will be downgraded by default, so you don't need to add additional config, just make sure that the browserslist config is set correctly.

      Downgrade third-party dependencies

      -

      When you find that a third-party dependencies causes compatibility issues, you can add this dependency to Builder's source.include config, Make Builder do extra compilation for this dependency.

      +

      When you find that a third-party dependencies causes compatibility issues, you can add this dependency to Builder's source.include config, Make Builder do extra compilation for this dependency.

      Taking the npm package query-string as an example, you can add the following config:

      import path from 'path';
       
      @@ -109,9 +109,9 @@ 

      include: [/\/node_modules\/query-string\//], }, };

      -

      Please refer to source.include document for detailed usage guide.

      +

      Please refer to source.include document for detailed usage guide.

      Downgrade the code out of the current project

      -

      When you import the code out of the current project, if the code has not been compiled, then you also need to configure source.include to it to compile.

      +

      When you import the code out of the current project, if the code has not been compiled, then you also need to configure source.include to it to compile.

      For example, if you need to reference a module under the packages directory in the monorepo, you can add the following config:

      import path from 'path';
       
      @@ -130,8 +130,8 @@ 

      }, };

      Polyfill mode

      -

      Builder compiles JavaScript code through Babel or SWC, and injects polyfill libraries like core-js, @babel/runtime and @swc/helpers.

      -

      In different usage scenarios, you may need different polyfill solutions. Builder provides output.polyfill config to switch between different polyfill modes.

      +

      Builder compiles JavaScript code through Babel or SWC, and injects polyfill libraries like core-js, @babel/runtime and @swc/helpers.

      +

      In different usage scenarios, you may need different polyfill solutions. Builder provides output.polyfill config to switch between different polyfill modes.

      entry mode

      entry is the default mode and does not need to be set manually.

      When using the entry mode, Builder will analyze which core-js methods need to be injected according to the browserslist set by the current project, and inject them to the entry file of each page. The polyfill injected in this way is more comprehensive, and there is no need to worry about the project source code and third-party dependencies polyfill issues. However, because some unused polyfill codes are included, the bundle size may increase.

      @@ -149,7 +149,7 @@

      usage mode<

      After compilation, only the polyfills for Map will be injected into this file:

      import 'core-js/modules/es.map';
       var b = new Map();
      -

      The advantage of this method is that the size of the injected polyfill is smaller, which is suitable for projects with higher requirements on bundle size. The disadvantage is that polyfill may not be fully injected, because third-party dependencies will not be compiled and downgraded by default, so the polyfill required by third-party dependencies will not be analyzed. If you need to analyze a third-party dependency, you also need to add it to source.include config.

      +

      The advantage of this method is that the size of the injected polyfill is smaller, which is suitable for projects with higher requirements on bundle size. The disadvantage is that polyfill may not be fully injected, because third-party dependencies will not be compiled and downgraded by default, so the polyfill required by third-party dependencies will not be analyzed. If you need to analyze a third-party dependency, you also need to add it to source.include config.

      The config of usage mode is:

      export default {
         output: {
      @@ -163,4 +163,4 @@ 

      Disab polyfill: 'off', }, };

      -

      When using this config, you need to ensure compatibility by yourself, such as manually import the required polyfill code through source.preEntry.

    \ No newline at end of file +

    When using this config, you need to ensure compatibility by yourself, such as manually import the required polyfill code through source.preEntry.

    \ No newline at end of file diff --git a/modern-js/builder/en/guide/advanced/browserslist.html b/modern-js/builder/en/guide/advanced/browserslist.html index e21b74071b..3a7827ada0 100644 --- a/modern-js/builder/en/guide/advanced/browserslist.html +++ b/modern-js/builder/en/guide/advanced/browserslist.html @@ -1,4 +1,4 @@ -Browserslist - Modern.js Builder +Browserslist - Modern.js Builder -Modern.js Builder

    Browserslist

    -

    Builder supports using Browserslist to specify which browsers should be supported in your Web application.

    +Modern.js Builder

    Browserslist

    +

    Builder supports using Browserslist to specify which browsers should be supported in your Web application.

    What is Browserslist

    Since different browsers support ECMAScript and CSS differently, developers need to set the correct browser range for web applications.

    -

    Browserslist can specify which browsers your web application can run in, it provides a configuration for specifying browsers range. Browserslist has become a standard in the industry, it is used by libraries such as Autoprefixer, Babel, ESLint, PostCSS, SWC and Webpack.

    +

    Browserslist can specify which browsers your web application can run in, it provides a configuration for specifying browsers range. Browserslist has become a standard in the industry, it is used by libraries such as Autoprefixer, Babel, ESLint, PostCSS, SWC and Webpack.

    When you specify a browser range through Browserslist, Builder will compile JavaScript and CSS code to the specified syntax, and inject the corresponding polyfill code. When you only need to be compatible with modern browsers, the compilation process will introduce less compatible code and polyfills, and the performance of the page will be better.

    For example, when you need to be compatible with IE11 browser, Builder will compile the code to ES5 and inject the polyfill required by IE11 through core-js.

    What is polyfill

    A polyfill is a piece of code that provides the functionality of a newer feature to older browsers that do not support that feature natively. It is used to fill in the gaps in older browsers' implementations of web standards, allowing developers to use newer features safely without having to worry about whether or not they will work in older browsers. For example, if a browser does not support the Array.map() method, a polyfill can be used to provide that functionality, allowing code that uses Array.prototype.flat() to work in that browser. Polyfills are commonly used to ensure that web applications can work on a wide range of browsers, including older ones. @@ -40,7 +40,7 @@

    Effect

    By default, the .browserslistrc file only takes effect for browser-side bundles, including the web and web-worker target types.

    When you are building multiple targets at the same time, for example if the targets contains both web and node, only the web bundles will be affected by the .browserslistrc file. If you want to make changes to the node bundles, you can use the output.overrideBrowserslist configuration below.

    Use output.overrideBrowserslist config

    -

    In addition to the above standard usage, Builder also provides output.overrideBrowserslist config, which can also set the value of Browserslist.

    +

    In addition to the above standard usage, Builder also provides output.overrideBrowserslist config, which can also set the value of Browserslist.

    overrideBrowserslist can be set to an array, which is written in the same way as the browserslistrc configuration, but has a higher priority than browserslistrc.

    export default {
       output: {
    @@ -78,7 +78,7 @@ 

    De
    > 0.5%
     not dead
     Internet Explorer 11
    -

    The above Browserslist will compile the code to the ES5 specification. For the specific browser list, please check browserslist.dev.

    +

    The above Browserslist will compile the code to the ES5 specification. For the specific browser list, please check browserslist.dev.

    If you don't need to be compatible with IE 11 browsers, you can adjust Browserslist to get a more performant output, such as:

    • Set to browsers that supports native ES Modules (recommended):
    • @@ -103,7 +103,7 @@

      Mob last 2 versions > 0.2% not dead

    -

    The above Browserslist will compile the code to the ES5 specification, which is compatible with most mobile scenarios on the market. For the detailed browsers list, please check browserslist.dev.

    +

    The above Browserslist will compile the code to the ES5 specification, which is compatible with most mobile scenarios on the market. For the detailed browsers list, please check browserslist.dev.

    You can also choose to use the ES6 specification in the H5 scene, which will make the performance of the page better. The corresponding Browserslist is as follows:

    iOS >= 10
    @@ -112,7 +112,7 @@ 

    Mob not dead not op_mini all

    Default Browserslist

    -

    Builder will set different default values of Browserslist according to build target, but we recommend that you explicitly set Browserslist in your project, which will make the compatible scope of the project more clear.

    +

    Builder will set different default values of Browserslist according to build target, but we recommend that you explicitly set Browserslist in your project, which will make the compatible scope of the project more clear.

    Web Target

    The default values of web target are as follows:

    > 0.01%
    @@ -128,14 +128,14 @@ 

    Web not dead not op_mini all

    Modern Web Target

    -

    Modern Web target will be compatible with browsers that support native ES Modules by default.

    +

    Modern Web target will be compatible with browsers that support native ES Modules by default.

    chrome >= 61
     edge >= 16
     firefox >= 60
     safari >= 11
     ios_saf >= 11

    Query browser support

    -

    When developing, we need to know the browser support of certain features or APIs. At this time, we can check on the caniuse website.

    -

    For example, we need to know the browser support of Promise, just enter Promise in caniuse, and you can see the following results:

    +

    When developing, we need to know the browser support of certain features or APIs. At this time, we can check on the caniuse website.

    +

    For example, we need to know the browser support of Promise, just enter Promise in caniuse, and you can see the following results:

    As can be seen from the above table, Promise is natively supported in Chrome 33 and iOS 8, but not in IE 11.

    \ No newline at end of file diff --git a/modern-js/builder/en/guide/advanced/custom-webpack-config.html b/modern-js/builder/en/guide/advanced/custom-webpack-config.html index 582f6dfcc4..c591aa2653 100644 --- a/modern-js/builder/en/guide/advanced/custom-webpack-config.html +++ b/modern-js/builder/en/guide/advanced/custom-webpack-config.html @@ -1,4 +1,4 @@ -Custom webpack config - Modern.js Builder +Custom webpack config - Modern.js Builder -Modern.js Builder

    Custom webpack config

    +Modern.js Builder

    Custom webpack config

    Builder supports directly modifying webpack configuration objects, and also supports deep customization of webpack configuration through webpack-chain.

    Modify the webpack configuration object

    -

    You can use tools.webpack to modify the webpack configuration object.

    +

    You can use tools.webpack to modify the webpack configuration object.

    export default {
       tools: {
         webpack: (config, { env }) => {
    @@ -27,11 +27,11 @@ 

    Using webpack-chain

    webpack-chain is a configuration modification tools that is different from modifying webpack configuration objects. Compared with modifying webpack configuration objects, webpack-chain not only supports chain calls, but also can modify built-in Rule or Plugin based on id.

    tools.webpackChain config

    -

    Builder provides tools.webpackChain config to modify webpack-chain.

    +

    Builder provides tools.webpackChain config to modify webpack-chain.

    The value of tools.webpackChain is Function type, which receives two parameters:

    • The first parameter is the webpack-chain instance, you can use this instance to modify the default webpack config.
    • -
    • The second parameter is a utils collection, including env, isProd, CHAIN_ID, etc.
    • +
    • The second parameter is a utils collection, including env, isProd, CHAIN_ID, etc.

    Here's a basic example:

    export default {
    @@ -168,4 +168,4 @@ 

    }, }, };

    -

    The above are some common config examples. For the complete webpack-chain API, please refer to webpack-chain documentation.

    \ No newline at end of file +

    The above are some common config examples. For the complete webpack-chain API, please refer to webpack-chain documentation.

    \ No newline at end of file diff --git a/modern-js/builder/en/guide/advanced/define.html b/modern-js/builder/en/guide/advanced/define.html index 2d96f8dfdd..9308ee67bc 100644 --- a/modern-js/builder/en/guide/advanced/define.html +++ b/modern-js/builder/en/guide/advanced/define.html @@ -1,4 +1,4 @@ -Environment Variables - Modern.js Builder +Environment Variables - Modern.js Builder -Modern.js Builder

    Environment Variables

    +Modern.js Builder

    Environment Variables

    Builder supports injecting environment variables or expressions into the code during compilation, which is helpful for distinguishing the running environment or injecting constant values. This chapter introduces how to use environment variables.

    Default Variables

    process.env.NODE_ENV

    @@ -29,11 +29,11 @@

    pro

    process.env.ASSET_PREFIX

    You can use process.env.ASSET_PREFIX in the runtime code to access the URL prefix of static assets.

      -
    • In development, it is equivalent to the value set by dev.assetPrefix.
    • -
    • In production, it is equivalent to the value set by output.assetPrefix.
    • +
    • In development, it is equivalent to the value set by dev.assetPrefix.
    • +
    • In production, it is equivalent to the value set by output.assetPrefix.
    • Builder will automatically remove the trailing slash from assetPrefix to make string concatenation easier.
    -

    For example, we copy the static/icon.png image to the dist directory through output.copy configuration:

    +

    For example, we copy the static/icon.png image to the dist directory through output.copy configuration:

    export default {
       dev: {
         assetPrefix: '/',
    @@ -50,7 +50,7 @@ 

    In the production environment, the above code will be compiled as:

    const Image = <img src={`https://example.com/static/icon.png`} />;

    Using define config

    -

    By configuring the source.define, you can replace expressions with other expressions or values in compile time.

    +

    By configuring the source.define, you can replace expressions with other expressions or values in compile time.

    Define looks like macro definitions in other programming languages. But JavaScript has powerful runtime capabilities, so you don't need to use it as a complicated code generator. You can use it to pass simple data, such as environment variables, from compile time to runtime. Almost there, it can be used to work with Builder to shake trees.

    Replace Expressions

    The most basic use case for Define is to replace expressions in compile time.

    @@ -64,7 +64,7 @@

    Re };

    Note that the value provided here must be a JSON string, e.g. process.env.NODE_ENV with a value of "production" should be passed in as "\"production\"" to be processed correctly.

    Similarly { foo: "bar" } should be converted to "{\"foo\":\"bar\"}", which if passed directly into the original object would mean replacing the expression process.env.NODE_ENV.foo with the identifier bar.

    -

    For more about source.define, just refer to API References.

    +

    For more about source.define, just refer to API References.

    TIP

    The environment variable NODE_ENV shown in the example above is already injected by the Builder, and you usually do not need to configure it manually.

    process.env Injection

    @@ -83,7 +83,7 @@

    p

    So please avoid full injection, just inject the used variables from process.env.

    Setup Environment Variables

    -

    You may often need to set environment variables, in which case you can instead use the source.globalVars configuration to simplify configuration. It is a syntax sugar of source.define, the only difference is that source.globalVars will automatically stringify the value, which makes it easier to set the value of global variables and avoid writing a lot of JSON.stringify(...) stuffs.

    +

    You may often need to set environment variables, in which case you can instead use the source.globalVars configuration to simplify configuration. It is a syntax sugar of source.define, the only difference is that source.globalVars will automatically stringify the value, which makes it easier to set the value of global variables and avoid writing a lot of JSON.stringify(...) stuffs.

    export default {
       source: {
         globalVars: {
    @@ -145,7 +145,7 @@ 

    Tre };

    Unused components are not bundled into the artifacts, and their external dependencies can be optimized accordingly, resulting in a destination with better size and performance.

    In-source testing

    -

    Vitest supports writing tests inside source files to test the behavior of private features without exporting them. Set up Define to remove the test code from the production build. Please refer to the Vitest's documentation for detailed guidelines

    +

    Vitest supports writing tests inside source files to test the behavior of private features without exporting them. Set up Define to remove the test code from the production build. Please refer to the Vitest's documentation for detailed guidelines

    // the implementation
     function add(...args) {
       return args.reduce((a, b) => a + b, 0);
    diff --git a/modern-js/builder/en/guide/advanced/hmr.html b/modern-js/builder/en/guide/advanced/hmr.html
    index 4b894143c8..684e23ee8f 100644
    --- a/modern-js/builder/en/guide/advanced/hmr.html
    +++ b/modern-js/builder/en/guide/advanced/hmr.html
    @@ -1,4 +1,4 @@
    -Hot Module Replacement - Modern.js Builder
    +Hot Module Replacement - Modern.js Builder
     
    -Modern.js Builder

    Hot Module Replacement

    +Modern.js Builder

    Hot Module Replacement

    Hot Module Replacement (HMR) exchanges, adds, or removes modules while an application is running, without a full reload. This can significantly speed up development in a few ways:

    • Retain application state which is lost during a full reload.
    • @@ -17,7 +17,7 @@

    Enabling HMR

    Builder has built-in support for HMR. By default, HMR is enabled in development.

    -

    By setting dev.hmr to false, HMR can be disabled, which the HMR and react-refresh will no longer work.

    +

    By setting dev.hmr to false, HMR can be disabled, which the HMR and react-refresh will no longer work.

    export default {
       dev: {
         hmr: false,
    @@ -60,6 +60,6 @@ 

    Live reloading: After modifying the file, webpack recompiles and forces a browser refresh, which is a global (application-wide) refresh, equivalent to window.location.reload().
  • Hot reloading: After modifying the file, webpack recompiles the corresponding module and remembers the state of the application when it is refreshed, thus enabling a partial refresh, i.e. hot update.
  • -

    DevServer provides two configuration options, hot and liveReload, to control how updates are made. When both hot and liveReload are open, DevServer will attempt to use hot mode (HMR) first, and will degrade to reloading the page if the HMR update fails.

    +

    DevServer provides two configuration options, hot and liveReload, to control how updates are made. When both hot and liveReload are open, DevServer will attempt to use hot mode (HMR) first, and will degrade to reloading the page if the HMR update fails.

    FAQ

    -

    Please refer to HMR FAQ.

    \ No newline at end of file +

    Please refer to HMR FAQ.

    \ No newline at end of file diff --git a/modern-js/builder/en/guide/advanced/rem.html b/modern-js/builder/en/guide/advanced/rem.html index 781a393987..5c79e4cf5c 100644 --- a/modern-js/builder/en/guide/advanced/rem.html +++ b/modern-js/builder/en/guide/advanced/rem.html @@ -1,4 +1,4 @@ -REM adaptation - Modern.js Builder +REM adaptation - Modern.js Builder -Modern.js Builder

    REM adaptation

    -

    Builder supports REM adaptation via output.convertToRem, which can dynamically adjusts the font size according to the screen size, so that the page will be displayed correctly on different screen sizes.

    +Modern.js Builder

    REM adaptation

    +

    Builder supports REM adaptation via output.convertToRem, which can dynamically adjusts the font size according to the screen size, so that the page will be displayed correctly on different screen sizes.

    Enabling REM adaptability

    By setting output.convertToRem, the Builder can do the following things:

    Update dependencies like @storybook/addon-* to major version 7.

    -

    Finally, follow the official Storybook documentation to make the necessary updates for some breaking changes, such as changes in story writing and MDX syntax. You can refer to the migration guide at storybook migrate doc.

    +

    Finally, follow the official Storybook documentation to make the necessary updates for some breaking changes, such as changes in story writing and MDX syntax. You can refer to the migration guide at storybook migrate doc.

    Addon some scripts in your package.json

    {
       "scripts": {
    @@ -59,7 +59,7 @@ 

    }

    To Start, run npm run storybook

    Native Storybook users

    -

    Modern.js Builder only support Storybook 7, so you need to upgrade from Storybook version 6 to version 7, please follow the steps outlined in the official Storybook documentation at storybook migrate doc.

    +

    Modern.js Builder only support Storybook 7, so you need to upgrade from Storybook version 6 to version 7, please follow the steps outlined in the official Storybook documentation at storybook migrate doc.

    .storybook/main.js
    const config = {
     -  framework: '@storybook/react-webapck5',
     +  framework: {
    @@ -68,7 +68,7 @@ 

    }; export default config;

    -

    The default config file path is modern.config.(j|t)s, for the detail config, see builder config.

    +

    The default config file path is modern.config.(j|t)s, for the detail config, see builder config.

    If the original project includes configurations for Babel, they need to be written in the modern configuration. Most Babel configurations have already been included in Modern.js.

    Enable Rspack build

    Rspack is known for its fast build speed. To use Rspack as a build tool in Modern.js, you only need to configure it as follows:

    @@ -150,9 +150,9 @@

    builderC

    Command Line Interface

    @modern-js/storybook proxies some of the storybook cli commands.

    storybook dev

    -

    Start Storybook, more details at https://storybook.js.org/docs/react/api/cli-options#dev.

    +

    Start Storybook, more details at https://storybook.js.org/docs/react/api/cli-options#dev.

    storybook build

    -

    Build Storybook for production, more details at https://storybook.js.org/docs/react/api/cli-options#build.

    +

    Build Storybook for production, more details at https://storybook.js.org/docs/react/api/cli-options#build.

    ConfigFile

    The configuration file includes an additional field: builderPlugins, in addition to the Modern.js builder configuration. This field is used to enable builder plugins, such as enabling SWC compilation.

    modern.config.ts
    import { defineConfig } from '@modern-js/storybook';
    @@ -173,8 +173,8 @@ 

    Benefit

    Trouble Shooting

    1. -

      Modern.js builder won't load your other configurations like babel.config.json, babel config needs to be set in Modern.js config, tools.babel. -Webpack configuration can be written in either tools.webpack or tools.webpackChain.

      +

      Modern.js builder won't load your other configurations like babel.config.json, babel config needs to be set in Modern.js config, tools.babel. +Webpack configuration can be written in either tools.webpack or tools.webpackChain.

    2. If you find that the build performance is not good, please check if the Storybook automatic documentation generation feature is enabled. For optimal performance, configure it to use react-docgen. The difference between react-docgen and react-docgen-typescript is that the former is implemented based on Babel, while the latter is implemented based on TypeScript. The former has better performance but weaker type inference capabilities. If you are using Rspack for the build, only react-docgen is supported.

      diff --git a/modern-js/builder/en/guide/basic/build-target.html b/modern-js/builder/en/guide/basic/build-target.html index 24b8447250..54dcd31280 100644 --- a/modern-js/builder/en/guide/basic/build-target.html +++ b/modern-js/builder/en/guide/basic/build-target.html @@ -1,4 +1,4 @@ -Build Target - Modern.js Builder +Build Target - Modern.js Builder -Modern.js Builder

      Build Target

      +Modern.js Builder

      Build Target

      Builder supports build multiple target types for running in different target environments. After setting the correct target type, Builder will optimize the build results for the environment, and enable some plugins or configs for the target environment during the build process.

      -

      You can set the type through the target parameter of the createBuilder method.

      +

      You can set the type through the target parameter of the createBuilder method.

      Default Target

      By default, the build target is 'web', and the build result can run in a browser environment.

      -

      The Builder will read the Browserslist config in the project to determine the range of browsers.

      +

      The Builder will read the Browserslist config in the project to determine the range of browsers.

      Optional Targets

      target can also be set to the following values:

        @@ -43,7 +43,7 @@

        Node

      TIP

      If target is an array, such as building web and node targets at the same time, then the above processing will not affect the web target, The HTML, CSS and other files required for the web target will still be generated correctly.

      Web Worker Target

      -

      Refers to the build target running in the Web Worker environment.

      +

      Refers to the build target running in the Web Worker environment.

      Web Worker

      A web worker is a type of JavaScript program that runs in the background, independently of other scripts, without affecting the performance of the page. This makes it possible to run long-running scripts, such as ones that handle complex calculations or access remote resources, without blocking the user interface or other scripts. Web workers provide an easy way to run tasks in the background and improve the overall performance of web applications.

      When target is set to 'web-worker', Builder will:

    Configuration

    -

    Builder CLI will read the builder.config.ts configuration file located in the root directory of your project by default. You can use all the configuration options provided by Builder in the configuration file.

    +

    Builder CLI will read the builder.config.ts configuration file located in the root directory of your project by default. You can use all the configuration options provided by Builder in the configuration file.

    builder.config.ts
    import { defineConfig } from '@modern-js/builder-cli';
     
     export default defineConfig({
    diff --git a/modern-js/builder/en/guide/basic/builder-config.html b/modern-js/builder/en/guide/basic/builder-config.html
    index ae032a43e7..94eddc5c53 100644
    --- a/modern-js/builder/en/guide/basic/builder-config.html
    +++ b/modern-js/builder/en/guide/basic/builder-config.html
    @@ -1,4 +1,4 @@
    -Builder Config - Modern.js Builder
    +Builder Config - Modern.js Builder
     
    -Modern.js Builder

    Builder Config

    +Modern.js Builder

    Builder Config

    Builder provides a wealth of configs to help users customize the build behavior.

    Config Categories

    Builder Configs are divided into the following categories:

    -

    You can find detailed descriptions of all configs on the API Reference page.

    +

    You can find detailed descriptions of all configs on the API Reference page.

    Default Values

    The Builder presets a default value for each config, and the default value is suitable for most scenarios. At the same time, the upper-level framework will also override some of the default values based on the requirements of the vertical scene.

    In most cases, you don't need to define any Builder config, just use it right out of the box.

    Use Config

    In the Upper Framework

    When you use a Builder-based upper-level framework, you can define the Builder config directly through the framework's config file, and the upper-level framework will pass the config to the Builder.

    -

    For example, in the Modern.js framework, you can define the Builder's source.alias config in modern.config.ts file.

    +

    For example, in the Modern.js framework, you can define the Builder's source.alias config in modern.config.ts file.

    modern.config.ts
    export default {
       source: {
         alias: {
    @@ -45,7 +45,7 @@ 

    Usi // some configs }, });

    -

    Please refer to API - createBuilder for details.

    +

    Please refer to API - createBuilder for details.

    Relationship with Framework Config

    Generally speaking, the Builder config is a subset of the framework config.

    Builder config only deals with build-related behaviors, while framework config covers a wider range, including runtime, server, deployment, etc., so framework config is extended from Builder config.

    @@ -59,4 +59,4 @@

    Open the generated /dist/builder.config.js file to see the complete content of the Builder config.

    -

    For a complete introduction to debug mode, see the Debug Mode chapter.

    \ No newline at end of file +

    For a complete introduction to debug mode, see the Debug Mode chapter.

    \ No newline at end of file diff --git a/modern-js/builder/en/guide/basic/css-usage.html b/modern-js/builder/en/guide/basic/css-usage.html index 171becf02f..b8c850bc7e 100644 --- a/modern-js/builder/en/guide/basic/css-usage.html +++ b/modern-js/builder/en/guide/basic/css-usage.html @@ -1,4 +1,4 @@ -CSS Usage - Modern.js Builder +CSS Usage - Modern.js Builder -Modern.js Builder

    CSS Usage

    +Modern.js Builder

    CSS Usage

    Builder has built-in multiple style resource processing capabilities, including Less / Sass preprocessor, PostCSS, CSS Modules, CSS inline and CSS compression.

    In addition, Builder also provides multiple configs to customize the compile rules of style resources.

    Using Less, Sass and Stylus

    The Builder has built-in community popular CSS preprocessors such as Less, Sass.

    -

    By default, you don't need to configure anything for Less and Sass. If you need to customize loader config, you can configure tools.less, tools.sass to set it up.

    -

    You can also use Stylus in Builder, just install the Stylus plugin provided by Builder, please refer to Stylus Plugin for usage.

    +

    By default, you don't need to configure anything for Less and Sass. If you need to customize loader config, you can configure tools.less, tools.sass to set it up.

    +

    You can also use Stylus in Builder, just install the Stylus plugin provided by Builder, please refer to Stylus Plugin for usage.

    Using PostCSS

    -

    Builder has built-in PostCSS to transform the CSS code. You can configure the postcss-loader via tools.postcss.

    +

    Builder has built-in PostCSS to transform the CSS code. You can configure the postcss-loader via tools.postcss.

    export default {
       tools: {
         postcss: opts => {
    @@ -30,8 +30,8 @@ 

    Us

    Builtin PostCSS plugins

    Builder has some builtin PostCSS plugins, which will perform the following transformations on CSS:

    .my-table {
       & td {
    @@ -43,12 +43,12 @@ 

    } }

    :root {
       --main-bg-color: pink;
    @@ -59,12 +59,12 @@ 

    }

    CSS Minify

    Usually, in production environments we compress static assets such as CSS, JS, etc. to achieve better transfer efficiency.

    -

    Builder automatically compresses CSS code at production build time with css-minimizer-webpack-plugin (The compression tool used at the bottom is cssnano).

    -

    You can configure tools.minifyCss to make it more customizable.

    +

    Builder automatically compresses CSS code at production build time with css-minimizer-webpack-plugin (The compression tool used at the bottom is cssnano).

    +

    You can configure tools.minifyCss to make it more customizable.

    About cssnano

    cssnano is a tool for optimizing and minifying CSS files. It reduces the size of CSS files by removing unused rules, merging similar rules, removing comments and whitespace, and converting length units, among other techniques, to improve the loading speed of websites.

    Inline CSS Files

    By default, Builder will extract CSS into a separate .css file and output it to the dist directory.

    -

    If you want to inline styles into your JS file, you can set output.disableCssExtract to true to disable CSS extraction logic.When the JS file is requested by the browser, JS dynamically inserts the <style> tag into the Html to load the CSS styles.

    +

    If you want to inline styles into your JS file, you can set output.disableCssExtract to true to disable CSS extraction logic.When the JS file is requested by the browser, JS dynamically inserts the <style> tag into the Html to load the CSS styles.

    export default {
       output: {
         disableCssExtract: true,
    diff --git a/modern-js/builder/en/guide/basic/html-template.html b/modern-js/builder/en/guide/basic/html-template.html
    index 15e34fe854..35fece37b4 100644
    --- a/modern-js/builder/en/guide/basic/html-template.html
    +++ b/modern-js/builder/en/guide/basic/html-template.html
    @@ -1,4 +1,4 @@
    -HTML Template - Modern.js Builder
    +HTML Template - Modern.js Builder
     
    -Modern.js Builder

    HTML Template

    +Modern.js Builder

    HTML Template

    During the build process, Builder will compile based on the HTML template and template parameters to generate several HTML files.

    Builder provides some configs to set the HTML template. Through this chapter, you can learn the basic usage of these configs.

    Set Template

    HTML templates are usually predefined by the upper framework.

    -

    For example, in the Modern.js framework, the HTML template is preset by default, and users can also customize the content of the template. You can read the "Modern.js - HTML Template" chapter to learn about it.

    -

    In Builder, you can use html.template and html.templateByEntries configs to define the path to the custom HTML template.

    +

    For example, in the Modern.js framework, the HTML template is preset by default, and users can also customize the content of the template. You can read the "Modern.js - HTML Template" chapter to learn about it.

    +

    In Builder, you can use html.template and html.templateByEntries configs to define the path to the custom HTML template.

    export default {
       html: {
         template: './static/index.html',
       },
     };

    Set Page Title

    -

    You can set the HTML <title> tag through the html.title and html.titleByEntries configs.

    +

    You can set the HTML <title> tag through the html.title and html.titleByEntries configs.

    When there is only one page in your project, just use the html.title setting directly:

    export default {
       html: {
    @@ -38,21 +38,21 @@ 

    S }, };

    Set Page Icon

    -

    Builder supports setting favicon icon and apple-touch-icon icon.

    -

    You can set the favicon through the html.favicon and html.faviconByEntries configs.

    +

    Builder supports setting favicon icon and apple-touch-icon icon.

    +

    You can set the favicon through the html.favicon and html.faviconByEntries configs.

    export default {
       html: {
         favicon: './src/assets/icon.png',
       },
     };
    -

    You can also set the apple-touch-icon for iOS system through the html.appIcon config.

    +

    You can also set the apple-touch-icon for iOS system through the html.appIcon config.

    export default {
       html: {
         appIcon: './src/assets/icon.png',
       },
     };

    Set Meta Tags

    -

    You can set the meta tags through the html.meta and html.metaByEntries configs.

    +

    You can set the meta tags through the html.meta and html.metaByEntries configs.

    For example to setting description:

    export default {
       html: {
    @@ -81,7 +81,7 @@ 

    options: object; }; };

    -

    You can also use the html.templateParameters and html.templateParametersByEntries configs to pass in custom template parameters.

    +

    You can also use the html.templateParameters and html.templateParametersByEntries configs to pass in custom template parameters.

    For example:

    export default {
       html: {
    @@ -95,8 +95,8 @@ 

    The generated HTML code is as follows:

    <div>hello world!</div>

    Template Engine

    -

    Builder supports using Lodash Template, EJS, Pug as template engines, the most basic Lodash Template is used as the default template engine.

    -

    Lodash Template

    +

    Builder supports using Lodash Template, EJS, Pug as template engines, the most basic Lodash Template is used as the default template engine.

    +

    Lodash Template

    When the suffix of the template is .html, Builder will use Lodash Template to compile it.

    For example, if you define a text parameter in a template with a value of 'world', Builder will automatically replace <%= text %> with the value.

    <!-- input -->
    @@ -104,10 +104,10 @@ 

    <!-- output --> <div>hello world!</div>

    -

    Please read the Lodash Template documentation for details.

    -

    EJS

    +

    Please read the Lodash Template documentation for details.

    +

    EJS

    When the suffix of the template is .ejs, Builder will use the EJS template engine to compile it. EJS is a simple templating language that lets you generate HTML markup with plain JavaScript.

    -

    For example, you can first refer to a .ejs template through the html.template config:

    +

    For example, you can first refer to a .ejs template through the html.template config:

    export default {
       html: {
         template: './static/index.ejs',
    @@ -121,10 +121,10 @@ 

    <!-- output --> <h2>Jack</h2>

    -

    Please read the EJS documentation for details.

    -

    Pug

    +

    Please read the EJS documentation for details.

    +

    Pug

    When the suffix of the template is .pug, Builder will use the Pug template engine to compile it. Pug is a robust, elegant, feature rich template engine for Node.js.

    -

    Before using the Pug template, you need to enable the tools.pug config, and define the html.template config to reference a .pug template:

    +

    Before using the Pug template, you need to enable the tools.pug config, and define the html.template config to reference a .pug template:

    export default {
       html: {
         template: './static/index.pug',
    @@ -139,7 +139,7 @@ 

    <!-- output --> <p>Hello World!</p>

    -

    Please read the Pug documentation for details.

    +

    Please read the Pug documentation for details.

    Injecting Tags

    The html.tags option can be configured to insert any tags into the final generated HTML product.

    Usage Cases

    The artifacts of the web application will eventually be referenced directly or indirectly by HTML entries, but most of the time injecting tags directly into HTML is not preferred.

    @@ -152,7 +152,7 @@

    I <%= htmlWebpackPlugin.tags.bodyTags %> </body> </html>

    -

    The purpose of html.tags is to adjust these template variables and thus modify the HTML, as defined in API References.

    +

    The purpose of html.tags is to adjust these template variables and thus modify the HTML, as defined in API References.

    Tag Object

    export default {
       output: {
    diff --git a/modern-js/builder/en/guide/basic/typescript.html b/modern-js/builder/en/guide/basic/typescript.html
    index f5c9aad25c..f317154070 100644
    --- a/modern-js/builder/en/guide/basic/typescript.html
    +++ b/modern-js/builder/en/guide/basic/typescript.html
    @@ -1,4 +1,4 @@
    -Use TypeScript - Modern.js Builder
    +Use TypeScript - Modern.js Builder
     
    -Modern.js Builder

    Use TypeScript

    +Modern.js Builder

    Use TypeScript

    Builder supports TypeScript compilation and type checking by default, you can use . ts and `. tsx' files in the project without any configuration.

    TypeScript compilation

    Builder has three ways to compile TypeScript files.

    Babel

    By default, all TypeScript files are compiled by Babel.

    -

    You may find some old articles pointing out that Babel cannot handle const enum and namespace alias syntax, however since version 7.15 Babel has supported them. Babel compile is enabled by default.

    +

    You may find some old articles pointing out that Babel cannot handle const enum and namespace alias syntax, however since version 7.15 Babel has supported them. Babel compile is enabled by default.

    If you want more Babel plugins

    ts-loader

    The ts-loader uses TypeScript's official compiler-TSC under the hood. When ts-loader is enabled, TypeScript files will no longer be compiled by Babel, but Babel will still inject polyfill into the TSC output and transform it to the lower version of JavaScript.

    @@ -24,22 +24,22 @@

    tsLoader: {}, }, };

    -

    More configuration can be found at tools.tsLoader.

    -

    If ts-loader is enabled with default configuration, it does not have type checking, we do type checking by fork-ts-checker-webpack-plugin.

    +

    More configuration can be found at tools.tsLoader.

    +

    If ts-loader is enabled with default configuration, it does not have type checking, we do type checking by fork-ts-checker-webpack-plugin.

    SWC

    If you want a super fast compiler, and you don't need some custom Babel plugins, then you can use SWC for compilation and minification.

    -

    SWC plugin in Builder supports TypeScript, TSX and legacy decorator, you can check SWC plugin.

    +

    SWC plugin in Builder supports TypeScript, TSX and legacy decorator, you can check SWC plugin.

    Why Babel is the default option

    Babel supports TypeScript well. It cannot check types, but we can check types in another process. Babel follows standards more when compiled to lower versions of JavaScript in certain situations. For example, Babel will initialize class members as undefined, and mark class methods as non-enumerable. If TSC is enabled, for better syntax downgrading and Polyfill, the TSC output will still be compiled by Babel, causing unnecessary performance costs.

    Type checking

    -

    Currently, the only stable TypeScript type checking tool is TSC, and it usually takes a while to check types in a large project, so Builder by default using tsChecker(fork-ts-checker-webpack-plugin) for asynchronous type checking, it won't block project setup.

    +

    Currently, the only stable TypeScript type checking tool is TSC, and it usually takes a while to check types in a large project, so Builder by default using tsChecker(fork-ts-checker-webpack-plugin) for asynchronous type checking, it won't block project setup.

    Set tsChecker(with default options):

    export default {
       tools: {
         tsChecker: {},
       },
     };
    -

    More configurations can be seen at tsChecker configuration.

    +

    More configurations can be seen at tsChecker configuration.

    Note that if ts-loader is enabled and compileOnly: false is set, please disable tsChecker to avoid duplicate type-checking.

    -
    STC

    The author of SWC has announced a new open-source type-checking tool based on Rust, which is called STC, it's super fast but it cannot used for production now, really don't recommend you use that for now, when it's stabled we will use that in Builder SWC plugin as experimental ability. +

    STC

    The author of SWC has announced a new open-source type-checking tool based on Rust, which is called STC, it's super fast but it cannot used for production now, really don't recommend you use that for now, when it's stabled we will use that in Builder SWC plugin as experimental ability.

    \ No newline at end of file diff --git a/modern-js/builder/en/guide/debug/debug-mode.html b/modern-js/builder/en/guide/debug/debug-mode.html index 22e48a20a6..43258d5184 100644 --- a/modern-js/builder/en/guide/debug/debug-mode.html +++ b/modern-js/builder/en/guide/debug/debug-mode.html @@ -1,4 +1,4 @@ -Debug Mode - Modern.js Builder +Debug Mode - Modern.js Builder -Modern.js Builder

    Debug Mode

    +Modern.js Builder

    Debug Mode

    Builder provides a debug mode to troubleshoot problems, you can add the DEBUG=builder environment variable when executing a build to enable Builder's debug mode.

    # Debug development environment
     DEBUG=builder pnpm dev
    @@ -43,7 +43,7 @@ 

    }, // other configs... };

    -

    For a complete introduction to Builder config, please see the Builder Config chapter.

    +

    For a complete introduction to Builder config, please see the Builder Config chapter.

    Webpack Config File

    If the current project is built using webpack, then in debug mode, Builder will also automatically generate dist/webpack.config.web.js file, which contains the final generated webpack config. In this file, you can see what is included in the config that Builder finally passes to webpack.

    The structure of the file is as follows:

    @@ -60,7 +60,7 @@

    // other configs... };

    In addition, if the project configures additional build targets, such as enabling the SSR capability of the framework (corresponding to additional Node.js build target), an additional webpack.config.node.js file will be generated in the dist directory, corresponding to the webpack config for SSR bundles.

    -

    For a complete introduction to webpack configs, please see webpack official documentation.

    +

    For a complete introduction to webpack configs, please see webpack official documentation.

    Rspack Config File

    If the current project is built using Rspack, then in debug mode, Builder will also automatically generate dist/rspack.config.web.js file, which contains the final generated Rspack config. In this file, you can see what is included in the config that Builder finally passes to Rspack.

    The structure of the file is as follows:

    @@ -76,4 +76,4 @@

    ], // other configs... };

    -

    For a complete introduction to Rspack configs, please see Rspack official documentation.

    \ No newline at end of file +

    For a complete introduction to Rspack configs, please see Rspack official documentation.

    \ No newline at end of file diff --git a/modern-js/builder/en/guide/faq/exceptions.html b/modern-js/builder/en/guide/faq/exceptions.html index c8dc0019ce..babe0a1f42 100644 --- a/modern-js/builder/en/guide/faq/exceptions.html +++ b/modern-js/builder/en/guide/faq/exceptions.html @@ -1,4 +1,4 @@ -Exceptions FAQ - Modern.js Builder +Exceptions FAQ - Modern.js Builder -Modern.js Builder
    \ No newline at end of file +Modern.js Builder
    \ No newline at end of file diff --git a/modern-js/builder/en/guide/faq/features.html b/modern-js/builder/en/guide/faq/features.html index 2ab186e98a..55b50577a0 100644 --- a/modern-js/builder/en/guide/faq/features.html +++ b/modern-js/builder/en/guide/faq/features.html @@ -1,4 +1,4 @@ -Features FAQ - Modern.js Builder +Features FAQ - Modern.js Builder -Modern.js Builder
    \ No newline at end of file +Modern.js Builder
    \ No newline at end of file diff --git a/modern-js/builder/en/guide/faq/general.html b/modern-js/builder/en/guide/faq/general.html index a8394013b5..62f2103947 100644 --- a/modern-js/builder/en/guide/faq/general.html +++ b/modern-js/builder/en/guide/faq/general.html @@ -1,4 +1,4 @@ -General FAQ - Modern.js Builder +General FAQ - Modern.js Builder -Modern.js Builder

    General FAQ

    +Modern.js Builder

    General FAQ

    The relationship between Modern.js Builder and Modern.js?

    The building abilities of Modern.js are based on Modern.js Builder.

    When developing Modern.js, we designed Builder as an independent module, and clearly divided the responsibilities of Builder and Modern.js. Therefore, Builder can be used independently of the Modern.js framework and be applied to other frameworks or scenarios.


    Can Builder be used to build libraries or UI components?

    Builder focuses on solving web application building scenarios. We do not recommend that you use Builder to build libraries or UI components.

    -

    If you need to build a library or UI components, it is recommended to use the Modern.js Module.

    +

    If you need to build a library or UI components, it is recommended to use the Modern.js Module.


    Will Builder support Turbopack?

    -

    Builder is already supporting Rspack, and currently Turbopack supports use in Next.js, so there is no plan for Builder to support Turbopack.

    +

    Builder is already supporting Rspack, and currently Turbopack supports use in Next.js, so there is no plan for Builder to support Turbopack.

    -

    You can find the comparison of Rspack and Turbopack in the Introduction of Rspack.

    +

    You can find the comparison of Rspack and Turbopack in the Introduction of Rspack.


    Will Builder support Vite?

    -

    Vite is a great tool, but the goal of Builder is to replace webpack with Rust Bundler, Rspack can provide fast compilation speed, while maintaining the consistent behavior between development and production.

    +

    Vite is a great tool, but the goal of Builder is to replace webpack with Rust Bundler, Rspack can provide fast compilation speed, while maintaining the consistent behavior between development and production.

    Builder will focus on the evolution from webpack to Rspack, so it will not be support Vite.

    -

    You can find the comparison of Vite and Turbopack in the Introduction of Rspack.

    +

    You can find the comparison of Vite and Turbopack in the Introduction of Rspack.

    \ No newline at end of file diff --git a/modern-js/builder/en/guide/faq/hmr.html b/modern-js/builder/en/guide/faq/hmr.html index 5d85102c22..c5c8946188 100644 --- a/modern-js/builder/en/guide/faq/hmr.html +++ b/modern-js/builder/en/guide/faq/hmr.html @@ -1,4 +1,4 @@ -HMR FAQ - Modern.js Builder +HMR FAQ - Modern.js Builder -Modern.js Builder
    \ No newline at end of file +Modern.js Builder
    \ No newline at end of file diff --git a/modern-js/builder/en/guide/features.html b/modern-js/builder/en/guide/features.html index 29a8fdd046..d23713366d 100644 --- a/modern-js/builder/en/guide/features.html +++ b/modern-js/builder/en/guide/features.html @@ -1,4 +1,4 @@ -All Features - Modern.js Builder +All Features - Modern.js Builder -Modern.js Builder

    All Features

    +Modern.js Builder

    All Features

    Notice

    Modern.js Builder has been rebranded as Rsbuild. This document will no longer be updated.

      -
    • If you are using the Modern.js framework, please visit the Modern.js framework documentation directly.
    • -
    • If you are using the CLI or Node API of Modern.js Builder, you can easily migrate to Rsbuild, please visit the Rsbuild repository for more information.
    • +
    • If you are using the Modern.js framework, please visit the Modern.js framework documentation directly.
    • +
    • If you are using the CLI or Node API of Modern.js Builder, you can easily migrate to Rsbuild, please visit the Rsbuild repository for more information.

    Here are all the main features supported by Modern.js Builder.

    @@ -29,87 +29,87 @@

    JavaS Rspack bundler Optional feature, use Rspack as the bundler - + Babel compilation Babel compilation is enabled by default, which converts JavaScript and TypeScript code to backward compatible JavaScript syntax - + TS compilation TS files are compiled by Babel by default, you can also use ts-loader - + Type checker Runs TypeScript type checker by default - + JS minification JS minification is enabled by default in production build - + Polyfill injection core-js and other polyfills are injected by default - + SourceMap generation High-quality SourceMap is generated by default in production build - + Alias Optional feature, set import alias - + Restrict importing paths Optional feature, restrict source code import paths - + esbuild compilation Optional feature, transform and minify JavaScript and TypeScript code with esbuild - + SWC compilation Optional feature, transform and minify JavaScript and TypeScript code with SWC - + Node outputs Optional feature, support building bundles that run in Node.js environment - + Web Worker outputs Optional feature, support building bundles that run in a Web Worker environment - + Browserslist Optional feature, using browserslist (opens new window)to specify which browsers should be supported in your Web application. - + Compatibility check Optional feature, analyze if there are incompatible advanced syntax in the outputs within the current browser scope - + Environment variable Optional feature, inject environment variables or expressions into the code - + Node Polyfill Optional feature, inject polyfills for Node core modules on the browser side - + @@ -126,57 +126,57 @@

    CSS PostCSS compilation PostCSS compilation is enabled by default, built-in autoprefixer and other plugins - + Sass preprocessing Support compile Sass files by default - + Less preprocessing Support compile Less files by default - + Stylus preprocessing Optional feature, compile Stylus files - + CSS Modules compilation Support compiling *.module.* files by default - + CSS Modules type Optional feature, automatically generate type definition for CSS Modules - + CSS minification CSS minification is enabled by default in production build - + Extract CSS files CSS will be extracted as separate files by default - + Styled Components Support styled components compilation by default - + Inline CSS into JS Optional feature, inline CSS files to JavaScript files - + rem unit conversion Optional feature, convert px units in CSS to rem units - + @@ -193,42 +193,42 @@

    HTML Set title Set HTML title tag - + Set meta Set HTML meta tag - + Set favicon Set favicon for page - + Set app icon Set apple icon for iOS - + Use EJS template engine Optional feature, use EJS template engine - + Use Pug template engine Optional feature, use pug template engine - + Inline JS files Optional feature, inline JS files into HTML - + Inline CSS files Optional feature, inline CSS files into HTML - + @@ -245,12 +245,12 @@

    Automatically open page Optional feature, automatically open page URL in browser when starting Dev Server - + HTTPS Dev Server Optional feature, enable HTTPS Dev Server - + @@ -267,22 +267,22 @@

    React Refresh Support React Refresh by default - + SVG to React component Support to import SVG as component by default - + Vue 3 SFC compilation Optional feature, enable compilation of Vue 3 SFC (Single File Components) files - + Vue 3 JSX compilation Optional feature, enable compilation of Vue 3 JSX syntax - + @@ -299,22 +299,22 @@

    St Import image assets Support for import image assets in code - + Import font assets Support for import font assets in code - + Import video assets Support for import video assets in code - + Import wasm assets Support for import WebAssembly assets in code - + Import node addons @@ -324,22 +324,22 @@

    St Inline static assets Small assets are inlined into JS by default - + Clean up static assets Automatically clean up static assets in the dist directory before each build - + Copy static assets Optional feature, copy static assets to the dist directory - + Generate manifest file Optional feature, generate manifest file containing static asset information - + @@ -356,57 +356,57 @@

    Perf Chunk Splitting A variety of chunk splitting strategies are built into Builder to automatically split the bundle into files of moderate size - + Print File Size After the production build, All bundle sizes is displayed by default - + Analyze bundle size Optional feature, analyze bundle size through Bundle Analyzer - + Remove console Optional feature, remove console.xx in code - + Optimize moment.js size Optional feature, remove the redundant locale files of moment.js - + Component on-demand import Optional feature, selectively import code and styles from component libraries - + Image compression Optional feature, compress used image resources - + Preload Optional feature, preemptively fetch and cache the target resource for current navigation - + Prefetch Optional feature, preemptively fetch and cache the target resource for a followup navigation - + Preconnect Optional feature, preemptively connect to the target resource's origin - + DNS prefetch Optional feature, preemptively perform DNS resolution for the target resource's origin - +

    \ No newline at end of file diff --git a/modern-js/builder/en/guide/framework/vue2.html b/modern-js/builder/en/guide/framework/vue2.html index 012dfb4d68..b65f91053e 100644 --- a/modern-js/builder/en/guide/framework/vue2.html +++ b/modern-js/builder/en/guide/framework/vue2.html @@ -1,4 +1,4 @@ -Build Vue 2 App - Modern.js Builder +Build Vue 2 App - Modern.js Builder -Modern.js Builder

    Build Vue 2 App

    +Modern.js Builder

    Build Vue 2 App

    Although the Modern.js framework is built on React, the underlying Modern.js Builder is not coupled with React. Therefore, you can use Modern.js Builder to build your Vue applications and leverage most of the capabilities provided by Modern.js Builder.

    In this document, you will learn how to build a Vue 2 application using Modern.js Builder.

    Example Project

    We have created an example project based on Vue 2 and Modern.js Builder. You can build your own project by referring this project, or just cloning it as a template. The following documentation will provide more detailed instructions.

    CLI Tool

    Before you start building a Vue project, you need a CLI tool to provide basic commands.

    -

    You can use the CLI tool provided by Builder, or you can build your own CLI tool based on Builder's Node API.

    +

    You can use the CLI tool provided by Builder, or you can build your own CLI tool based on Builder's Node API.

    Using Vue Plugin

    -

    To compile Vue SFC (Single File Components) and JSX syntax, you need to register the Builder Vue 2 plugin. The plugin will automatically add the necessary configuration for Vue builds and remove the built-in React-related configurations.

    +

    To compile Vue SFC (Single File Components) and JSX syntax, you need to register the Builder Vue 2 plugin. The plugin will automatically add the necessary configuration for Vue builds and remove the built-in React-related configurations.

    For example, register in builder.config.ts:

    builder.config.ts
    import { defineConfig } from '@modern-js/builder-cli';
     import { builderPluginVue2 } from '@modern-js/builder-plugin-vue2';
    diff --git a/modern-js/builder/en/guide/framework/vue3.html b/modern-js/builder/en/guide/framework/vue3.html
    index 85613d42ff..f4bcda9405 100644
    --- a/modern-js/builder/en/guide/framework/vue3.html
    +++ b/modern-js/builder/en/guide/framework/vue3.html
    @@ -1,4 +1,4 @@
    -Build Vue 3 App - Modern.js Builder
    +Build Vue 3 App - Modern.js Builder
     
    -Modern.js Builder

    Build Vue 3 App

    +Modern.js Builder

    Build Vue 3 App

    Although the Modern.js framework is built on React, the underlying Modern.js Builder is not coupled with React. Therefore, you can use Modern.js Builder to build your Vue applications and leverage most of the capabilities provided by Modern.js Builder.

    In this document, you will learn how to build a Vue 3 application using Modern.js Builder.

    Example Project

    We have created an example project based on Vue 3 and Modern.js Builder. You can build your own project by referring this project, or just cloning it as a template. The following documentation will provide more detailed instructions.

    CLI Tool

    Before you start building a Vue project, you need a CLI tool to provide basic commands.

    -

    You can use the CLI tool provided by Builder, or you can build your own CLI tool based on Builder's Node API.

    +

    You can use the CLI tool provided by Builder, or you can build your own CLI tool based on Builder's Node API.

    Using Vue Plugin

    -

    To compile Vue SFC (Single File Components) and JSX syntax, you need to register the Builder Vue plugin. The plugin will automatically add the necessary configuration for Vue builds and remove the built-in React-related configurations.

    +

    To compile Vue SFC (Single File Components) and JSX syntax, you need to register the Builder Vue plugin. The plugin will automatically add the necessary configuration for Vue builds and remove the built-in React-related configurations.

    For example, register in builder.config.ts:

    builder.config.ts
    import { defineConfig } from '@modern-js/builder-cli';
     import { builderPluginVue } from '@modern-js/builder-plugin-vue';
    diff --git a/modern-js/builder/en/guide/glossary.html b/modern-js/builder/en/guide/glossary.html
    index f6dfb750d1..d1627603b8 100644
    --- a/modern-js/builder/en/guide/glossary.html
    +++ b/modern-js/builder/en/guide/glossary.html
    @@ -1,4 +1,4 @@
    -Glossary - Modern.js Builder
    +Glossary - Modern.js Builder
     
    -Modern.js Builder

    Glossary

    +Modern.js Builder

    Glossary

    Notice

    Modern.js Builder has been rebranded as Rsbuild. This document will no longer be updated.

      -
    • If you are using the Modern.js framework, please visit the Modern.js framework documentation directly.
    • -
    • If you are using the CLI or Node API of Modern.js Builder, you can easily migrate to Rsbuild, please visit the Rsbuild repository for more information.
    • +
    • If you are using the Modern.js framework, please visit the Modern.js framework documentation directly.
    • +
    • If you are using the CLI or Node API of Modern.js Builder, you can easily migrate to Rsbuild, please visit the Rsbuild repository for more information.

    Bundler

    -

    Refers to module bundlers such as webpack, Rspack.

    +

    Refers to module bundlers such as webpack, Rspack.

    The main goal of bundlers is to bundle JavaScript, CSS and other files together, and the bundled files can be used in the browser, Node.js or other environments. When bundler processes the Web application, it builds a dependency graph and then combines every module into one or more bundles.

    Builder

    Refers to the build layer of Modern.js. The goal of Builder is to provide Modern.js users with out-of-the-box build capabilities and support seamless switching between webpack and Rspack.

    -

    The previous version of Modern.js MAJOR_VERSION.46.0 used @modern-js/builder, which was upgraded to Rsbuild starting from MAJOR_VERSION.46.0.

    +

    The previous version of Modern.js MAJOR_VERSION.46.0 used @modern-js/builder, which was upgraded to Rsbuild starting from MAJOR_VERSION.46.0.

    Builder Provider

    Builder Provider is a part of Builder. Providers implements corresponding build feature based on specific bundlers.

    Currently there are two Providers:

    @@ -42,13 +42,13 @@

    M

    Module Federation

    Module Federation (MF) is a feature of Webpack. It allows a JavaScript application to dynamically load code from another application, and in the process, share dependencies. If an application consuming a federated module does not have a dependency needed by the federated code, Webpack will download the missing dependency from that federated build origin.

    This allows for the creation of micro-frontend-style applications, where multiple systems can share code and be dynamically updated without having to rebuild the entire application.

    -

    Modern.js provides an example project for Module Federation. Please refer to module-federation-examples - modernjs.

    -

    You can also read the webpack Module Federation documentation to learn more concepts.

    +

    Modern.js provides an example project for Module Federation. Please refer to module-federation-examples - modernjs.

    +

    You can also read the webpack Module Federation documentation to learn more concepts.

    Rspack

    -

    Rspack is a high performance JavaScript bundler based on Rust, with interoperability with the webpack ecosystem, allowing it to be integrated into webpack projects at a low cost while providing better build performance.

    +

    Rspack is a high performance JavaScript bundler based on Rust, with interoperability with the webpack ecosystem, allowing it to be integrated into webpack projects at a low cost while providing better build performance.

    Compared to webpack, Rspack has significantly improved build performance, thanks not only to the language advantages brought by Rust, but also to its parallel architecture and incremental compilation features. Benchmarking has shown that Rspack can provide 5-10 times better compilation performance.

    Modern.js

    Modern.js is an open source web engineering system from ByteDance, which provides multiple solutions to help developers solve problems in different development scenarios.

    -

    Modern.js Repository.

    +

    Modern.js Repository.

    EdenX

    ByteDance's internal web engineering system, implemented based on Modern.js.

    \ No newline at end of file diff --git a/modern-js/builder/en/guide/introduction.html b/modern-js/builder/en/guide/introduction.html index 01595ec8e5..cd2103cab8 100644 --- a/modern-js/builder/en/guide/introduction.html +++ b/modern-js/builder/en/guide/introduction.html @@ -1,4 +1,4 @@ -Introduction - Modern.js Builder +Introduction - Modern.js Builder -Modern.js Builder

    Introduction

    +Modern.js Builder

    Introduction

    Notice

    Modern.js Builder has been rebranded as Rsbuild. This document will no longer be updated.

      -
    • If you are using the Modern.js framework, please visit the Modern.js framework documentation directly.
    • -
    • If you are using the CLI or Node API of Modern.js Builder, you can easily migrate to Rsbuild, please visit the Rsbuild repository for more information.
    • +
    • If you are using the Modern.js framework, please visit the Modern.js framework documentation directly.
    • +
    • If you are using the CLI or Node API of Modern.js Builder, you can easily migrate to Rsbuild, please visit the Rsbuild repository for more information.

    Modern.js Builder is a Build Engine for web development.

    With the growing of the front-end ecosystem, more and more build tools and plugins are created. For most developers, the configuration and dependencies required to build a web application have become complex; the cost of finding best practices for developers has also risen.

    In order to reduce the complexity and make it easier to build a project, we abstracted the build abilities based on the practical experience of Modern.js, and created the open source tool Modern.js Builder.

    Rust Tools

    -

    In recent years, the trend in front-end toolchain has been to re-implement them with native programming languages like Rust for better performance. Some high-performance tools have created, such as Rspack, SWC, etc., and their use is gradually expanding. However, there are many differences between these Rust tools and JavaScript tools, including functional differences, configuration inconsistencies, which make it difficult for users to migrate.

    +

    In recent years, the trend in front-end toolchain has been to re-implement them with native programming languages like Rust for better performance. Some high-performance tools have created, such as Rspack, SWC, etc., and their use is gradually expanding. However, there are many differences between these Rust tools and JavaScript tools, including functional differences, configuration inconsistencies, which make it difficult for users to migrate.

    The Rust process of the front-end toolchain will continue for a long time, Modern.js Builder is expected to help developers better transition to Rust tools. Whether it's JavaScript tools, Rust tools, or even low-level bundlers like webpack, they're all replaceable components in Modern.js Builder. You can incrementally replace these components by turning on configuration or enabling plugins, and Modern.js Builder will smooth out the major differences and help users migrate.

    Position

    Modern.js Builder is a build tool serving the upper-level front-end frameworks. It focuses on solving problems in web application building, and expects to provide out-of-box building abilities for front-end frameworks.

    @@ -28,21 +28,21 @@

    Positio

    If you are a business developer, in most cases, you do not need to manually install Builder in your projects. We recommend that you use the upper-level frameworks based on Builder.

    Currently, the following front-end frameworks are already using Builder:

      -
    • Modern.js Framework (Open source).
    • +
    • Modern.js Framework (Open source).
    • EdenX Framework and PIA Framework inside ByteDance.

    Features

    Support Rspack Build

    Builder supports both webpack and Rspack, so you can switch between the stable Webpack and the faster Rspack.

    What is Rspack
    -

    Rspack is a high performance JavaScript bundler based on Rust, with interoperability with the webpack ecosystem, allowing it to be integrated into webpack projects at a low cost while providing better build performance.

    +

    Rspack is a high performance JavaScript bundler based on Rust, with interoperability with the webpack ecosystem, allowing it to be integrated into webpack projects at a low cost while providing better build performance.

    Compared to webpack, Rspack has significantly improved build performance, thanks not only to the language advantages brought by Rust, but also to its parallel architecture and incremental compilation features. Benchmarking has shown that Rspack can provide 5-10 times better compilation performance.

    -

    By default, Builder uses webpack 5 as the bundler. Although the compilation speed of webpack is not ideal, it is still the most mature and ecological bundler in the community. Based on webpack, Builder integrates Babel, PostCSS, terser and other tools to transform or minify codes. Builder also supports replacing some compile tools with native tools to improve compilation speed, such as replacing babel/terser with swc or esbuild.

    -

    If you have higher build performance requirements, you can easily switch to Rspack build mode, see Using Rspack for more information.

    +

    By default, Builder uses webpack 5 as the bundler. Although the compilation speed of webpack is not ideal, it is still the most mature and ecological bundler in the community. Based on webpack, Builder integrates Babel, PostCSS, terser and other tools to transform or minify codes. Builder also supports replacing some compile tools with native tools to improve compilation speed, such as replacing babel/terser with swc or esbuild.

    +

    If you have higher build performance requirements, you can easily switch to Rspack build mode, see Using Rspack for more information.

    Deep optimization

    Builder makes full use of various optimization strategies in the webpack ecosystem to ensure the artifacts performance in the production environment.

    -

    Taking the chunk splitting scenario as an example, the webpack's splitChunks config is complex, and Builder makes it as an out-of-the-box performance.chunkSplit config, it will split common third-party libraries into chunks to make page loading faster.

    +

    Taking the chunk splitting scenario as an example, the webpack's splitChunks config is complex, and Builder makes it as an out-of-the-box performance.chunkSplit config, it will split common third-party libraries into chunks to make page loading faster.

    Extensible Plugin System

    Provides rich configuration options and a flexible plugin system to support in-depth customization of all features.

    For Builder, all building abilities are achieved through plugins:

    @@ -63,73 +63,73 @@

    npm -@modern-js/builder +@modern-js/builder Core package of Builder -@modern-js/builder-cli +@modern-js/builder-cli CLI of Builder -@modern-js/builder-webpack-provider +@modern-js/builder-webpack-provider Provides webpack build ability -@modern-js/builder-rspack-provider +@modern-js/builder-rspack-provider Provides Rspack build ability -@modern-js/builder-plugin-vue +@modern-js/builder-plugin-vue Vue 3 Plugin -@modern-js/builder-plugin-vue2 +@modern-js/builder-plugin-vue2 Vue 2 Plugin -@modern-js/builder-plugin-swc +@modern-js/builder-plugin-swc SWC Plugin -@modern-js/builder-plugin-stylus +@modern-js/builder-plugin-stylus Stylus Plugin -@modern-js/builder-plugin-esbuild +@modern-js/builder-plugin-esbuild Esbuild Plugin -@modern-js/builder-plugin-node-polyfill +@modern-js/builder-plugin-node-polyfill Node Polyfill Plugin -@modern-js/builder-plugin-image-compress +@modern-js/builder-plugin-image-compress Image Compress Plugin -@modern-js/builder-shared +@modern-js/builder-shared Shared modules of Builder -@modern-js/builder-doc +@modern-js/builder-doc Documentation snippets of Builder -

    You can view the source code of these packages in the packages/builder directory of the modern.js repository.

    +

    You can view the source code of these packages in the packages/builder directory of the modern.js repository.

    Next Step

    You may want:

    diff --git a/modern-js/builder/en/guide/optimization/split-chunk.html b/modern-js/builder/en/guide/optimization/split-chunk.html index 690f5d30d3..c0d14e1694 100644 --- a/modern-js/builder/en/guide/optimization/split-chunk.html +++ b/modern-js/builder/en/guide/optimization/split-chunk.html @@ -1,4 +1,4 @@ -Chunk Splitting Practice - Modern.js Builder +Chunk Splitting Practice - Modern.js Builder -Modern.js Builder

    Chunk Splitting Practice

    +Modern.js Builder

    Chunk Splitting Practice

    A great chunk splitting strategy is very important to improve the loading performance of the application. It can make full use of the browser's caching mechanism to reduce the number of requests and improve the loading speed of the application.

    A variety of chunk splitting strategies are built into Builder, which can meet the needs of most applications. You can also customize the chunk splitting config according to your own business scenarios.

    Splitting Strategies

    -

    The chunk splitting config of Builder is in performance.chunkSplit.

    +

    The chunk splitting config of Builder is in performance.chunkSplit.

    Builder supports the following chunk splitting strategies:

      @@ -148,7 +148,7 @@

      }, }, };

    -

    The config in override will be merged with the bundler config. For specific config details, please refer to webpack - splitChunks or Rspack - splitChunks.

    +

    The config in override will be merged with the bundler config. For specific config details, please refer to webpack - splitChunks or Rspack - splitChunks.

    Using Dynamic Import for Code Splitting

    In addition to the chunkSplit configurations, using dynamic import for code splitting is also an important optimization technique that can effectively reduce the initial bundle size.

    About dynamic import

    Dynamic import is a new feature introduced in ECMAScript 2020 that allows you to dynamically load JavaScript modules. The underlying Rspack/webpack used by the Builder supports dynamic import by default, so you can use it directly in your code.

    diff --git a/modern-js/builder/en/guide/quick-start.html b/modern-js/builder/en/guide/quick-start.html index c4f646b7b0..3a8df69fcc 100644 --- a/modern-js/builder/en/guide/quick-start.html +++ b/modern-js/builder/en/guide/quick-start.html @@ -1,4 +1,4 @@ -Quick Start - Modern.js Builder +Quick Start - Modern.js Builder -Modern.js Builder

    Quick Start

    +Modern.js Builder

    Quick Start

    Notice

    Modern.js Builder has been rebranded as Rsbuild. This document will no longer be updated.

      -
    • If you are using the Modern.js framework, please visit the Modern.js framework documentation directly.
    • -
    • If you are using the CLI or Node API of Modern.js Builder, you can easily migrate to Rsbuild, please visit the Rsbuild repository for more information.
    • +
    • If you are using the Modern.js framework, please visit the Modern.js framework documentation directly.
    • +
    • If you are using the CLI or Node API of Modern.js Builder, you can easily migrate to Rsbuild, please visit the Rsbuild repository for more information.

    Environment preparation

    -

    Before getting started, you will need to install Node.js, and ensure that your Node.js version is higher than 14.17.6. We recommend using the LTS version of Node.js 18.

    +

    Before getting started, you will need to install Node.js, and ensure that your Node.js version is higher than 14.17.6. We recommend using the LTS version of Node.js 18.

    You can check the currently used Node.js version with the following command:

    node -v
    -

    If you do not have Node.js installed in your current environment, or the installed version is lower than 14.17.6, you can use nvm or fnm to install the required version.

    +

    If you do not have Node.js installed in your current environment, or the installed version is lower than 14.17.6, you can use nvm or fnm to install the required version.

    Here is an example of how to install the Node.js 18 LTS version via nvm:

    # Install the long-term support version of Node.js 18
     nvm install 18 --lts
    @@ -33,12 +33,12 @@ 

    Use the Modern.js Framework

    The Modern.js Framework uses Modern.js Builder as its build tool by default. If you are a business developer, you do not need to manually install Builder, just create a Modern.js project and use all the features provided by Builder.

    npx @modern-js/create@latest my-app
    -

    Please refer to Modern.js - Introduction and Modern.js - Quick Start to learn how to use Modern.js framework.

    +

    Please refer to Modern.js - Introduction and Modern.js - Quick Start to learn how to use Modern.js framework.

    About the documentation

    Modern.js framework documentation and Modern.js Builder documentation are deployed under two separate sites. If you encounter any build-related problems while using the Modern.js framework, you can always refer to the documentation of Modern.js Builder to find solutions.

    Use the Builder CLI Tool

    Modern.js Builder provides a lightweight CLI tool that includes basic commands such as dev and build. It is primarily used for building non-React projects.

    If your project is not based on React, for example, if you are developing a Vue project, you can use the Builder CLI tool to build your project.

    -

    Please refer to Use Builder CLI for more information on how to use it.

    +

    Please refer to Use Builder CLI for more information on how to use it.

    Use Builder in a Front-end Framework

    If you are developing a front-end framework, you can use Builder by following these steps:

    1. Install Builder

    @@ -55,7 +55,7 @@

    1. I

    2. Create Builder Instance

    There are two steps to creating a Builder instance:

    -

    First you need to initialize the Builder Provider and pass in the builderConfig config object. Builder provides a lot of configs that allow you to customize the build behavior. At this point, you don't need to know the specific content of the config, just pass in an empty object. You can find all available configs in API - config.

    +

    First you need to initialize the Builder Provider and pass in the builderConfig config object. Builder provides a lot of configs that allow you to customize the build behavior. At this point, you don't need to know the specific content of the config, just pass in an empty object. You can find all available configs in API - config.

    • Initialize the Rspack Provider:
    @@ -84,20 +84,20 @@

    index: './src/index.ts', }, });

    -

    Except the entry option, the createBuilder method also provides some other options, which you can learn more about in API - createBuilder.

    +

    Except the entry option, the createBuilder method also provides some other options, which you can learn more about in API - createBuilder.

    3. Call Builder Instance Method

    The Builder instance provides some methods, which you can use according to the usage scenarios.

    -

    To start local development, it is recommended to use the builder.startDevServer method, which will start a local Dev Server.

    +

    To start local development, it is recommended to use the builder.startDevServer method, which will start a local Dev Server.

    await builder.startDevServer();

    After successfully starting Dev Server, you can see the following logs:

    info    Starting dev server...
     
       > Local:    http://localhost:8081
       > Network:  http://192.168.0.1:8081
    -

    To deploy the App to production environment, it is recommended to use the builder.build method, which will build the production outputs.

    +

    To deploy the App to production environment, it is recommended to use the builder.build method, which will build the production outputs.

    await builder.build();
    -

    For more introduction of Builder instance methods, please read the Builder Instance chapter.

    +

    For more introduction of Builder instance methods, please read the Builder Instance chapter.

    After completing the above three steps, you have learned the basic usage of Builder. Next, you can customize the build process through the Builder plugin and Builder configs.

    Next Step

    diff --git a/modern-js/builder/en/index.html b/modern-js/builder/en/index.html index 39c7f6fd65..6d07172376 100644 --- a/modern-js/builder/en/index.html +++ b/modern-js/builder/en/index.html @@ -1,4 +1,4 @@ -Modern.js Builder +Modern.js Builder -Modern.js Builder

    Modern.js Builder

    A Build Engine for web development.

    🚀

    Rust Bundler

    Easily switch to Rspack bundler with faster build speed.

    🍭

    Deep optimization

    Automatically optimize static assets, ensure the performance of production app.

    📦

    Out of the box

    Base on the best practice at ByteDance, various capabilities are out-of-the-box.

    📖

    Easy to Configure

    Launch with zero configuration, then everything is configurable.

    🎨

    Pluggable

    Comes with a lightweight plugin system to meet your customization needs.

    Multiple Outputs

    Supports building output for Node.js, Web Workers, and other environments.

    Copyright © 2023 ByteDance.
    \ No newline at end of file +Modern.js Builder

    Modern.js Builder

    A Build Engine for web development.

    🚀

    Rust Bundler

    Easily switch to Rspack bundler with faster build speed.

    🍭

    Deep optimization

    Automatically optimize static assets, ensure the performance of production app.

    📦

    Out of the box

    Base on the best practice at ByteDance, various capabilities are out-of-the-box.

    📖

    Easy to Configure

    Launch with zero configuration, then everything is configurable.

    🎨

    Pluggable

    Comes with a lightweight plugin system to meet your customization needs.

    Multiple Outputs

    Supports building output for Node.js, Web Workers, and other environments.

    Copyright © 2023 ByteDance.
    \ No newline at end of file diff --git a/modern-js/builder/en/plugins/introduction.html b/modern-js/builder/en/plugins/introduction.html index 3fcc09cd46..8c68418022 100644 --- a/modern-js/builder/en/plugins/introduction.html +++ b/modern-js/builder/en/plugins/introduction.html @@ -1,4 +1,4 @@ -Introduce to Plugin - Modern.js Builder +Introduce to Plugin - Modern.js Builder -Modern.js Builder

    Introduce to Plugin

    +Modern.js Builder

    Introduce to Plugin

    Builder provides developers with a lightweight but powerful plugin system to build itself and any other plugins. Developing plugins to change the Builder's behavior and introduce extra features. such as:

      @@ -49,8 +49,8 @@

      W

      The package name of the plugin needs to contain the conventional builder-plugin prefix for identification, just like builder-plugin-foo, @scope/builder-plugin-bar, etc.

      Lifetime Hooks

      Builder uses lifetime planning work internally, and plugins can also register hooks to take part in any stage of the workflow and implement their own features.

      -

      The full list of Builder's lifetime hooks can be found in the API References.

      -

      The Builder does not take over the hooks of the underlying bundlers, whose documents can be found here: webpack hooks

      +

      The full list of Builder's lifetime hooks can be found in the API References.

      +

      The Builder does not take over the hooks of the underlying bundlers, whose documents can be found here: webpack hooks

      Use Builder Config

      Custom plugins can usually get config from function parameters, just define and use it at your pleasure.

      @@ -127,13 +127,13 @@

      use api.modifyWebpackConfig(config => {}) to modify raw webpack config.
    • use api.onAfterCreateCompiler(compiler => {}) to handle webpack instance directly.
    -

    We recommend that you use neutrinojs/webpack-chain's +

    We recommend that you use neutrinojs/webpack-chain's chained api to handle the config of webpack whenever possible.

    Builder integrated a webpack5-compatible version, -which can be found in sorrycc/webpack-chain.

    +which can be found in sorrycc/webpack-chain.

    Examples

    Modify Loaders

    -

    The webpack loaders can be used to load and transform various file types. For more information, see concepts and loaders.

    +

    The webpack loaders can be used to load and transform various file types. For more information, see concepts and loaders.

    import type { BuilderPlugin } from '@modern-js/builder-webpack-provider';
     
     export const builderPluginTypeScriptExt = (): BuilderPlugin => ({
    diff --git a/modern-js/builder/en/plugins/list.html b/modern-js/builder/en/plugins/list.html
    index ed1b642d9f..86c9bccc21 100644
    --- a/modern-js/builder/en/plugins/list.html
    +++ b/modern-js/builder/en/plugins/list.html
    @@ -1,4 +1,4 @@
    -Overview - Modern.js Builder
    +Overview - Modern.js Builder
     
    -Modern.js Builder

    Overview

    +Modern.js Builder

    Overview

    Official Plugins

    -

    You can find the source code of these plugins in modern.js/packages/builder directory.

    ON THIS PAGE
    \ No newline at end of file +

    You can find the source code of these plugins in modern.js/packages/builder directory.

    ON THIS PAGE
    \ No newline at end of file diff --git a/modern-js/builder/en/plugins/plugin-esbuild.html b/modern-js/builder/en/plugins/plugin-esbuild.html index 8ac8c27aad..3d8a83ef3c 100644 --- a/modern-js/builder/en/plugins/plugin-esbuild.html +++ b/modern-js/builder/en/plugins/plugin-esbuild.html @@ -1,4 +1,4 @@ -Esbuild Plugin - Modern.js Builder +Esbuild Plugin - Modern.js Builder -Modern.js Builder

    Esbuild Plugin

    +Modern.js Builder

    Esbuild Plugin

    WARNING

    The esbuild feature in the current document is no longer maintained, we recommend using the Rspack + SWC solution, because Rspack + SWC provide better build performance, richer features, and better compatibility.

    -

    Please refer to 「Use Rspack」 for more information.

    +

    Please refer to 「Use Rspack」 for more information.

    -

    esbuild is a front-end build tool based on Golang. It has the functions of bundling, compiling and minimizing JavaScript code. Compared with traditional tools, the performance is significantly improved. When minimizing code, compared to webpack's built-in terser minimizer, esbuild has dozens of times better performance.

    +

    esbuild is a front-end build tool based on Golang. It has the functions of bundling, compiling and minimizing JavaScript code. Compared with traditional tools, the performance is significantly improved. When minimizing code, compared to webpack's built-in terser minimizer, esbuild has dozens of times better performance.

    Modern.js Builder provides esbuild plugin that allow you to use esbuild instead of babel-loader, ts-loader and terser for transformation and minification process. When you enable esbuild in a large project, it can greatly reduce the time required for code compilation and compression, while effectively avoiding OOM (heap out of memory) problems.

    Quick Start

    Used in Modern.js framework

    -

    The Modern.js framework integrates the Builder's esbuild plugin by default, so you don't need to manually install and register the plugin, just use the tools.esbuild configuration:

    +

    The Modern.js framework integrates the Builder's esbuild plugin by default, so you don't need to manually install and register the plugin, just use the tools.esbuild configuration:

    export default defineConfig({
       tools: {
         esbuild: {
    @@ -56,7 +56,7 @@ 

    loader charset: builderConfig.output.charset, };

    This config is used to enable JavaScript/TypeScript transformation, which will replace babel-loader and ts-loader with esbuild-loader.

    -

    If you want to modify the options, you can check the esbuild-loader documentation.

    +

    If you want to modify the options, you can check the esbuild-loader documentation.

    Set JSX Format

    When using esbuild for transformation, esbuild will read the compilerOptions.jsx field in tsconfig.json to determine which JSX syntax to use.

    Therefore, you need to set the correct JSX syntax in tsconfig.json.

    @@ -67,7 +67,7 @@

    Set JSX For } }

    Set the target environment

    -

    Use the target option to set the target environment for transformation. target can be set directly to the JavaScript language version, such as es6, es2020; it can also be set to several target environments, each target environment is an environment name followed by a version number, such as ['chrome58', 'edge16' ,'firefox57']. For a detailed introduction of the target option, please refer to esbuild - target.

    +

    Use the target option to set the target environment for transformation. target can be set directly to the JavaScript language version, such as es6, es2020; it can also be set to several target environments, each target environment is an environment name followed by a version number, such as ['chrome58', 'edge16' ,'firefox57']. For a detailed introduction of the target option, please refer to esbuild - target.

    target supports setting to the following environments:

    This option is used to enable minification for JavaScript and CSS.

    -

    If you want to modify the options, you can check the esbuild-loader documentation.

    +

    If you want to modify the options, you can check the esbuild-loader documentation.

    Set the target environment

    Use the target option to set the target environment for minification.

    builderPluginEsbuild({
    @@ -141,4 +141,4 @@ 

    If you have requirements related to Babel plugins such as babel-plugin-import, you can use the SWC plugin.

    Bundle Size

    Although the compression speed of esbuild is faster, the compression ratio of esbuild is lower than that of terser, so the bundle size will increase, please use it according to the scenes. Generally speaking, esbuild is more suitable for scenes that are not sensitive to bundle size.

    -

    You can refer to minification-benchmarks for a detailed comparison between minimizers.

    \ No newline at end of file +

    You can refer to minification-benchmarks for a detailed comparison between minimizers.

    \ No newline at end of file diff --git a/modern-js/builder/en/plugins/plugin-image-compress.html b/modern-js/builder/en/plugins/plugin-image-compress.html index 550bc63096..2e4b370f3d 100644 --- a/modern-js/builder/en/plugins/plugin-image-compress.html +++ b/modern-js/builder/en/plugins/plugin-image-compress.html @@ -1,4 +1,4 @@ -Image Compress Plugin - Modern.js Builder +Image Compress Plugin - Modern.js Builder -Modern.js Builder
    \ No newline at end of file diff --git a/modern-js/builder/en/plugins/plugin-node-polyfill.html b/modern-js/builder/en/plugins/plugin-node-polyfill.html index 7568025a76..7b1195bd44 100644 --- a/modern-js/builder/en/plugins/plugin-node-polyfill.html +++ b/modern-js/builder/en/plugins/plugin-node-polyfill.html @@ -1,4 +1,4 @@ -Node Polyfill Plugin - Modern.js Builder +Node Polyfill Plugin - Modern.js Builder -Modern.js Builder

    Node Polyfill Plugin

    +Modern.js Builder

    Node Polyfill Plugin

    About Node Polyfill

    Normally, we don't need to use Node libs on the browser side. However, it is possible to use some Node libs when the code will run on both the Node side and the browser side, and Node Polyfill provides browser versions of polyfills for these Node libs.

    By using the Node Polyfill plugin, Node core libs polyfills are automatically injected into the browser-side, allowing you to use these modules on the browser side with confidence.

    Quick Start

    Used in Modern.js framework

    -

    The Modern.js framework integrates the Builder's Node Polyfill plugin by default, so you don't need to manually install and register the plugin, just set the output.disableNodePolyfill config to false:

    +

    The Modern.js framework integrates the Builder's Node Polyfill plugin by default, so you don't need to manually install and register the plugin, just set the output.disableNodePolyfill config to false:

    export default defineConfig({
       output: {
         disableNodePolyfill: false,
    diff --git a/modern-js/builder/en/plugins/plugin-stylus.html b/modern-js/builder/en/plugins/plugin-stylus.html
    index e402c3ea2e..63e9ac6885 100644
    --- a/modern-js/builder/en/plugins/plugin-stylus.html
    +++ b/modern-js/builder/en/plugins/plugin-stylus.html
    @@ -1,4 +1,4 @@
    -Stylus Plugin - Modern.js Builder
    +Stylus Plugin - Modern.js Builder
     
    -Modern.js Builder

    Stylus Plugin

    +Modern.js Builder

    Stylus Plugin

    Stylus is an Expressive, dynamic and robust CSS preprocessor. This chapter introduces how to use Stylus in Builder.

    Quick Start

    Install

    @@ -62,7 +62,7 @@

    stylusOp
    • Default: undefined
    -

    Options passed to Stylus, please refer to the Stylus documentation for specific usage.

    +

    Options passed to Stylus, please refer to the Stylus documentation for specific usage.

    builderPluginStylus({
       stylusOptions: {
         lineNumbers: false,
    diff --git a/modern-js/builder/en/plugins/plugin-swc.html b/modern-js/builder/en/plugins/plugin-swc.html
    index b9cfe8c651..41b8ee10d8 100644
    --- a/modern-js/builder/en/plugins/plugin-swc.html
    +++ b/modern-js/builder/en/plugins/plugin-swc.html
    @@ -1,4 +1,4 @@
    -SWC Plugin - Modern.js Builder
    +SWC Plugin - Modern.js Builder
     
    -Modern.js Builder

    SWC Plugin

    -

    SWC (Speedy Web Compiler) is a transformer and minimizer for JavaScript and TypeScript based on Rust. SWC can provide the same abilities with Babel, and it's more than 10x faster than Babel.

    +Modern.js Builder

    SWC Plugin

    +

    SWC (Speedy Web Compiler) is a transformer and minimizer for JavaScript and TypeScript based on Rust. SWC can provide the same abilities with Babel, and it's more than 10x faster than Babel.

    Modern.js has a out-of-box plugin for SWC, power your Web application with Polyfill and minification, we also port some common used Babel plugins to SWC.

    Usage Scenarios

    Before using the SWC plugin, please understand the scenarios and limitations of the SWC plugin to determine whether your project is suitable for using it.

    @@ -22,16 +22,16 @@

    Babel Pl -

    If you use Babel plugin capabilities that are not yet supported by SWC, you will no longer be able to use them after switching to SWC compilation. You can give feedback via issues under the swc-plugins repository and we will evaluate if built-in support is needed.

    +

    If you use Babel plugin capabilities that are not yet supported by SWC, you will no longer be able to use them after switching to SWC compilation. You can give feedback via issues under the swc-plugins repository and we will evaluate if built-in support is needed.

    Bundle Size

    -

    When using SWC for code minification instead of terser and cssnano, there may be a small change in the bundle size. SWC outperforms terser for JavaScript code compression and slightly underperforms cssnano for CSS code compression.

    -

    For a detailed comparison between minifiers, see minification-benchmarks.

    +

    When using SWC for code minification instead of terser and cssnano, there may be a small change in the bundle size. SWC outperforms terser for JavaScript code compression and slightly underperforms cssnano for CSS code compression.

    +

    For a detailed comparison between minifiers, see minification-benchmarks.

    Quick Start

    Used in Modern.js framework

    The Modern.js framework integrates the Builder's SWC plugin, and you can use it in the following ways:

    @@ -82,13 +82,13 @@

    ConfigWhen using function-based configuration, the default configuration generated by the plugin will be passed in, allowing you to modify it or return a new configuration.

    presetReact

    Ported from @babel/preset-react. The value you passed will be merged with default option.

    By default, the plugin will set runtime field based on your react version, if react version is newer than 17.0.0, it will be set to automatic, otherwish classic.

    presetEnv

    Ported from @babel/preset-env. The value you passed will be merged with default option.

    Default option is:

    @@ -98,7 +98,7 @@

    presetEnv}

    jsMinify

    If set it to false, then SWC minification will be disabled, if set it to true then will it applies default option. If you pass an object, then this object will be merged with default option.

    @@ -169,7 +169,7 @@

    exten additionalLibraries?: string[]; classNameMatchers?: string[]; };

    -

    Remove React runtime type checking. This is ported from @babel/plugin-react-transform-remove-prop-types, All the configurations remain the same.

    +

    Remove React runtime type checking. This is ported from @babel/plugin-react-transform-remove-prop-types, All the configurations remain the same.

    extensions.lodash

    • Type:
    • @@ -185,7 +185,7 @@

      extension cwd: process.cwd(), ids: ['lodash', 'lodash-es'], };

    -

    Ported from babel-plugin-lodash, it is used to automatically convert references to Lodash into on-demand imports, thereby reducing the bundle size of Lodash code.

    +

    Ported from babel-plugin-lodash, it is used to automatically convert references to Lodash into on-demand imports, thereby reducing the bundle size of Lodash code.

    // Input
     import { get, throttle } from 'lodash';
     
    @@ -213,7 +213,7 @@ 

    // Empty by default. namespace?: string, };

    -

    This is ported by Next.js team from babel-plugin-styled-components.

    +

    This is ported by Next.js team from babel-plugin-styled-components.

    extensions.emotion

    • Type:
    • @@ -243,11 +243,11 @@

      extensio } }, }

    -

    This is ported by Next.js team from @emotion/babel-plugin

    +

    This is ported by Next.js team from @emotion/babel-plugin

    extensions.pluginImport

    -
    TIP

    Builder provides the source.transformImport config, so you don't need to configure extensions.pluginImport manually. +

    TIP

    Builder provides the source.transformImport config, so you don't need to configure extensions.pluginImport manually.

    -

    Ported from babel-plugin-import, configurations are the same.

    +

    Ported from babel-plugin-import, configurations are the same.

    Some configurations can be passed in functions, such as customName, customStyleName. These JavaScript functions will be called by Rust through Node-API, which will cause some performance overhead.

    Some simple function logic can be replaced by template language. Therefore, the configuration of function items such as customName, customStyleName can also be passed in strings as templates to replace functions and improve performance.

    For example:

    @@ -266,7 +266,7 @@

    ext

    {{ member }} will be replaced by the imported specifier:

    import Btn from 'foo/es/MyButton';

    Template customName: 'foo/es/{{ member }}' is the same as customName: (member) => `foo/es/${member}` , but template value has no performance overhead of Node-API.

    -

    The template used here is handlebars. There are some useful builtin tools, Take the above import statement as an example:

    +

    The template used here is handlebars. There are some useful builtin tools, Take the above import statement as an example:

    PluginSWC({
       extensions: {
         pluginImport: [
    diff --git a/modern-js/builder/en/plugins/plugin-vue.html b/modern-js/builder/en/plugins/plugin-vue.html
    index 8a6fd50ced..feb5a17fc8 100644
    --- a/modern-js/builder/en/plugins/plugin-vue.html
    +++ b/modern-js/builder/en/plugins/plugin-vue.html
    @@ -1,4 +1,4 @@
    -Vue Plugin - Modern.js Builder
    +Vue Plugin - Modern.js Builder
     
    -Modern.js Builder

    Vue Plugin

    -

    The Vue plugin provides support for building Vue 3 applications. The plugin internally integrates vue-loader and @vue/babel-plugin-jsx.

    +Modern.js Builder

    Vue Plugin

    +

    The Vue plugin provides support for building Vue 3 applications. The plugin internally integrates vue-loader and @vue/babel-plugin-jsx.

    Quick Start

    Install

    You can install the plugin with the following command:

    @@ -20,7 +20,7 @@

    Register
    import { builderPluginVue } from '@modern-js/builder-plugin-vue';
     
     builder.addPlugins([builderPluginVue()]);

    -

    After installing the plugin, you can directly import *.vue files in your code or use Vue's JSX syntax without the need for additional configuration.

    +

    After installing the plugin, you can directly import *.vue files in your code or use Vue's JSX syntax without the need for additional configuration.

    Config

    If you need to customize the compilation behavior of Vue, you can use the following configs.

    vueLoaderOptions

    @@ -34,7 +34,7 @@

    vueLo }, experimentalInlineMatchResource: builder === 'rspack', };

    -

    Options passed to vue-loader, please refer to the vue-loader documentation for detailed usage.

    +

    Options passed to vue-loader, please refer to the vue-loader documentation for detailed usage.

    builderPluginVue({
       vueLoaderOptions: {
         hotReload: false,
    @@ -61,7 +61,7 @@ 

    vueJsxOp
    • Default: {}
    -

    Options passed to @vue/babel-plugin-jsx, please refer to the @vue/babel-plugin-jsx documentation for detailed usage.

    +

    Options passed to @vue/babel-plugin-jsx, please refer to the @vue/babel-plugin-jsx documentation for detailed usage.

    builderPluginVue({
       vueJsxOptions: {
         transformOn: true,
    diff --git a/modern-js/builder/en/plugins/plugin-vue2.html b/modern-js/builder/en/plugins/plugin-vue2.html
    index abfbe05747..d0471c149b 100644
    --- a/modern-js/builder/en/plugins/plugin-vue2.html
    +++ b/modern-js/builder/en/plugins/plugin-vue2.html
    @@ -1,4 +1,4 @@
    -Vue 2 Plugin - Modern.js Builder
    +Vue 2 Plugin - Modern.js Builder
     
    -Modern.js Builder

    Vue 2 Plugin

    -

    The Vue 2 plugin provides support for building Vue 2 applications. The plugin internally integrates vue-loader and @vue/babel-preset-jsx.

    +Modern.js Builder

    Vue 2 Plugin

    +

    The Vue 2 plugin provides support for building Vue 2 applications. The plugin internally integrates vue-loader and @vue/babel-preset-jsx.

    Quick Start

    Install

    You can install the plugin with the following command:

    @@ -20,7 +20,7 @@

    Register
    import { builderPluginVue2 } from '@modern-js/builder-plugin-vue2';
     
     builder.addPlugins([builderPluginVue2()]);

    -

    After installing the plugin, you can directly import *.vue files in your code or use Vue's JSX syntax without the need for additional configuration.

    +

    After installing the plugin, you can directly import *.vue files in your code or use Vue's JSX syntax without the need for additional configuration.

    Config

    If you need to customize the compilation behavior of Vue, you can use the following configs.

    vueLoaderOptions

    @@ -33,7 +33,7 @@

    vueLo preserveWhitespace: false, }, };

    -

    Options passed to vue-loader, please refer to the vue-loader documentation for detailed usage.

    +

    Options passed to vue-loader, please refer to the vue-loader documentation for detailed usage.

    builderPluginVue2({
       vueLoaderOptions: {
         hotReload: false,
    @@ -58,7 +58,7 @@ 

    vueJsxOp
    const defaultOptions = {
       injectH: true,
     };
    -

    Options passed to @vue/babel-preset-jsx, please refer to the @vue/babel-preset-jsx documentation for detailed usage.

    +

    Options passed to @vue/babel-preset-jsx, please refer to the @vue/babel-preset-jsx documentation for detailed usage.

    builderPluginVue2({
       vueJsxOptions: {
         injectH: false,
    diff --git a/modern-js/builder/guide/advanced/browser-compatibility.html b/modern-js/builder/guide/advanced/browser-compatibility.html
    index 533d4a8b81..fb807df509 100644
    --- a/modern-js/builder/guide/advanced/browser-compatibility.html
    +++ b/modern-js/builder/guide/advanced/browser-compatibility.html
    @@ -1,4 +1,4 @@
    -浏览器兼容性 - Modern.js Builder
    +浏览器兼容性 - Modern.js Builder
     
    -Modern.js Builder

    浏览器兼容性

    +Modern.js Builder

    浏览器兼容性

    本章节介绍如何使用 Builder 提供的能力来处理浏览器兼容性问题。

    设置浏览器范围

    在处理兼容性问题之前,首先需要明确你的项目需要支持的浏览器范围,并添加相应的 browserslist 配置。

    • -

      如果你还没有设置浏览器范围,请先阅读 设置浏览器范围 章节。

      +

      如果你还没有设置浏览器范围,请先阅读 设置浏览器范围 章节。

    • 如果你已经设置了浏览器范围,那么 Builder 会自动根据该范围进行编译,对 JavaScript 语法和 CSS 语法进行降级处理,并注入所需的 polyfill 代码。大部分情况下,你可以放心地使用现代 ECMAScript 特性,无须担心兼容性问题。

      @@ -100,7 +100,7 @@

      降级当前项目代码

      当前项目的代码会被默认降级,因此你不需要添加额外的配置,只需要保证正确设置了浏览器范围即可。

      降级第三方依赖

      -

      当你发现某个第三方依赖的代码导致了兼容性问题时,你可以将这个依赖添加到 Builder 的 source.include 配置中,使 Builder 对该依赖进行额外的编译。

      +

      当你发现某个第三方依赖的代码导致了兼容性问题时,你可以将这个依赖添加到 Builder 的 source.include 配置中,使 Builder 对该依赖进行额外的编译。

      query-string 这个 npm 包为例,你可以做如下的配置:

      import path from 'path';
       
      @@ -109,9 +109,9 @@ 

      include: [/\/node_modules\/query-string\//], }, };

      -

      请查看 source.include 文档来查看更详细的用法说明。

      +

      请查看 source.include 文档来查看更详细的用法说明。

      降级非当前项目的代码

      -

      当你引用非当前项目的代码时,如果该代码未经过编译处理,那么你也需要配置 source.include 来对它进行编译。

      +

      当你引用非当前项目的代码时,如果该代码未经过编译处理,那么你也需要配置 source.include 来对它进行编译。

      比如,你需要引用 monorepo 中 packages 目录下的某个模块,可以添加如下的配置:

      import path from 'path';
       
      @@ -130,8 +130,8 @@ 

      }, };

      Polyfill 方案

      -

      Builder 底层通过 Babel 或 SWC 编译 JavaScript 代码,并注入 core-js@babel/runtime@swc/helpers 等 polyfill 库。

      -

      在不同的使用场景下,你可能会需要不同的 polyfill 方案。Builder 提供了 output.polyfill 配置项来切换不同的 polyfill 方案。

      +

      Builder 底层通过 Babel 或 SWC 编译 JavaScript 代码,并注入 core-js@babel/runtime@swc/helpers 等 polyfill 库。

      +

      在不同的使用场景下,你可能会需要不同的 polyfill 方案。Builder 提供了 output.polyfill 配置项来切换不同的 polyfill 方案。

      entry 方案

      entry 为默认方案,无须手动设置。

      在使用 entry 方案时,Builder 会根据当前项目设置的浏览器范围来计算需要注入哪些 core-js 方法,并在每个页面的入口文件中进行注入。这种方式注入的 polyfill 较为全面,不需要再担心项目源码和第三方依赖的 polyfill 问题,但是因为包含了一些没有用到的 polyfill 代码,所以最终的包大小可能会有所增加。

      @@ -149,7 +149,7 @@

      usage 方

      编译后,只会在该文件中注入 Map 所需的 polyfill:

      import 'core-js/modules/es.map';
       var b = new Map();
      -

      这种方式的优点是注入的 polyfill 体积更小,适合对包体积有较高要求的项目使用。缺点是 polyfill 可能注入不全,因为第三方依赖默认不会被编译和降级处理,因此第三方依赖所需的 polyfill 不会被分析到,如果需要分析某个第三方依赖,也需要将其加入到 source.include 配置中。

      +

      这种方式的优点是注入的 polyfill 体积更小,适合对包体积有较高要求的项目使用。缺点是 polyfill 可能注入不全,因为第三方依赖默认不会被编译和降级处理,因此第三方依赖所需的 polyfill 不会被分析到,如果需要分析某个第三方依赖,也需要将其加入到 source.include 配置中。

      usage 方案对应的配置为:

      export default {
         output: {
      @@ -163,4 +163,4 @@ 

      polyfill: 'off', }, };

      -

      使用此选项时,你需要自行保证代码的兼容性,比如通过 source.preEntry 来手动引用所需的 polyfill 代码。

    \ No newline at end of file +

    使用此选项时,你需要自行保证代码的兼容性,比如通过 source.preEntry 来手动引用所需的 polyfill 代码。

    \ No newline at end of file diff --git a/modern-js/builder/guide/advanced/browserslist.html b/modern-js/builder/guide/advanced/browserslist.html index 09d582c44f..8a0652336b 100644 --- a/modern-js/builder/guide/advanced/browserslist.html +++ b/modern-js/builder/guide/advanced/browserslist.html @@ -1,4 +1,4 @@ -设置浏览器范围 - Modern.js Builder +设置浏览器范围 - Modern.js Builder -Modern.js Builder

    设置浏览器范围

    -

    Builder 支持通过 Browserslist 来设置 Web 应用需要兼容的浏览器范围。

    +Modern.js Builder

    设置浏览器范围

    +

    Builder 支持通过 Browserslist 来设置 Web 应用需要兼容的浏览器范围。

    什么是 Browserslist

    由于各种浏览器对 ECMAScript 和 CSS 的支持程度不同,因此开发者需要根据业务需求,为 Web 应用设置正确的浏览器范围。

    -

    Browserslist 可以指定 Web 应用能够在哪些浏览器中正常运行,它提供了统一的配置格式,并且已经成为了前端社区中的标准。Browserslist 被 Autoprefixer, Babel, ESLint, PostCSS,SWC 和 Webpack 等库所使用。

    +

    Browserslist 可以指定 Web 应用能够在哪些浏览器中正常运行,它提供了统一的配置格式,并且已经成为了前端社区中的标准。Browserslist 被 Autoprefixer, Babel, ESLint, PostCSS,SWC 和 Webpack 等库所使用。

    当你通过 Browserslist 指定了一个浏览器范围时,Builder 会将 JavaScript 代码和 CSS 代码编译到指定的语法,并注入相应的 polyfill 代码。当你只需要兼容更现代的浏览器时,编译过程会引入更少的兼容代码和 polyfills,页面的性能会更好。

    比如,当你需要适配 IE11 浏览器时,Builder 会将代码编译至 ES5,并通过 core-js 注入 IE11 所需的 polyfill。

    什么是 polyfill

    polyfill 是一种用于解决浏览器兼容问题的技术。它用于模拟某些浏览器不支持的新特性,使得这些特性能在不支持的浏览器中正常工作。例如,如果某个浏览器不支持 Array.prototype.flat() 方法,那么我们可以使用 polyfill 来模拟这个方法,从而让代码在这个浏览器中也能正常工作。 @@ -40,7 +40,7 @@

    生效范

    .browserslistrc 文件默认只对浏览器端的构建产物生效,包括 webweb-worker 这两种产物类型。

    当你同时构建多种产物,比如 target 包含 webnode 两种产物时,只有 web 产物会受到 .browserslistrc 文件的影响。如果你希望对 node 产物进行修改,可以使用下方的 output.overrideBrowserslist 配置。

    使用 output.overrideBrowserslist 配置

    -

    除了上述的标准用法,Builder 还提供了 output.overrideBrowserslist 配置项,同样可以设置 Browserslist 的值。

    +

    除了上述的标准用法,Builder 还提供了 output.overrideBrowserslist 配置项,同样可以设置 Browserslist 的值。

    overrideBrowserslist 可以被设置为一个数组,数组的写法与 browserslistrc 配置是一样的,但比 browserslistrc 拥有更高的优先级。

    export default {
       output: {
    @@ -78,7 +78,7 @@ 

    > 0.5%
     not dead
     IE 11
    -

    以上浏览器范围会将代码编译至 ES5 规范,具体对应的浏览器列表可以查看 browserslist.dev

    +

    以上浏览器范围会将代码编译至 ES5 规范,具体对应的浏览器列表可以查看 browserslist.dev

    如果你不需要兼容 IE 11 浏览器,那么可以调整 Browserslist 来获得更高性能的产物,比如:

    • 设置为支持原生 ES Modules 的浏览器(推荐):
    • @@ -103,7 +103,7 @@

      last 2 versions > 0.2% not dead

    -

    以上浏览器范围会将代码编译至 ES5 规范,可以兼容市面上绝大多数移动端场景,具体对应的浏览器列表可以查看 browserslist.dev

    +

    以上浏览器范围会将代码编译至 ES5 规范,可以兼容市面上绝大多数移动端场景,具体对应的浏览器列表可以查看 browserslist.dev

    你也可以选择在 H5 场景使用 ES6 规范,这样会让页面的性能表现更好,对应的 Browserslist 如下:

    iOS >= 10
    @@ -112,7 +112,7 @@ 

    not dead not op_mini all

    Browserslist 默认值

    -

    Builder 会根据构建产物类型来设置不同的 Browserslist 默认值,但我们推荐你在项目中显式设置 Browserslist,这会让项目的兼容范围更加明确。

    +

    Builder 会根据构建产物类型来设置不同的 Browserslist 默认值,但我们推荐你在项目中显式设置 Browserslist,这会让项目的兼容范围更加明确。

    Web 产物

    Web 产物的默认值如下所示:

    > 0.01%
    @@ -128,14 +128,14 @@ 

    Web not dead not op_mini all

    Modern Web 产物

    -

    Modern Web 产物默认最低兼容到支持原生 ES Modules 的浏览器。

    +

    Modern Web 产物默认最低兼容到支持原生 ES Modules 的浏览器。

    chrome >= 61
     edge >= 16
     firefox >= 60
     safari >= 11
     ios_saf >= 11

    查询浏览器支持情况

    -

    在开发时,我们需要了解某些特性或 API 的浏览器支持情况,此时我们可以在 caniuse 网站上进行查询。

    -

    比如我们需要知道 Promise 的浏览器支持情况,只需要在 caniuse 中输入 Promise,就可以看到以下结果:

    +

    在开发时,我们需要了解某些特性或 API 的浏览器支持情况,此时我们可以在 caniuse 网站上进行查询。

    +

    比如我们需要知道 Promise 的浏览器支持情况,只需要在 caniuse 中输入 Promise,就可以看到以下结果:

    从上表可以看出,Promise 在 Chrome 33 和 iOS 8 中得到了原生支持,但是在 IE 11 中不被支持。

    \ No newline at end of file diff --git a/modern-js/builder/guide/advanced/custom-webpack-config.html b/modern-js/builder/guide/advanced/custom-webpack-config.html index a7f4bd9b63..0a6fdf6ef9 100644 --- a/modern-js/builder/guide/advanced/custom-webpack-config.html +++ b/modern-js/builder/guide/advanced/custom-webpack-config.html @@ -1,4 +1,4 @@ -修改 webpack 配置 - Modern.js Builder +修改 webpack 配置 - Modern.js Builder -Modern.js Builder

    修改 webpack 配置

    +Modern.js Builder

    修改 webpack 配置

    Builder 支持直接修改 webpack 配置对象,也支持通过 webpack-chain 来深度定制 webpack 配置。

    修改 webpack 配置对象

    -

    你可以使用 tools.webpack 来修改 webpack 配置对象。

    +

    你可以使用 tools.webpack 来修改 webpack 配置对象。

    export default {
       tools: {
         webpack: (config, { env }) => {
    @@ -27,11 +27,11 @@ 

    使用 webpack-chain

    webpack-chain 是区别于直接修改 webpack 配置的另一种配置修改方式,相较于直接修改 webpack 配置对象,webpack-chain 不仅支持链式调用,并且能够基于 id 来修改内置的 Rule 或 Plugin.

    tools.webpackChain 配置项

    -

    Builder 提供了 tools.webpackChain 配置项来修改 webpack-chain。

    +

    Builder 提供了 tools.webpackChain 配置项来修改 webpack-chain。

    tools.webpackChain 的值为 Function 类型,接收两个参数:

    • 第一个参数为 webpack-chain 实例对象,你可以通过这个实例来修改默认的 webpack 配置。
    • -
    • 第二个参数为一个工具集合,包括 envisProdCHAIN_ID 等。
    • +
    • 第二个参数为一个工具集合,包括 envisProdCHAIN_ID 等。

    下面是一个基本示例:

    export default {
    @@ -168,4 +168,4 @@ 

    }, }, };

    -

    以上是一些常见的配置示例,完整的 webpack-chain API 请见 webpack-chain 文档

    \ No newline at end of file +

    以上是一些常见的配置示例,完整的 webpack-chain API 请见 webpack-chain 文档

    \ No newline at end of file diff --git a/modern-js/builder/guide/advanced/define.html b/modern-js/builder/guide/advanced/define.html index 5331a808af..40eed8da69 100644 --- a/modern-js/builder/guide/advanced/define.html +++ b/modern-js/builder/guide/advanced/define.html @@ -1,4 +1,4 @@ -环境变量 - Modern.js Builder +环境变量 - Modern.js Builder -Modern.js Builder

    环境变量

    +Modern.js Builder

    环境变量

    Builder 支持在编译过程中向代码中注入环境变量或表达式,这对于区分运行环境、注入常量值等场景很有帮助。本章节会介绍环境变量的使用方式。

    默认环境变量

    process.env.NODE_ENV

    @@ -29,11 +29,11 @@

    pro

    process.env.ASSET_PREFIX

    你可以在运行时代码中使用 process.env.ASSET_PREFIX 来访问静态资源的前缀。

      -
    • 在开发环境下,它等同于 dev.assetPrefix 设置的值。
    • -
    • 在生产环境下,它等同于 output.assetPrefix 设置的值。
    • +
    • 在开发环境下,它等同于 dev.assetPrefix 设置的值。
    • +
    • 在生产环境下,它等同于 output.assetPrefix 设置的值。
    • Builder 会自动移除 assetPrefix 尾部的斜线符号,以便于进行字符串拼接。
    -

    比如,我们通过 output.copy 配置,将 static/icon.png 图片拷贝到 dist 目录下:

    +

    比如,我们通过 output.copy 配置,将 static/icon.png 图片拷贝到 dist 目录下:

    export default {
       dev: {
         assetPrefix: '/',
    @@ -50,7 +50,7 @@ 

    在生产环境,以上代码会被编译为:

    const Image = <img src={`https://example.com/static/icon.png`} />;

    使用 define 配置项

    -

    通过配置 source.define 选项,你可以在构建时将代码中的变量替换成其它值或者表达式。

    +

    通过配置 source.define 选项,你可以在构建时将代码中的变量替换成其它值或者表达式。

    define 类似于其它一些语言提供的宏定义能力,但得益于 JavaScript 强大的运行时表达能力,通常不需要像那些语言一样将其用作复杂代码的生成器。它常用于在构建环境向运行时传递环境变量等简单信息,或是辅助 Builder 进行 Tree Shaking 等操作。

    替换表达式

    define 最基础的用途是在构建时替换代码中的表达式。

    @@ -64,7 +64,7 @@

    替换 };

    需要注意的是这里提供的值必须是 JSON 字符串,例如 process.env.NODE_ENV 的值为 "production" 则传入的值应当是 "\"production\"" 才能够正确被处理。

    同理 { foo: "bar" } 也应该被转换成 "{\"foo\":\"bar\"}",如果直接传入原始对象则意味着把表达式 process.env.NODE_ENV.foo 替换为标识符 bar

    -

    source.define 的具体行为请参考 API 文档

    +

    source.define 的具体行为请参考 API 文档

    TIP

    以上例子中的环境变量 NODE_ENV 已经由 Builder 自动注入,通常你不需要手动配置它的值。

    process.env 注入方式

    @@ -83,7 +83,7 @@

    因此,请按照实际需求来注入 process.env 上的环境变量,避免全量注入。

    设置环境变量

    -

    针对设置环境变量的高频场景,Builder 还提供了 source.globalVars 配置用于简化配置,它是 source.define 的一个语法糖,唯一的区别是 source.globalVars 会自动将传入的值进行 JSON 序列化处理,这使得设置环境变量的值更容易,避免大量书写 JSON.stringify(...) 转换语句:

    +

    针对设置环境变量的高频场景,Builder 还提供了 source.globalVars 配置用于简化配置,它是 source.define 的一个语法糖,唯一的区别是 source.globalVars 会自动将传入的值进行 JSON 序列化处理,这使得设置环境变量的值更容易,避免大量书写 JSON.stringify(...) 转换语句:

    export default {
       source: {
         globalVars: {
    @@ -145,7 +145,7 @@ 

    Tre };

    未用到的组件不会被打包到产物中,它们的外部依赖也会对应地被优化,最终即可得到体积和性能都更优的产物代码。

    源码内联测试

    -

    Vitest 支持将测试写在源码文件内,能够在不导出的情况下测试私有功能的行为,并且通过设置 Define 来在正式构建时剔除测试代码。详细指南请参考 Vitest 官方文档

    +

    Vitest 支持将测试写在源码文件内,能够在不导出的情况下测试私有功能的行为,并且通过设置 Define 来在正式构建时剔除测试代码。详细指南请参考 Vitest 官方文档

    // 函数实现
     function add(...args) {
       return args.reduce((a, b) => a + b, 0);
    diff --git a/modern-js/builder/guide/advanced/hmr.html b/modern-js/builder/guide/advanced/hmr.html
    index 6e01305851..180c14608b 100644
    --- a/modern-js/builder/guide/advanced/hmr.html
    +++ b/modern-js/builder/guide/advanced/hmr.html
    @@ -1,4 +1,4 @@
    -模块热更新 - Modern.js Builder
    +模块热更新 - Modern.js Builder
     
    -Modern.js Builder

    模块热更新

    +Modern.js Builder

    模块热更新

    模块热更新(HMR - hot module replacement)功能会在应用程序运行过程中,替换、添加或删除模块,而无需重新加载整个页面。主要是通过以下几种方式,来显著加快开发速度:

    • 保留在完全重新加载页面期间丢失的应用程序状态。
    • @@ -17,7 +17,7 @@

    启用 HMR

    Builder 已内置了对 HMR 的支持,在开发环境下默认启用。

    -

    如果你不需要使用 HMR 能力,可以将 dev.hmr 设置为 false,此时将不再提供热更新和 react-refresh 功能。

    +

    如果你不需要使用 HMR 能力,可以将 dev.hmr 设置为 false,此时将不再提供热更新和 react-refresh 功能。

    export default {
       dev: {
         hmr: false,
    @@ -60,6 +60,6 @@ 

    Live reloading: 修改文件之后,webpack 重新编译,并强制刷新浏览器,属于全局(整个应用)刷新,相当于 window.location.reload()
  • Hot reloading: 修改文件之后,webpack 重新编译对应模块,刷新时可以记住应用的状态,从而做到局部刷新,即热更新。
  • -

    DevServer 提供了 hotliveReload 这两个配置项来控制更新方式。当 hot 和 liveReload 同时开启时,DevServer 会优先尝试使用 hot 模式 (HMR),如果 HMR 更新失败后,会降级到重新加载页面。

    +

    DevServer 提供了 hotliveReload 这两个配置项来控制更新方式。当 hot 和 liveReload 同时开启时,DevServer 会优先尝试使用 hot 模式 (HMR),如果 HMR 更新失败后,会降级到重新加载页面。

    常见问题

    -

    请参考 热更新问题

    \ No newline at end of file +

    请参考 热更新问题

    \ No newline at end of file diff --git a/modern-js/builder/guide/advanced/rem.html b/modern-js/builder/guide/advanced/rem.html index f4010cb858..944305258c 100644 --- a/modern-js/builder/guide/advanced/rem.html +++ b/modern-js/builder/guide/advanced/rem.html @@ -1,4 +1,4 @@ -开启 REM 适配 - Modern.js Builder +开启 REM 适配 - Modern.js Builder -Modern.js Builder

    开启 REM 适配

    -

    Builder 支持通过 output.convertToRem 一键开启 REM 适配能力,能够根据屏幕大小来动态调整字体大小,让网页在不同大小的屏幕上都能够自适应显示。

    +Modern.js Builder

    开启 REM 适配

    +

    Builder 支持通过 output.convertToRem 一键开启 REM 适配能力,能够根据屏幕大小来动态调整字体大小,让网页在不同大小的屏幕上都能够自适应显示。

    开启 REM 的适配能力

    开启 convertToRem 后,会对页面进行如下两个操作:

      diff --git a/modern-js/builder/guide/advanced/rspack-start.html b/modern-js/builder/guide/advanced/rspack-start.html index b8af3d970b..0d4f59eb34 100644 --- a/modern-js/builder/guide/advanced/rspack-start.html +++ b/modern-js/builder/guide/advanced/rspack-start.html @@ -1,4 +1,4 @@ -使用 Rspack - Modern.js Builder +使用 Rspack - Modern.js Builder -Modern.js Builder

      使用 Rspack

      +Modern.js Builder

      使用 Rspack

      这篇文档会向你介绍如何在 Builder 中开启 Rspack 构建模式。

      什么是 Rspack
      -

      Rspack 是一个基于 Rust 的高性能 Web 构建工具,具备与 webpack 生态系统的互操作性,可以被 webpack 项目低成本集成,并提供更好的构建性能。

      +

      Rspack 是一个基于 Rust 的高性能 Web 构建工具,具备与 webpack 生态系统的互操作性,可以被 webpack 项目低成本集成,并提供更好的构建性能。

      相较于 webpack,Rspack 的构建性能有明显提升,除了 Rust 带来的语言优势,这也来自于它的并行架构和增量编译等特性。经过 benchmark 验证,Rspack 可以带来 5 ~ 10 倍编译性能的提升。

      启用 Rspack

      在 Modern.js 框架中启用

      -

      Modern.js 框架默认使用 webpack 作为打包工具。如果希望启用 Rspack 作为打包工具,可参考:使用 Rspack

      +

      Modern.js 框架默认使用 webpack 作为打包工具。如果希望启用 Rspack 作为打包工具,可参考:使用 Rspack

      在前端框架中接入

      -

      如果你基于 Builder 开发了一个前端框架,接入 rspack-provider 和 接入 webpack-provider 的方式类似,只需要把依赖从 @modern-js/builder-webpack-provider 改为 @modern-js/builder-rspack-provider 即可。

      +

      如果你基于 Builder 开发了一个前端框架,接入 rspack-provider 和 接入 webpack-provider 的方式类似,只需要把依赖从 @modern-js/builder-webpack-provider 改为 @modern-js/builder-rspack-provider 即可。

      modern.config.ts
      import { createBuilder } from '@modern-js/builder';
       import { builderRspackProvider } from '@modern-js/builder-rspack-provider';
       
      @@ -44,7 +44,7 @@ 

      Rspack 正在积极改善上述问题,并计划在未来的版本中逐步解决它们。我们建议在决定是否使用 Rspack 之前,评估你的项目需求和风险承受能力。如果你的项目对稳定性和性能要求较高,可以先选择更成熟的 webpack。如果你愿意尝试新的工具并为其发展做出贡献,我们欢迎你使用 Rspack,并提供反馈和报告问题,以帮助改进它的稳定性和功能。

      从 webpack 迁移到 Rspack

      Builder 旨在消除不同打包工具之间的主要差异,帮助用户以较低成本进行迁移。但由于各个打包工具提供的能力不同,你仍需要了解其中的部分差异。

      -

      本文将从 Builder 的角度介绍 webpack 和 Rspack 之间的区别。如果需要了解更深层次的差异,请参考 Rspack 文档

      +

      本文将从 Builder 的角度介绍 webpack 和 Rspack 之间的区别。如果需要了解更深层次的差异,请参考 Rspack 文档

      1. Builder 配置差异

      目前,Builder 内大部分的配置项已经适配了 Rspack,但仍有部分配置在支持中。

      Source Config

      @@ -53,9 +53,9 @@

      Source Confi

      不支持的配置项及能力包括:

      Html Config

      @@ -68,7 +68,7 @@

      Security C

      不支持的配置项及能力包括:

      Dev Config

      @@ -81,8 +81,8 @@

      Output Confi

      不支持的配置项及能力包括:

      Experiments Config

      @@ -90,7 +90,7 @@

      Experim

      不支持的配置项及能力包括:

      Performance Config

      @@ -98,8 +98,8 @@

      Perform

      不支持的配置项及能力包括:

      Tools Config

      @@ -107,17 +107,17 @@

      Tools Config<

      不支持的配置项包括:

      TIP

      除上述配置外,一些已支持的配置可能存在能力差异,请参考各配置 API 获取具体差异信息。

      2. 从 tools.webpackChain 迁移至 tools.bundlerChain

      -

      Builder 支持通过 bundlerChain 来修改 Rspack config。通过 bundlerChain 修改的配置,在 webpack 和 Rspack 构建时均可生效。

      +

      Builder 支持通过 bundlerChain 来修改 Rspack config。通过 bundlerChain 修改的配置,在 webpack 和 Rspack 构建时均可生效。

      export default {
         tools: {
       -   webpackChain: (chain, { env }) => {
      @@ -131,10 +131,10 @@ 

      TIP

      bundlerChain 只为 Rspack & webpack 配置提供一致的 api 修改方式,实际 plugin / loader 是否可用,需要看 Rspack / webpack 实际支持情况。

      CHAIN_ID 差异

      因为 webpack 和 Rspack 的一些实现差异,所以在规则配置上会有些不同。

      -

      可通过 tools.bundlerChain#CHAIN_ID 查看所有在 Rspack & webpack 中都支持的规则。

      +

      可通过 tools.bundlerChain#CHAIN_ID 查看所有在 Rspack & webpack 中都支持的规则。

      3. 从 tools.webpack 迁移至 tools.rspack

      -

      BundlerChain 只支持修改 Rspack & webpack 交集部分,更多 Rspack 独有功能,需要通过 tools.rspack 修改。

      -

      在修改 Rspack 配置之前,你可能需要了解 Rspack 和 Webpack 的配置兼容性

      +

      BundlerChain 只支持修改 Rspack & webpack 交集部分,更多 Rspack 独有功能,需要通过 tools.rspack 修改。

      +

      在修改 Rspack 配置之前,你可能需要了解 Rspack 和 Webpack 的配置兼容性

      export default {
         tools: {
       -   webpack: (config, { env }) => {
      @@ -146,7 +146,7 @@ 

      }, }, };

      -

      关于 Rspack 的详细配置信息,请参考 Rspack 官网

      +

      关于 Rspack 的详细配置信息,请参考 Rspack 官网

      4. Babel 配置迁移

      Rspack 默认会使用 SWC 进行转译和压缩,因此,在启用 Rspack 构建时,babel-loader 默认不会被启用。

      对于大部分常见的 Babel 插件,你可以在 Rspack 中找到对应的替代品,同时 Builder 也提供了一些相应的配置项。

      @@ -161,23 +161,23 @@

      4 @babel/preset-env -builtins.presetEnv -设置浏览器范围
      浏览器兼容性 +builtins.presetEnv +设置浏览器范围
      浏览器兼容性 @babel/preset-react -builtins.react -模块热更新 +builtins.react +模块热更新 @emotion/babel-plugin -builtins.emotion +builtins.emotion 暂无 babel-plugin-import -builtins.pluginImport -source.transformImport +builtins.pluginImport +source.transformImport babel-plugin-lodash @@ -196,24 +196,24 @@

      4 -
      TIP

      在使用 Rspack 构建时,仍然支持通过 tools.babel 配置 Babel 插件,但会产生额外的编译开销,在一定程度上拖慢 Rspack 构建速度。 +

      TIP

      在使用 Rspack 构建时,仍然支持通过 tools.babel 配置 Babel 插件,但会产生额外的编译开销,在一定程度上拖慢 Rspack 构建速度。

      5. SWC 配置支持

      -

      Rspack 中已内置了一部分的 swc 配置支持,如 builtins.react 等,可参考 Builtins

      -

      暂不支持在 Rspack 中添加 swc 插件和更多自定义配置,相关需求可追踪对应 issue 进度

      +

      Rspack 中已内置了一部分的 swc 配置支持,如 builtins.react 等,可参考 Builtins

      +

      暂不支持在 Rspack 中添加 swc 插件和更多自定义配置,相关需求可追踪对应 issue 进度

      6. Webpack Plugin 插件迁移

      目前 Rspack 中兼容的 webpack 插件有限,当你的项目中有用到以下插件(或间接依赖)时,需要暂时将该插件移除或使用替代方案,否则不支持切换至 Rspack 构建:

      -

      具体插件支持情况可参考:Plugin 兼容情况

      -

      未列出的插件可根据 Rspack Plugin API 支持情况 自行判断。

      +

      具体插件支持情况可参考:Plugin 兼容情况

      +

      未列出的插件可根据 Rspack Plugin API 支持情况 自行判断。

      7. CSS Modules 配置迁移

      -

      Rspack 模式下不支持通过 tools.cssLoader 修改 CSS Modules 配置,Builder 提供了 output.cssModules 配置项,用来抹平 Rspack 模式和 webpack 模式下的实现差异。

      +

      Rspack 模式下不支持通过 tools.cssLoader 修改 CSS Modules 配置,Builder 提供了 output.cssModules 配置项,用来抹平 Rspack 模式和 webpack 模式下的实现差异。

      export default {
       +  output: {
       +    cssModules: {
      @@ -237,12 +237,12 @@ 

      $ RSPACK_PROFILE=ALL pnpm build

      执行该命令后会在当前产物目录下生成一个 rspack-profile-${timestamp} 文件夹,该文件夹下会包含 logging.jsontrace.jsonjscpuprofile.json 三个文件

        -
      • trace.json:使用 tracing 细粒度地记录了 Rust 侧各个阶段的耗时,可以使用 ui.perfetto.dev 进行查看
      • -
      • jscpuprofile.json:使用 Node.js inspector 细粒度地记录了 JavaScript 侧的各个阶段的耗时,可以使用 speedscope.app 进行查看
      • +
      • trace.json:使用 tracing 细粒度地记录了 Rust 侧各个阶段的耗时,可以使用 ui.perfetto.dev 进行查看
      • +
      • jscpuprofile.json:使用 Node.js inspector 细粒度地记录了 JavaScript 侧的各个阶段的耗时,可以使用 speedscope.app 进行查看
      • logging.json:包含一些日志信息,粗粒度地记录了构建的各个阶段耗时

      对比 Rspack CLI

      -

      Builder Rspack 构建模式对比 Rspack CLI 添加了很多开箱即用的能力,同时,这些能力的封装会带来一定程度上的性能开销和行为表现上的差异:

      +

      Builder Rspack 构建模式对比 Rspack CLI 添加了很多开箱即用的能力,同时,这些能力的封装会带来一定程度上的性能开销和行为表现上的差异:

      @@ -254,48 +254,48 @@

      - - + + - + - + - - + + - + - + - + - - + +
      浏览器兼容性Builder 会根据构建产物类型来设置不同的 Browserslist 默认值Builder 会根据构建产物类型来设置不同的 Browserslist 默认值
      SourceMap 生成 Builder 默认根据环境生成不同的 SourceMap (Rspack CLI 中默认是 false)
      SVG 转 React 组件 Builder 默认支持在 React 组件中引用 SVG 作为组件
      按需引入常用组件库当项目中安装了 Ant DesignArco Design 组件库时,Builder 会自动添加对应的按需引入能力当项目中安装了 Ant DesignArco Design 组件库时,Builder 会自动添加对应的按需引入能力
      默认开启 TypeScript 类型检查 Builder 会默认通过 TS Checker 检查类型问题
      默认集成 PostCSS Builder 内默认开启 PostCSS 编译,并内置 autoprefixer 等多个插件
      使用 @rspack/html-plugin Builder 内默认集成 @rspack/html-plugin 以支持更多 HTML 模版功能 (Rspack CLI 中默认使用 builtins.html)
      DevServerBuilder 内基于 webpack-dev-middleware 实现 DevServer (Rspack CLI 使用 @rspack/dev-server)Builder 内基于 webpack-dev-middleware 实现 DevServer (Rspack CLI 使用 @rspack/dev-server)

      以上能力均提供可调整的配置选项,可以根据项目实际情况按需进行调整。

      -

      更多内置能力,可参考 功能导航

      +

      更多内置能力,可参考 功能导航

      常见问题

      启用 Rspack 构建后,性能没有预期的快?

      通常情况下,启用 Rspack 后,相较 Webpack 会有 5 到 10 倍的编译性能提升。

      @@ -303,20 +303,20 @@

      使用依赖 Babel 实现的配置项或插件

      在使用 Rspack 构建时,Builder 默认不会启用 babel-loader。但当项目中使用到依赖 Babel 实现的配置项或插件时,会额外添加 babel-loader 进行文件转译:

      -

      你可以通过开启调试模式 来查看最终生成的 Rspack 配置中是否存在 Babel 插件。

      +

      你可以通过开启调试模式 来查看最终生成的 Rspack 配置中是否存在 Babel 插件。

      开启 TypeScript 类型检查

      Builder 构建时会默认开启 TypeScript 类型检查。在大型项目中,类型检查的耗时可能远超过 Rspack 本身的构建耗时,因此在生产环境构建时,该行为会在一定程度上拖慢构建速度。

      -

      此时,可通过 output.disableTsChecker 关闭类型检查,以查看排除类型检查后 Rspack 性能是否符合预期。

      +

      此时,可通过 output.disableTsChecker 关闭类型检查,以查看排除类型检查后 Rspack 性能是否符合预期。

      大量 Less 文件

      目前 Less 文件使用基于 JavaScript 实现的 less-loader 进行处理,未提供 Rust 版本,因此在处理大量 Less 文件时会拖累构建性能。

      -
      TIP

      在使用 Arco Design 等组件库时,请尽量避免全量引入 Less 样式。你可以改为按需引入,或直接引入 CSS 样式。 +

      TIP

      在使用 Arco Design 等组件库时,请尽量避免全量引入 Less 样式。你可以改为按需引入,或直接引入 CSS 样式。

      大量 SVG 文件
      -

      Builder 默认支持将 SVG 资源作为 React 组件使用,这会产生一定的性能开销。如果你不需要此能力,可以将 output.disableSvgr 设置为 true 来关闭此行为,以提升构建性能。

      +

      Builder 默认支持将 SVG 资源作为 React 组件使用,这会产生一定的性能开销。如果你不需要此能力,可以将 output.disableSvgr 设置为 true 来关闭此行为,以提升构建性能。

      组件库未按需引入
      -

      默认情况下,在使用 Ant DesignArco Design 组件库时,Builder 会自动开启按需引入功能,默认配置可参考 source.transformImport

      -

      在使用其他组件库时,如果该组件库支持按需引入,我们推荐优先通过 source.transformImport 配置按需引入。

      \ No newline at end of file +

      默认情况下,在使用 Ant DesignArco Design 组件库时,Builder 会自动开启按需引入功能,默认配置可参考 source.transformImport

      +

      在使用其他组件库时,如果该组件库支持按需引入,我们推荐优先通过 source.transformImport 配置按需引入。

      \ No newline at end of file diff --git a/modern-js/builder/guide/advanced/storybook.html b/modern-js/builder/guide/advanced/storybook.html index bab1ef7b21..b794dc4430 100644 --- a/modern-js/builder/guide/advanced/storybook.html +++ b/modern-js/builder/guide/advanced/storybook.html @@ -1,4 +1,4 @@ -使用 Storybook - Modern.js Builder +使用 Storybook - Modern.js Builder -Modern.js Builder

    升级 @storybook/addon-* 系列依赖,升级到 7 版本。

    -

    最后按照 Storybook 官网文档,对一些 breaking change 做相应的更新,例如 stories 的写法,MDX 的写法等,参考storybook 迁移文档

    +

    最后按照 Storybook 官网文档,对一些 breaking change 做相应的更新,例如 stories 的写法,MDX 的写法等,参考storybook 迁移文档

    在项目的 package.json 中添加相应的命令

    {
       "scripts": {
    @@ -59,7 +59,7 @@ 

    }

    使用 npm run storybook 即可启动

    原生 Storybook 项目,没有使用 Modern.js

    -

    若当前 Storybook 版本还是 6,需要先按照 Storybook 官网文档升级到版本 7 ,参考storybook 迁移文档

    +

    若当前 Storybook 版本还是 6,需要先按照 Storybook 官网文档升级到版本 7 ,参考storybook 迁移文档

    .storybook/main.js
    const config = {
     -  framework: '@storybook/react-webapck5',
     +  framework: {
    @@ -68,9 +68,9 @@ 

    }; export default config;

    -

    Modern.js 的配置文件默认为 modern.config.(j|t)s,配置请查看 builder 配置

    +

    Modern.js 的配置文件默认为 modern.config.(j|t)s,配置请查看 builder 配置

    若原来项目中包含了 Babel 等配置,需要对应的写在 modern 配置中,大部分 Babel 配置已经包含进了 Modern.js。

    -

    安装完成后进行相应的配置

    +

    安装完成后进行相应的配置

    开启 Rspack 构建

    Rspack 构建速度非常快,在 Modern.js 中只需要如下配置即可使用 Rspack 作为构建工具。

    .storybook/main.js
    const config = {
    @@ -151,9 +151,9 @@ 

    builderC

    命令行

    @modern-js/storybook 代理了部分 storybook cli 的命令。

    storybook dev

    -

    启动 Storybook,详情请看 https://storybook.js.org/docs/react/api/cli-options#dev

    +

    启动 Storybook,详情请看 https://storybook.js.org/docs/react/api/cli-options#dev

    storybook build

    -

    对 Storybook 进行生产环境构建,详情请看 https://storybook.js.org/docs/react/api/cli-options#build

    +

    对 Storybook 进行生产环境构建,详情请看 https://storybook.js.org/docs/react/api/cli-options#build

    配置文件

    配置文件中除了 Modern.js builder 配置还包含一个额外的字段,builderPlugins,方便使用 builder 插件,例如启用 SWC 编译。

    modern.config.ts
    import { defineConfig } from '@modern-js/storybook';
    @@ -174,8 +174,8 @@ 

    收益Trouble Shooting

    1. -

      使用 Modern.js builder 时不会读取 babel.config.json 等配置文件,因此 babel 配置需要在 tools.babel 中进行配置。 -同样的 webpack 配置需要写在 tools.webpacktools.webpackChain 中。

      +

      使用 Modern.js builder 时不会读取 babel.config.json 等配置文件,因此 babel 配置需要在 tools.babel 中进行配置。 +同样的 webpack 配置需要写在 tools.webpacktools.webpackChain 中。

    2. 如果发现构建速度很慢,请检查是否开启了自动文档生成功能,如果想要最高的性能,请配置为 react-docgenreact-docgenreact-docgen-typescript 的区别是,前者基于 Babel 实现,后者基于 TypeScript 实现,前者性能会更好,但类型推断能力更弱。如果使用 Rspack 构建,则只支持 react-docgen

      diff --git a/modern-js/builder/guide/basic/build-target.html b/modern-js/builder/guide/basic/build-target.html index e4eb124510..d963202c30 100644 --- a/modern-js/builder/guide/basic/build-target.html +++ b/modern-js/builder/guide/basic/build-target.html @@ -1,4 +1,4 @@ -构建产物类型 - Modern.js Builder +构建产物类型 - Modern.js Builder -Modern.js Builder

      构建产物类型

      +Modern.js Builder

      构建产物类型

      Builder 支持多种构建产物类型,分别适用于不同的目标运行环境。在设置正确的产物类型后,Builder 会针对该环境优化打包结果,在构建过程中启用一些对应的插件或者配置。

      -

      你可以通过 createBuilder 方法的 target 参数来设置产物类型。

      +

      你可以通过 createBuilder 方法的 target 参数来设置产物类型。

      默认产物

      默认情况下,target 会被设置为 'web',并构建出运行在浏览器环境里的产物

      -

      同时,Builder 会读取项目中的 Browserslist 配置,以确定需要兼容的浏览器范围。

      +

      同时,Builder 会读取项目中的 Browserslist 配置,以确定需要兼容的浏览器范围。

      可选类型

      除了 'web' 外,你还可以将 target 设置为以下值:

        @@ -43,7 +43,7 @@

        Node

      TIP

      如果触发了并行构建,比如同时构建 web 产物和 node 产物,那么上述处理不会影响 web 产物,web 产物所需的 HTML、CSS 等文件依然会正确生成。

      Web Worker 产物

      -

      指运行在 Web Worker 环境的产物。

      +

      指运行在 Web Worker 环境的产物。

      Web Worker

      Web Workers 是一种 JavaScript API,它允许网页在后台线程中执行脚本,与主线程(网页)分离。这意味着,您可以使用 Web Workers 来执行计算密集型或长时间运行的任务,而无需阻塞主线程,进而影响网页的性能。

      target 设置为 'web-worker' 时,Builder 会进行以下处理:

    配置

    -

    Builder CLI 默认会读取项目根目录下的 builder.config.ts 配置文件,你可以在配置文件中使用 Builder 提供的所有配置项

    +

    Builder CLI 默认会读取项目根目录下的 builder.config.ts 配置文件,你可以在配置文件中使用 Builder 提供的所有配置项

    builder.config.ts
    import { defineConfig } from '@modern-js/builder-cli';
     
     export default defineConfig({
    diff --git a/modern-js/builder/guide/basic/builder-config.html b/modern-js/builder/guide/basic/builder-config.html
    index eb065d4ce8..6ee2bd10ed 100644
    --- a/modern-js/builder/guide/basic/builder-config.html
    +++ b/modern-js/builder/guide/basic/builder-config.html
    @@ -1,4 +1,4 @@
    -Builder 配置项 - Modern.js Builder
    +Builder 配置项 - Modern.js Builder
     
    -Modern.js Builder

    Builder 配置项

    +Modern.js Builder

    Builder 配置项

    Builder 提供了丰富的配置项,以帮助使用者对构建行为进行定制。

    配置分类

    Builder 中的配置可以分为以下几类:

    -

    你可以在 API Reference 页面找到所有配置项的详细说明。

    +

    你可以在 API Reference 页面找到所有配置项的详细说明。

    配置默认值

    Builder 为每个配置项预设了一个默认值,默认值可以满足大部分使用场景。同时,上层框架也会基于垂直场景的需求,覆盖一部分配置的默认值。

    因此,在大多数情况下,你不需要声明任何 Builder 配置,直接开箱使用即可。

    使用配置

    在上层框架中使用

    当你使用一个基于 Builder 的上层框架时,你可以直接通过框架的配置文件来定义 Builder 配置,上层框架会自动将相关配置透传给 Builder。

    -

    比如在 Modern.js 框架中,你可以直接在 modern.config.ts 文件里定义 Builder 的 source.alias 配置:

    +

    比如在 Modern.js 框架中,你可以直接在 modern.config.ts 文件里定义 Builder 的 source.alias 配置:

    modern.config.ts
    export default {
       source: {
         alias: {
    @@ -45,7 +45,7 @@ 

    // some configs }, });

    -

    关于 Node API 的完整用法,请参考 API - createBuilder

    +

    关于 Node API 的完整用法,请参考 API - createBuilder

    与框架配置的关系

    通常来说,Builder 配置是框架配置的子集。

    Builder 配置只处理构建相关行为,而框架配置涵盖的范围更大,还包括运行时、服务端、部署等方面,因此框架是在 Builder 配置的基础上扩展出来的。

    @@ -59,4 +59,4 @@

    调 - Webpack Config (web): /Project/demo/dist/webpack.config.web.js

    打开生成的 /dist/builder.config.js 文件,即可查看 Builder 配置的完整内容。

    -

    关于调试模式的完整介绍,请查看 开启调试模式 章节。

    \ No newline at end of file +

    关于调试模式的完整介绍,请查看 开启调试模式 章节。

    \ No newline at end of file diff --git a/modern-js/builder/guide/basic/css-usage.html b/modern-js/builder/guide/basic/css-usage.html index 848e86f2b0..76d9e6017a 100644 --- a/modern-js/builder/guide/basic/css-usage.html +++ b/modern-js/builder/guide/basic/css-usage.html @@ -1,4 +1,4 @@ -引用样式资源 - Modern.js Builder +引用样式资源 - Modern.js Builder -Modern.js Builder

    引用样式资源

    +Modern.js Builder

    引用样式资源

    Builder 内置多种常用的样式资源处理方式,包括 Less / Sass 预处理器、PostCSS、CSS Modules、CSS 内联和 CSS 压缩。

    除此之外,Builder 也提供了多个配置项来自定义样式资源的处理规则。

    使用 Less、Sass 和 Stylus

    Builder 内置了社区流行的 CSS 预处理器,包括 Less 和 Sass。

    -

    默认情况下,你不需要对 Less 和 Sass 进行任何配置。如果你有自定义 loader 配置的需求,可以通过配置 tools.lesstools.sass 来进行设置。

    -

    你也可以在 Builder 中使用 Stylus,只需要安装 Builder 提供的 Stylus 插件即可,使用方式请参考 Stylus 插件

    +

    默认情况下,你不需要对 Less 和 Sass 进行任何配置。如果你有自定义 loader 配置的需求,可以通过配置 tools.lesstools.sass 来进行设置。

    +

    你也可以在 Builder 中使用 Stylus,只需要安装 Builder 提供的 Stylus 插件即可,使用方式请参考 Stylus 插件

    使用 PostCSS

    -

    Builder 内置了 PostCSS 来转换 CSS 代码。你可以通过 tools.postcss 来配置 postcss-loader。

    +

    Builder 内置了 PostCSS 来转换 CSS 代码。你可以通过 tools.postcss 来配置 postcss-loader。

    export default {
       tools: {
         postcss: opts => {
    @@ -30,8 +30,8 @@ 

    内置 PostCSS 插件

    Builder 内置了一些 PostCSS 插件,会对 CSS 进行以下转换:

    .my-table {
       & td {
    @@ -43,12 +43,12 @@ 

    } }

    :root {
       --main-bg-color: pink;
    @@ -59,12 +59,12 @@ 

    }

    CSS 压缩

    通常情况下,在生产环境我们会将 CSS、JS 等静态资源进行压缩,以达到更好的传输效率。

    -

    Builder 通过 css-minimizer-webpack-plugin 在生产环境构建时自动压缩 CSS 代码(底层使用的压缩工具为 cssnano)。

    -

    你可以通过 tools.minifyCss 配置项来修改 css-minimizer-webpack-plugin的配置。

    +

    Builder 通过 css-minimizer-webpack-plugin 在生产环境构建时自动压缩 CSS 代码(底层使用的压缩工具为 cssnano)。

    +

    你可以通过 tools.minifyCss 配置项来修改 css-minimizer-webpack-plugin的配置。

    关于 cssnano

    cssnano 是一个用于优化和压缩 CSS 文件的工具。它通过删除未使用的规则、合并相同的规则、移除注释和空白符以及转换长度单位等方式来减小 CSS 文件的体积,从而提升网站的加载速度。

    内联 CSS 文件

    默认情况下,Builder 会把 CSS 提取为独立的 .css 文件,并输出到构建产物目录。

    -

    如果你希望将样式内联到 JS 文件中,可以将 output.disableCssExtract 设置为 true 来禁用 CSS 提取逻辑。当浏览器请求到 JS 文件后,JS 将动态地向 HTML 插入 <style> 标签,以此加载 CSS 样式。

    +

    如果你希望将样式内联到 JS 文件中,可以将 output.disableCssExtract 设置为 true 来禁用 CSS 提取逻辑。当浏览器请求到 JS 文件后,JS 将动态地向 HTML 插入 <style> 标签,以此加载 CSS 样式。

    export default {
       output: {
         disableCssExtract: true,
    diff --git a/modern-js/builder/guide/basic/html-template.html b/modern-js/builder/guide/basic/html-template.html
    index 0bb47a0ba8..0d7f622938 100644
    --- a/modern-js/builder/guide/basic/html-template.html
    +++ b/modern-js/builder/guide/basic/html-template.html
    @@ -1,4 +1,4 @@
    -配置 HTML 模板 - Modern.js Builder
    +配置 HTML 模板 - Modern.js Builder
     
    -Modern.js Builder

    配置 HTML 模板

    +Modern.js Builder

    配置 HTML 模板

    在构建的过程中,Builder 会基于 HTML 模板文件和模板参数进行编译,生成若干份 HTML 文件。

    Builder 提供了一些配置项来对 HTML 模板进行设置。通过本章节你可以了解到这些配置项的基本用法。

    设置模板文件

    通常来说,HTML 模板文件是由上层框架预先定义的。

    -

    比如在 Modern.js 框架中,默认会预设一份 HTML 模板,同时也支持用户自定义模板的内容。你可以阅读 「Modern.js - HTML 模板」 章节来了解相关内容。

    -

    在 Builder 中,你可以使用 html.templatehtml.templateByEntries 配置项来设置自定义的 HTML 模板文件。

    +

    比如在 Modern.js 框架中,默认会预设一份 HTML 模板,同时也支持用户自定义模板的内容。你可以阅读 「Modern.js - HTML 模板」 章节来了解相关内容。

    +

    在 Builder 中,你可以使用 html.templatehtml.templateByEntries 配置项来设置自定义的 HTML 模板文件。

    export default {
       html: {
         template: './static/index.html',
       },
     };

    设置页面标题

    -

    你可以通过 html.titlehtml.titleByEntries 配置项来设置 HTML 的 <title> 标签。

    +

    你可以通过 html.titlehtml.titleByEntries 配置项来设置 HTML 的 <title> 标签。

    当你的项目中只有一个页面时,直接使用 html.title 设置即可:

    export default {
       html: {
    @@ -38,21 +38,21 @@ 

    }, };

    设置页面图标

    -

    Builder 支持设置 favicon 图标 和 iOS 系统下的 apple-touch-icon 图标。

    -

    你可以通过 html.faviconhtml.faviconByEntries 配置项来设置 favicon 图标。

    +

    Builder 支持设置 favicon 图标 和 iOS 系统下的 apple-touch-icon 图标。

    +

    你可以通过 html.faviconhtml.faviconByEntries 配置项来设置 favicon 图标。

    export default {
       html: {
         favicon: './src/assets/icon.png',
       },
     };
    -

    也可以通过 html.appIcon 配置项来设置 iOS 系统下的 apple-touch-icon 图标。

    +

    也可以通过 html.appIcon 配置项来设置 iOS 系统下的 apple-touch-icon 图标。

    export default {
       html: {
         appIcon: './src/assets/icon.png',
       },
     };

    设置 meta 标签

    -

    你可以通过 html.metahtml.metaByEntries 配置项来设置 HTML 的 <meta> 标签。

    +

    你可以通过 html.metahtml.metaByEntries 配置项来设置 HTML 的 <meta> 标签。

    比如设置 description:

    export default {
       html: {
    @@ -81,7 +81,7 @@ 

    options: object; }; };

    -

    你也可以通过 html.templateParametershtml.templateParametersByEntries 配置项来传入自定义的模板参数。

    +

    你也可以通过 html.templateParametershtml.templateParametersByEntries 配置项来传入自定义的模板参数。

    比如:

    export default {
       html: {
    @@ -95,8 +95,8 @@ 

    经过编译后的最终 HTML 代码如下:

    <div>hello world!</div>

    模板引擎

    -

    Builder 支持 Lodash TemplateEJSPug 等多个模板引擎,默认使用最基础的 Lodash Template 作为模板引擎。

    -

    Lodash Template

    +

    Builder 支持 Lodash TemplateEJSPug 等多个模板引擎,默认使用最基础的 Lodash Template 作为模板引擎。

    +

    Lodash Template

    当模板文件的后缀为 .html 时,Builder 会使用 Lodash Template 对模板进行编译。

    例如,在模板中定义一个 text 参数,值为 'world',在构建时会自动将 <%= text %> 替换为对应的值。

    <!-- 输入  -->
    @@ -104,10 +104,10 @@ 

    <!-- 输出 --> <div>hello world!</div>

    -

    请阅读 Lodash Template 文档来了解完整用法。

    -

    EJS

    +

    请阅读 Lodash Template 文档来了解完整用法。

    +

    EJS

    当模板文件的后缀为 .ejs 时,Builder 会使用 EJS 模板引擎对模板进行编译。EJS 是一套简单的模板语言,支持直接在标签内书写简单、直白的 JavaScript 代码,并通过 JavaScript 输出最终所需的 HTML。

    -

    例如,你可以先通过 html.template 配置项来引用一个 .ejs 模板文件:

    +

    例如,你可以先通过 html.template 配置项来引用一个 .ejs 模板文件:

    export default {
       html: {
         template: './static/index.ejs',
    @@ -121,10 +121,10 @@ 

    <!-- 输出 --> <h2>Jack</h2>

    -

    请阅读 EJS 文档来了解完整用法。

    -

    Pug

    +

    请阅读 EJS 文档来了解完整用法。

    +

    Pug

    当模板文件的后缀为 .pug 时,Builder 会使用 Pug 模板引擎对模板进行编译。Pug 是一款健壮、灵活、功能丰富的模板引擎,专门为 Node.js 平台开发。

    -

    使用 Pug 模板前,需要开启 tools.pug 配置项,并通过 html.template 配置项来引用一个 .pug 模板文件:

    +

    使用 Pug 模板前,需要开启 tools.pug 配置项,并通过 html.template 配置项来引用一个 .pug 模板文件:

    export default {
       html: {
         template: './static/index.pug',
    @@ -139,7 +139,7 @@ 

    <!-- 输出 --> <p>Hello World!</p>

    -

    请阅读 Pug 文档来了解完整用法。

    +

    请阅读 Pug 文档来了解完整用法。

    注入标签

    通过配置 html.tags 选项可以在最终生成的 HTML 产物中插入任意标签。

    使用场景

    前端应用的产物最终都会直接或间接地被 HTML 入口引用,但大多数时候直接向 HTML 注入标签都并非首选。

    @@ -152,7 +152,7 @@

    <%= htmlWebpackPlugin.tags.bodyTags %> </body> </html>

    -

    html.tags 的作用就是调整这些模板变量进而修改 HTML,配置的具体定义参考 API References

    +

    html.tags 的作用就是调整这些模板变量进而修改 HTML,配置的具体定义参考 API References

    对象形式

    export default {
       output: {
    diff --git a/modern-js/builder/guide/basic/typescript.html b/modern-js/builder/guide/basic/typescript.html
    index f75a8ced03..2175f3689d 100644
    --- a/modern-js/builder/guide/basic/typescript.html
    +++ b/modern-js/builder/guide/basic/typescript.html
    @@ -1,4 +1,4 @@
    -使用 TypeScript - Modern.js Builder
    +使用 TypeScript - Modern.js Builder
     
    -Modern.js Builder

    使用 TypeScript

    +Modern.js Builder

    使用 TypeScript

    Builder 对 TypeScript 的转译和类型检查做了默认支持,无需任何配置即可在项目中使用 .ts.tsx 文件。

    TypeScript 转译

    Builder 有三种可选方式处理 TypeScript 文件。

    Babel

    在默认配置下,源码中所有的 TypeScript 文件会经过 Babel 转译。 -可能你在查阅较老旧的资料时会发现,Babel 无法处理 const enum 以及 namespace alias 语法,但是其实在 7.15 版本已经得到了支持。Babel 无需手动开启,直接在项目中使用 TypeScript 文件即可。

    +可能你在查阅较老旧的资料时会发现,Babel 无法处理 const enum 以及 namespace alias 语法,但是其实在 7.15 版本已经得到了支持。Babel 无需手动开启,直接在项目中使用 TypeScript 文件即可。

    ts-loader

    ts-loader 使用 TypeScript 官方的 TSC 转译。当开启 ts-loader 后 TypeScript 文件不会再经过 Babel 编译处理,但处理后的 JavaScript 产物仍然会由 Babel 进行语法降级以及 Polyfill 注入。

    开启 ts-loader(使用默认配置):

    @@ -23,21 +23,21 @@

    tsLoader: {}, }, };

    -

    更详细配置可见 tools.tsLoader。 +

    更详细配置可见 tools.tsLoader。 如果开启 ts-loader,默认不会启用类型检查,只会进行转译。

    SWC

    -

    如果想要更快的项目构建速度,并且项目没有依赖某些自定义的 Babel 插件,那么也可以选择 SWC 来对 JavaScript 和 TypeScript 进行转译和压缩。Builder 的 SWC 插件默认支持 TypeScript, TSX, Decorator,使用方式可见 SWC 插件

    +

    如果想要更快的项目构建速度,并且项目没有依赖某些自定义的 Babel 插件,那么也可以选择 SWC 来对 JavaScript 和 TypeScript 进行转译和压缩。Builder 的 SWC 插件默认支持 TypeScript, TSX, Decorator,使用方式可见 SWC 插件

    为什么默认使用 Babel

    Babel 除了没有类型检查以外,对 TypeScript 语法支持已经非常完善,而类型检查可以借助另外的工具更好地进行。转译到低版本的 JavaScript 时,某些语法 Babel 会处理得更符合标准,例如 Babel 会将类成员初始化为 undefined,将类方法标记不可枚举等行为。如果启用 ts-loader,为了更精确的语法降级和 Polyfill,最后还是会将处理后的产物再次经过 Babel 处理,产生不必要的性能开销。

    类型检查

    -

    目前生产可用的类型检查工具只有官方的 TSC,TSC 类型检查耗时在大项目中往往是很慢的过程,Builder 中默认使用 tsChecker(fork-ts-checker-webpack-plugin) 在构建过程中异步进行类型检查,不阻塞项目的启动。

    +

    目前生产可用的类型检查工具只有官方的 TSC,TSC 类型检查耗时在大项目中往往是很慢的过程,Builder 中默认使用 tsChecker(fork-ts-checker-webpack-plugin) 在构建过程中异步进行类型检查,不阻塞项目的启动。

    配置 tsChecker(使用默认配置):

    export default {
       tools: {
         tsChecker: {},
       },
     };
    -

    更多配置可见 tsChecker 配置

    +

    更多配置可见 tsChecker 配置

    如果开启 ts-loader 并且手动配置了 compileOnly: false,请关闭 tsChecker,避免重复类型检查。

    -
    STC

    SWC 作者新开源的基于 Rust 的类型检查工具 STC 目前还不可用于生产,还在起步阶段,不推荐用于项目中,等待更成熟之后,我们会考虑集成到 Builder 的 SWC 插件中作为实验功能,敬请期待。 +

    STC

    SWC 作者新开源的基于 Rust 的类型检查工具 STC 目前还不可用于生产,还在起步阶段,不推荐用于项目中,等待更成熟之后,我们会考虑集成到 Builder 的 SWC 插件中作为实验功能,敬请期待。

    \ No newline at end of file diff --git a/modern-js/builder/guide/debug/debug-mode.html b/modern-js/builder/guide/debug/debug-mode.html index 5d8fde4262..d54be7ce42 100644 --- a/modern-js/builder/guide/debug/debug-mode.html +++ b/modern-js/builder/guide/debug/debug-mode.html @@ -1,4 +1,4 @@ -开启调试模式 - Modern.js Builder +开启调试模式 - Modern.js Builder -Modern.js Builder

    开启调试模式

    +Modern.js Builder

    开启调试模式

    为了便于排查问题,Builder 提供了调试模式,你可以在执行构建时添加 DEBUG=builder 环境变量来开启 Builder 的调试模式。

    # 调试开发环境
     DEBUG=builder pnpm dev
    @@ -43,7 +43,7 @@ 

    }, // other configs... };

    -

    关于 Builder 配置项的完整介绍,请查看 Builder 配置项 章节。

    +

    关于 Builder 配置项的完整介绍,请查看 Builder 配置项 章节。

    webpack 配置文件

    如果当前项目是使用 webpack 进行构建的,那么在调试模式下,Builder 还会自动生成 dist/webpack.config.web.js 文件,这里面包含了最终生成的 webpack 配置。在这个文件里,你可以了解到 Builder 最终传递给 webpack 的配置里包含了哪些内容。

    该文件的大致结构如下:

    @@ -60,7 +60,7 @@

    // other configs... };

    此外,如果项目配置了额外的构建产物类型,比如开启了框架的 SSR 能力(对应额外的 Node.js 构建产物),在 dist 目录会另外生成一份 webpack.config.node.js 文件,对应 SSR 构建时的 webpack 配置。

    -

    关于 webpack 配置项的完整介绍,请查看 webpack 官方文档

    +

    关于 webpack 配置项的完整介绍,请查看 webpack 官方文档

    Rspack 配置文件

    如果当前项目是使用 Rspack 进行构建的,那么在调试模式下,Builder 还会自动生成 dist/rspack.config.web.js 文件,这里面包含了最终生成的 Rspack 配置。在这个文件里,你可以了解到 Builder 最终传递给 Rspack 的配置里包含了哪些内容。

    该文件的大致结构如下:

    @@ -76,4 +76,4 @@

    ], // other configs... };

    -

    关于 Rspack 配置项的完整介绍,请查看 Rspack 官方文档

    \ No newline at end of file +

    关于 Rspack 配置项的完整介绍,请查看 Rspack 官方文档

    \ No newline at end of file diff --git a/modern-js/builder/guide/faq/exceptions.html b/modern-js/builder/guide/faq/exceptions.html index bc4f59923a..8f65ef520c 100644 --- a/modern-js/builder/guide/faq/exceptions.html +++ b/modern-js/builder/guide/faq/exceptions.html @@ -1,4 +1,4 @@ -异常类问题 - Modern.js Builder +异常类问题 - Modern.js Builder -Modern.js Builder
    \ No newline at end of file +Modern.js Builder
    \ No newline at end of file diff --git a/modern-js/builder/guide/faq/features.html b/modern-js/builder/guide/faq/features.html index 8ade92ccbd..deafbbb742 100644 --- a/modern-js/builder/guide/faq/features.html +++ b/modern-js/builder/guide/faq/features.html @@ -1,4 +1,4 @@ -功能类问题 - Modern.js Builder +功能类问题 - Modern.js Builder -Modern.js Builder
    \ No newline at end of file +Modern.js Builder
    \ No newline at end of file diff --git a/modern-js/builder/guide/faq/general.html b/modern-js/builder/guide/faq/general.html index 90c7cda3b0..664c6d2acc 100644 --- a/modern-js/builder/guide/faq/general.html +++ b/modern-js/builder/guide/faq/general.html @@ -1,4 +1,4 @@ -通用类问题 - Modern.js Builder +通用类问题 - Modern.js Builder -Modern.js Builder

    通用类问题

    +Modern.js Builder

    通用类问题

    Modern.js Builder 和 Modern.js 的关系?

    Modern.js 的构建能力是基于 Modern.js Builder 实现的。

    在开发 Modern.js 的过程中,我们把 Builder 作为独立的模块进行设计,并明确划分 Builder 与 Modern.js 的职责界限。 @@ -16,17 +16,17 @@

    Builder 能否用于构建工具库或组件库?

    Builder 专注于解决 Web 应用构建场景,我们不推荐你使用 Builder 来构建工具库或组件库。

    -

    如果需要构建工具库或组件库,推荐使用 Modern.js Module 解决方案

    +

    如果需要构建工具库或组件库,推荐使用 Modern.js Module 解决方案


    Builder 是否会接入 Turbopack?

    -

    Builder 已经在对接 Rspack,并且目前 Turbopack 仅支持在 Next.js 中使用,因此 Builder 暂时没有接入 Turbopack 的计划。

    +

    Builder 已经在对接 Rspack,并且目前 Turbopack 仅支持在 Next.js 中使用,因此 Builder 暂时没有接入 Turbopack 的计划。

    -

    你可以在 Rspack 的 介绍 中查看 Rspack 与 Turbopack 的对比。

    +

    你可以在 Rspack 的 介绍 中查看 Rspack 与 Turbopack 的对比。


    Builder 是否会接入 Vite?

    -

    Vite 是一个非常优秀的工具,但 Builder 的目标是使用 Rspack 替换 webpack,Rspack 能提供极致的编译速度,同时能保持开发环境和生产环境的打包行为一致。

    +

    Vite 是一个非常优秀的工具,但 Builder 的目标是使用 Rspack 替换 webpack,Rspack 能提供极致的编译速度,同时能保持开发环境和生产环境的打包行为一致。

    Builder 会聚焦于从 webpack 演进至 Rspack 的过程,因此不会接入 Vite。

    -

    你可以在 Rspack 的 介绍 中查看 Rspack 与 Vite 的对比。

    +

    你可以在 Rspack 的 介绍 中查看 Rspack 与 Vite 的对比。

    \ No newline at end of file diff --git a/modern-js/builder/guide/faq/hmr.html b/modern-js/builder/guide/faq/hmr.html index 0f08e583a4..3c5e7693c8 100644 --- a/modern-js/builder/guide/faq/hmr.html +++ b/modern-js/builder/guide/faq/hmr.html @@ -1,4 +1,4 @@ -热更新问题 - Modern.js Builder +热更新问题 - Modern.js Builder -Modern.js Builder
    \ No newline at end of file +Modern.js Builder
    \ No newline at end of file diff --git a/modern-js/builder/guide/features.html b/modern-js/builder/guide/features.html index a5a9b37321..4cb5b4a43e 100644 --- a/modern-js/builder/guide/features.html +++ b/modern-js/builder/guide/features.html @@ -1,4 +1,4 @@ -功能导航 - Modern.js Builder +功能导航 - Modern.js Builder -Modern.js Builder

    功能导航

    +Modern.js Builder

    功能导航

    注意事项

    Modern.js Builder 已升级为 Rsbuild 独立品牌,当前文档将不再继续迭代。

      -
    • 如果你在使用 Modern.js 框架,请直接访问 Modern.js 框架文档
    • -
    • 如果你在使用 Modern.js Builder 的 CLI 或 Node API,可以轻松迁移到 Rsbuild,请访问 Rsbuild 仓库 了解更多。
    • +
    • 如果你在使用 Modern.js 框架,请直接访问 Modern.js 框架文档
    • +
    • 如果你在使用 Modern.js Builder 的 CLI 或 Node API,可以轻松迁移到 Rsbuild,请访问 Rsbuild 仓库 了解更多。

    在这里,你可以了解到 Modern.js Builder 支持的主要功能。

    @@ -29,87 +29,87 @@

    Rspack 打包 可选功能,使用 Rspack 作为打包工具 - + Babel 编译 默认开启 Babel 编译,将 JavaScript 和 TypeScript 代码转换为向后兼容的 JavaScript 语法 - + TS 编译 默认通过 Babel 编译 TS 文件,支持切换为 ts-loader 编译 - + TS 类型检查 默认通过 TS Checker 检查类型问题 - + JS 压缩 默认在生产环境构建时开启压缩 - + Polyfill 注入 默认会注入 core-js 等 Polyfill - + SourceMap 生成 默认在生产环境构建时生成高质量 SourceMap - + 文件别名 可选功能,通过 alias 设置文件别名 - + 限制源代码路径 可选功能,限制源代码的引用路径 - + esbuild 编译 可选功能,通过 esbuild 对 JavaScript 和 TypeScript 代码进行转译和压缩 - + SWC 编译 可选功能,通过 SWC 对 JavaScript 和 TypeScript 代码进行转译和压缩 - + Node 产物 可选功能,支持构建出运行在 Node.js 环境的 JavaScript 产物 - + Web Worker 产物 可选功能,支持构建出运行在 Web Worker 环境的 JavaScript 产物 - + 浏览器范围 可选功能,通过 browserslist 来设置 Web 应用需要兼容的浏览器范围 - + 兼容性检查 可选功能,分析构建产物中是否存在当前浏览器范围下不兼容的高级语法 - + 注入环境变量 可选功能,向代码中注入环境变量或表达式 - + Node polyfill 可选功能,在浏览器端注入 Node 核心模块的 polyfills - + @@ -126,57 +126,57 @@

    CSS PostCSS 编译 默认开启 PostCSS 编译,内置 autoprefixer 等多个插件 - + Sass 预处理 默认支持编译 Sass/Scss 文件 - + Less 预处理 默认支持编译 Less 文件 - + Stylus 预处理 可选功能,编译 Stylus 文件 - + CSS Modules 编译 默认支持编译 CSS Modules 文件 - + CSS Modules 类型提示 可选功能,自动生成 CSS Modules 的类型定义文件 - + CSS 压缩 默认在生产环境构建时开启压缩 - + 抽取 CSS 文件 默认会将 CSS 抽取为独立的文件 - + Styled Components 默认支持 styled-components 编译 - + 内联 CSS 到 JS 中 可选功能,将 CSS 文件内联到 JS 文件中 - + rem 单位转换 可选功能,将 CSS 中的 px 转成 rem 单位 - + @@ -193,42 +193,42 @@

    HTML 设置标题 设置 HTML 的 title 标签 - + 设置 meta 设置 HTML 的 meta 标签 - + 设置 favicon 设置页面的 favicon 图标 - + 设置 app 图标 设置 iOS 系统下的 apple icon - + 使用 EJS 模板引擎 可选功能,使用 EJS 模板语法 - + 使用 Pug 模板引擎 可选功能,使用 Pug 模板语法 - + 内联 JS 文件 可选功能,将 JS 内联到 HTML 中 - + 内联 CSS 文件 可选功能,将 CSS 内联到 HTML 中 - + @@ -245,12 +245,12 @@

    自动打开页面 可选功能,在启动 Dev Server 时自动在浏览器中打开页面 URL - + HTTPS Dev Server 可选功能,开启 Dev Server 对 HTTPS 的支持 - + @@ -267,22 +267,22 @@

    React Refresh 默认支持 React Refresh 热更新 - + SVG 转 React 组件 默认支持在 React 组件中引用 SVG 作为组件 - + Vue 3 SFC 编译 可选功能,开启 Vue 3 SFC 单文件组件编译 - + Vue 3 JSX 编译 可选功能,开启 Vue 3 JSX 语法编译 - + @@ -299,22 +299,22 @@

    引用图片资源 支持在代码中引用图片资源 - + 引用字体资源 支持在代码中引用字体资源 - + 引用视频资源 支持在代码中引用视频资源 - + 引用 Wasm 资源 支持在代码中引用 WebAssembly 资源 - + 引用 node addons @@ -324,22 +324,22 @@

    静态资源内联 默认将体积较小的图片等资源内联到 JS 中 - + 清理静态资源 每次开始构建前,自动清理 dist 目录下的静态资源 - + 拷贝静态资源 可选功能,将静态资源拷贝到 dist 目录下 - + 生成 manifest 文件 可选功能,生成包含静态资源信息的 manifest 文件 - + @@ -356,57 +356,57 @@

    性 产物自动拆包 Builder 中内置了多种拆包策略,自动将代码包拆分为体积适中的文件 - + 展示产物体积 在生产环境构建后,默认展示所有静态资源的体积信息 - + 分析产物体积 可选功能,通过 Bundle Analyzer 分析产物体积 - + 移除 console 可选功能,移除代码中的 console.xx - + 优化 moment.js 体积 可选功能,移除 moment.js 多余的 locale 文件 - + 组件库按需引入 可选功能,按需引入组件库的代码和样式 - + 图片压缩 可选功能,对引用的图片资源进行压缩处理 - + Preload 可选功能,对资源进行预加载 - + Prefetch 可选功能,对资源进行预获取 - + Preconnect 可选功能,对资源进行预连接 - + DNS prefetch 可选功能,对资源进行 DNS 预获取 - +

    \ No newline at end of file diff --git a/modern-js/builder/guide/framework/vue2.html b/modern-js/builder/guide/framework/vue2.html index 5ac316ae4a..135de105b6 100644 --- a/modern-js/builder/guide/framework/vue2.html +++ b/modern-js/builder/guide/framework/vue2.html @@ -1,4 +1,4 @@ -构建 Vue 2 应用 - Modern.js Builder +构建 Vue 2 应用 - Modern.js Builder -Modern.js Builder

    构建 Vue 2 应用

    +Modern.js Builder

    构建 Vue 2 应用

    尽管 Modern.js 框架是基于 React 实现的,但底层的 Modern.js Builder 并不与 React 耦合。因此,你可以使用 Modern.js Builder 来构建你的 Vue 应用,并使用 Modern.js Builder 提供的绝大多数能力。

    在这篇文档中,你可以了解到如何基于 Modern.js Builder 来构建一个 Vue 2 应用。

    示例项目

    我们搭建了一个基于 Modern.js Builder 的 Vue 2 示例项目,你可以参考或直接克隆这个项目,并对照下文的指南来了解更多细节。

    CLI 工具

    在开始构建 Vue 项目之前,你需要一个 CLI 工具来提供基本的命令。

    -

    你可以直接使用 Builder 提供的 CLI 工具,也可以基于 Builder 的 Node API 搭建属于你自己的 CLI 工具。

    +

    你可以直接使用 Builder 提供的 CLI 工具,也可以基于 Builder 的 Node API 搭建属于你自己的 CLI 工具。

    使用 Vue 插件

    -

    为了能够编译 Vue 的 SFC(单文件组件)和 JSX 语法,你需要注册 Builder 的 Vue 2 插件,插件会自动添加 Vue 构建所需的配置,并移除内置的 React 相关配置。

    +

    为了能够编译 Vue 的 SFC(单文件组件)和 JSX 语法,你需要注册 Builder 的 Vue 2 插件,插件会自动添加 Vue 构建所需的配置,并移除内置的 React 相关配置。

    例如,在 builder.config.ts 中注册:

    builder.config.ts
    import { defineConfig } from '@modern-js/builder-cli';
     import { builderPluginVue2 } from '@modern-js/builder-plugin-vue2';
    diff --git a/modern-js/builder/guide/framework/vue3.html b/modern-js/builder/guide/framework/vue3.html
    index c39416c1d9..86223023a7 100644
    --- a/modern-js/builder/guide/framework/vue3.html
    +++ b/modern-js/builder/guide/framework/vue3.html
    @@ -1,4 +1,4 @@
    -构建 Vue 3 应用 - Modern.js Builder
    +构建 Vue 3 应用 - Modern.js Builder
     
    -Modern.js Builder

    构建 Vue 3 应用

    +Modern.js Builder

    构建 Vue 3 应用

    尽管 Modern.js 框架是基于 React 实现的,但底层的 Modern.js Builder 并不与 React 耦合。因此,你可以使用 Modern.js Builder 来构建你的 Vue 应用,并使用 Modern.js Builder 提供的绝大多数能力。

    在这篇文档中,你可以了解到如何基于 Modern.js Builder 来构建一个 Vue 3 应用。

    示例项目

    我们搭建了一个基于 Modern.js Builder 的 Vue 3 示例项目,你可以参考或直接克隆这个项目,并对照下文的指南来了解更多细节。

    CLI 工具

    在开始构建 Vue 项目之前,你需要一个 CLI 工具来提供基本的命令。

    -

    你可以直接使用 Builder 提供的 CLI 工具,也可以基于 Builder 的 Node API 搭建属于你自己的 CLI 工具。

    +

    你可以直接使用 Builder 提供的 CLI 工具,也可以基于 Builder 的 Node API 搭建属于你自己的 CLI 工具。

    使用 Vue 插件

    -

    为了能够编译 Vue 的 SFC(单文件组件)和 JSX 语法,你需要注册 Builder 的 Vue 插件,插件会自动添加 Vue 构建所需的配置,并移除内置的 React 相关配置。

    +

    为了能够编译 Vue 的 SFC(单文件组件)和 JSX 语法,你需要注册 Builder 的 Vue 插件,插件会自动添加 Vue 构建所需的配置,并移除内置的 React 相关配置。

    例如,在 builder.config.ts 中注册:

    builder.config.ts
    import { defineConfig } from '@modern-js/builder-cli';
     import { builderPluginVue } from '@modern-js/builder-plugin-vue';
    diff --git a/modern-js/builder/guide/glossary.html b/modern-js/builder/guide/glossary.html
    index 83c582092c..4b38234381 100644
    --- a/modern-js/builder/guide/glossary.html
    +++ b/modern-js/builder/guide/glossary.html
    @@ -1,4 +1,4 @@
    -名词解释 - Modern.js Builder
    +名词解释 - Modern.js Builder
     
    -Modern.js Builder

    名词解释

    +Modern.js Builder

    名词解释

    注意事项

    Modern.js Builder 已升级为 Rsbuild 独立品牌,当前文档将不再继续迭代。

      -
    • 如果你在使用 Modern.js 框架,请直接访问 Modern.js 框架文档
    • -
    • 如果你在使用 Modern.js Builder 的 CLI 或 Node API,可以轻松迁移到 Rsbuild,请访问 Rsbuild 仓库 了解更多。
    • +
    • 如果你在使用 Modern.js 框架,请直接访问 Modern.js 框架文档
    • +
    • 如果你在使用 Modern.js Builder 的 CLI 或 Node API,可以轻松迁移到 Rsbuild,请访问 Rsbuild 仓库 了解更多。

    Bundler

    -

    webpackRspack 等模块打包工具。

    +

    webpackRspack 等模块打包工具。

    打包工具的主要目标是将 JavaScript、CSS 等文件打包在一起,打包后的文件可以在浏览器、Node.js 等环境中使用。当 Bundler 处理 Web 应用时,它会构建一个依赖关系图,其中包含应用需要的各个模块,然后将所有模块打包成一个或多个 bundle。

    Builder

    Modern.js Builder 指的是 Modern.js 的构建层,它的目标是为 Modern.js 用户提供开箱即用的构建能力,并支持在 webpack 和 Rspack 间无缝切换。

    -

    Modern.js MAJOR_VERSION.46.0 之前版本使用的是 @modern-js/builder, 从 MAJOR_VERSION.46.0 开始升级为 Rsbuild

    +

    Modern.js MAJOR_VERSION.46.0 之前版本使用的是 @modern-js/builder, 从 MAJOR_VERSION.46.0 开始升级为 Rsbuild

    Builder Provider

    Builder Provider 是 Builder 的组成部分之一,Provider 基于特定 bundler 实现了对应的构建能力。

    目前 Builder 提供了两个 Provider:

    @@ -42,15 +42,15 @@

    M

    Module Federation

    模块联邦(Module Federation,简称 MF)是 Webpack 的一个特性。它允许 JavaScript 应用从另一个应用动态加载代码,并在此过程中共享依赖关系。如果使用联邦模块的应用缺少联邦代码所需的依赖项,Webpack 将从该联邦的构建源下载缺失的依赖项。

    这使得可以创建微前端风格的应用程序,多个系统可以共享代码,并在不需要重新构建整个应用程序的情况下进行动态更新。

    -

    Modern.js 提供了一个 Module Federation 的示例项目,请参考 module-federation-examples - modernjs

    -

    你也可以阅读 webpack Module Federation 文档 来了解更多概念。

    +

    Modern.js 提供了一个 Module Federation 的示例项目,请参考 module-federation-examples - modernjs

    +

    你也可以阅读 webpack Module Federation 文档 来了解更多概念。

    Rspack

    -

    Rspack 是一个基于 Rust 的高性能 Web 构建工具,具备与 webpack 生态系统的互操作性,可以被 webpack 项目低成本集成,并提供更好的构建性能。

    +

    Rspack 是一个基于 Rust 的高性能 Web 构建工具,具备与 webpack 生态系统的互操作性,可以被 webpack 项目低成本集成,并提供更好的构建性能。

    相较于 webpack,Rspack 的构建性能有明显提升,除了 Rust 带来的语言优势,这也来自于它的并行架构和增量编译等特性。经过 benchmark 验证,Rspack 可以带来 5 ~ 10 倍编译性能的提升。

    Modern.js

    Modern.js 是字节跳动 Web 工程体系的开源版本,它提供多个解决方案,来帮助开发者解决不同研发场景下的问题。

    EdenX

    字节跳动内部的 Web 工程方案,基于 Modern.js 实现。

    \ No newline at end of file diff --git a/modern-js/builder/guide/introduction.html b/modern-js/builder/guide/introduction.html index 478a07b2f9..efb2a024df 100644 --- a/modern-js/builder/guide/introduction.html +++ b/modern-js/builder/guide/introduction.html @@ -1,4 +1,4 @@ -介绍 - Modern.js Builder +介绍 - Modern.js Builder -Modern.js Builder

    介绍

    +Modern.js Builder

    介绍

    注意事项

    Modern.js Builder 已升级为 Rsbuild 独立品牌,当前文档将不再继续迭代。

      -
    • 如果你在使用 Modern.js 框架,请直接访问 Modern.js 框架文档
    • -
    • 如果你在使用 Modern.js Builder 的 CLI 或 Node API,可以轻松迁移到 Rsbuild,请访问 Rsbuild 仓库 了解更多。
    • +
    • 如果你在使用 Modern.js 框架,请直接访问 Modern.js 框架文档
    • +
    • 如果你在使用 Modern.js Builder 的 CLI 或 Node API,可以轻松迁移到 Rsbuild,请访问 Rsbuild 仓库 了解更多。

    Modern.js Builder 是一个基于 Rspack 的 Web 构建工具

    随着前端生态的发展,社区中出现了多样化的编译工具和插件。对于大部分开发者来说,构建一个 Web 应用所需的配置和依赖已变得十分复杂。在追求最佳实践的过程中,开发者需要付出的成本也在不断上升。

    为了减少构建的复杂性,降低上手门槛,我们基于 Modern.js 在 Web 应用构建方面的实践经验,抽象其中的构建能力,打造出 Modern.js Builder 这个构建工具。

    Rust 化

    -

    近年来,前端工具链的发展趋势是使用 Rust 等编程语言重新实现 —— 以获得更好的性能表现。社区中出现 RspackSWC 等高性能工具,并且应用领域在逐步扩宽。但这些 Rust 工具与 JavaScript 工具之间存在较多差异,包括功能不完整、配置不一致等,导致使用者需要承担一定的迁移成本。

    +

    近年来,前端工具链的发展趋势是使用 Rust 等编程语言重新实现 —— 以获得更好的性能表现。社区中出现 RspackSWC 等高性能工具,并且应用领域在逐步扩宽。但这些 Rust 工具与 JavaScript 工具之间存在较多差异,包括功能不完整、配置不一致等,导致使用者需要承担一定的迁移成本。

    前端工具链 Rust 化的进程还会持续较长一段时间,Modern.js Builder 期望能帮助开发者更好地过渡到 Rust 工具。不管是 JavaScript 工具,还是 Rust 工具,甚至是 webpack 等底层 bundler,在 Modern.js Builder 中都是可替换的零部件。你可以通过开启配置或启用插件的方式,对这些零部件进行渐进式替换,Modern.js Builder 会抹平其中的主要差异,帮助使用者进行低成本迁移。

    定位

    Modern.js Builder (简称 Builder) 的定位是服务于上层框架的构建工具,它专注于解决 Web 应用构建面临的各类问题,期望能为前端框架提供开箱即用的构建能力。

    @@ -28,21 +28,21 @@

    定位如果你是一名业务开发者,大部分情况下,你不需要在业务项目中手动接入 Builder,我们推荐你直接使用一些基于 Builder 的上层框架。

    目前已经接入 Builder 的前端框架有:

    特性

    支持 Rspack 打包

    Builder 支持 webpack 和 Rspack 两种打包工具,你可以在成熟的 Webpack 和更快的 Rspack 之间进行切换。

    什么是 Rspack
    -

    Rspack 是一个基于 Rust 的高性能 Web 构建工具,具备与 webpack 生态系统的互操作性,可以被 webpack 项目低成本集成,并提供更好的构建性能。

    +

    Rspack 是一个基于 Rust 的高性能 Web 构建工具,具备与 webpack 生态系统的互操作性,可以被 webpack 项目低成本集成,并提供更好的构建性能。

    相较于 webpack,Rspack 的构建性能有明显提升,除了 Rust 带来的语言优势,这也来自于它的并行架构和增量编译等特性。经过 benchmark 验证,Rspack 可以带来 5 ~ 10 倍编译性能的提升。

    -

    默认情况下,Builder 使用 webpack 5 作为打包工具,尽管 webpack 的编译速度不是很理想,但它依然是社区中功能最完整、生态最丰富的打包工具。Builder 在 webpack 的基础上,集成了 BabelPostCSSterser 等工具进行代码转义和压缩。Builder 也支持替换部分编译能力为原生工具来提升编译速度,比如将 Babel / terser 替换为 swcesbuild

    -

    如果你对构建性能有更极致的需求,可以一键切换到 Rspack 构建模式,请参考 使用 Rspack 来进行切换。

    +

    默认情况下,Builder 使用 webpack 5 作为打包工具,尽管 webpack 的编译速度不是很理想,但它依然是社区中功能最完整、生态最丰富的打包工具。Builder 在 webpack 的基础上,集成了 BabelPostCSSterser 等工具进行代码转义和压缩。Builder 也支持替换部分编译能力为原生工具来提升编译速度,比如将 Babel / terser 替换为 swcesbuild

    +

    如果你对构建性能有更极致的需求,可以一键切换到 Rspack 构建模式,请参考 使用 Rspack 来进行切换。

    深度优化构建产物

    Builder 充分利用 webpack 生态内的各种优化手段,保证生产环境的产物性能得到深度优化,并在稳定性上提供保障。

    -

    以拆包场景为例,webpack 原生的 splitChunks 配置较为复杂,Builder 将其封装为开箱即用的 performance.chunkSplit 配置项,默认将常见的三方库拆分为体积适中的 chunk,使页面加载速度达到最优状态。

    +

    以拆包场景为例,webpack 原生的 splitChunks 配置较为复杂,Builder 将其封装为开箱即用的 performance.chunkSplit 配置项,默认将常见的三方库拆分为体积适中的 chunk,使页面加载速度达到最优状态。

    易于扩展的插件系统

    Builder 提供丰富的配置项和可插拔的插件系统,支持对各项能力进行扩展和定制。

    对于 Builder 来说,所有的构建能力都是通过插件来实现的:

    @@ -63,73 +63,73 @@

    npm 包< -@modern-js/builder +@modern-js/builder Builder 核心包 -@modern-js/builder-cli +@modern-js/builder-cli Builder CLI 工具 -@modern-js/builder-webpack-provider +@modern-js/builder-webpack-provider 提供 webpack 构建能力 -@modern-js/builder-rspack-provider +@modern-js/builder-rspack-provider 提供 Rspack 构建能力 -@modern-js/builder-plugin-vue +@modern-js/builder-plugin-vue Vue 3 插件 -@modern-js/builder-plugin-vue2 +@modern-js/builder-plugin-vue2 Vue 2 插件 -@modern-js/builder-plugin-swc +@modern-js/builder-plugin-swc SWC 插件 -@modern-js/builder-plugin-stylus +@modern-js/builder-plugin-stylus Stylus 插件 -@modern-js/builder-plugin-esbuild +@modern-js/builder-plugin-esbuild Esbuild 插件 -@modern-js/builder-plugin-node-polyfill +@modern-js/builder-plugin-node-polyfill Node Polyfill 插件 -@modern-js/builder-plugin-image-compress +@modern-js/builder-plugin-image-compress Image Compress 插件 -@modern-js/builder-shared +@modern-js/builder-shared Builder 内部的公共模块 -@modern-js/builder-doc +@modern-js/builder-doc Builder 文档 -

    你可以在 modern.js 仓库的 packages/builder 目录下查看这些包的源代码。

    +

    你可以在 modern.js 仓库的 packages/builder 目录下查看这些包的源代码。

    下一步

    你可能想要:

    diff --git a/modern-js/builder/guide/optimization/split-chunk.html b/modern-js/builder/guide/optimization/split-chunk.html index a0974ef99f..a82381b534 100644 --- a/modern-js/builder/guide/optimization/split-chunk.html +++ b/modern-js/builder/guide/optimization/split-chunk.html @@ -1,4 +1,4 @@ -拆包最佳实践 - Modern.js Builder +拆包最佳实践 - Modern.js Builder -Modern.js Builder

    拆包最佳实践

    +Modern.js Builder

    拆包最佳实践

    良好的拆包策略对于提升应用的加载性能是十分重要的,可以充分利用浏览器的缓存机制,减少请求数量,加快页面加载速度。

    在 Builder 中内置了多种拆包策略,可以满足大部分应用的需求,你也可以根据自己的业务场景,自定义拆包配置。

    拆包策略

    -

    Builder 的拆包配置集中在 performance.chunkSplit 中。

    +

    Builder 的拆包配置集中在 performance.chunkSplit 中。

    Builder 支持设置以下几种拆包策略:

      @@ -147,7 +147,7 @@

      }, }, };

    -

    其中 override 中的配置会和 bundler 的配置进行合并,具体配置项请参考 webpack - splitChunksRspack - splitChunks

    +

    其中 override 中的配置会和 bundler 的配置进行合并,具体配置项请参考 webpack - splitChunksRspack - splitChunks

    使用 Dynamic Import 拆包

    除了 chunkSplit 配置,使用 dynamic import 拆包也是一项重要的优化手段,它可以有效减少首屏的包体积。

    关于 dynamic import

    Dynamic import 是 ECMAScript 2020 引入的一个新特性,它允许你动态地加载一些 JavaScript 模块。Builder 底层的 Rspack / webpack 默认支持 dynamic import,所以你可以直接在代码中使用它。

    diff --git a/modern-js/builder/guide/quick-start.html b/modern-js/builder/guide/quick-start.html index 883352a9e9..e0201671ef 100644 --- a/modern-js/builder/guide/quick-start.html +++ b/modern-js/builder/guide/quick-start.html @@ -1,4 +1,4 @@ -快速上手 - Modern.js Builder +快速上手 - Modern.js Builder -Modern.js Builder

    快速上手

    +Modern.js Builder

    快速上手

    注意事项

    Modern.js Builder 已升级为 Rsbuild 独立品牌,当前文档将不再继续迭代。

      -
    • 如果你在使用 Modern.js 框架,请直接访问 Modern.js 框架文档
    • -
    • 如果你在使用 Modern.js Builder 的 CLI 或 Node API,可以轻松迁移到 Rsbuild,请访问 Rsbuild 仓库 了解更多。
    • +
    • 如果你在使用 Modern.js 框架,请直接访问 Modern.js 框架文档
    • +
    • 如果你在使用 Modern.js Builder 的 CLI 或 Node API,可以轻松迁移到 Rsbuild,请访问 Rsbuild 仓库 了解更多。

    环境准备

    -

    在开始使用前,你需要安装 Node.js,并保证 Node.js 版本不低于 14.17.6,我们推荐使用 Node.js 18 的 LTS 版本

    +

    在开始使用前,你需要安装 Node.js,并保证 Node.js 版本不低于 14.17.6,我们推荐使用 Node.js 18 的 LTS 版本

    你可以通过以下命令检查当前使用的 Node.js 版本:

    node -v
    -

    如果你当前的环境中尚未安装 Node.js,或是安装的版本低于 14.17.6,可以通过 nvmfnm 安装需要的版本。

    +

    如果你当前的环境中尚未安装 Node.js,或是安装的版本低于 14.17.6,可以通过 nvmfnm 安装需要的版本。

    下面是通过 nvm 安装 Node.js 18 LTS 版本的例子:

    # 安装 Node.js 18 的长期支持版本
     nvm install 18 --lts
    @@ -34,12 +34,12 @@ 

    使用 Modern.js 框架

    Modern.js 框架默认使用 Modern.js Builder 作为构建工具。因此,如果你是一名业务开发者,那么不需要手动接入 Builder,只需要创建一个 Modern.js 项目,就可以使用 Builder 提供的所有能力。

    npx @modern-js/create@latest my-app
    -

    请阅读 Modern.js - 介绍Modern.js - 快速上手 来了解 Modern.js 框架的使用方法。

    +

    请阅读 Modern.js - 介绍Modern.js - 快速上手 来了解 Modern.js 框架的使用方法。

    关于文档

    Modern.js 框架文档和 Modern.js Builder 文档部署在两个独立的站点下。如果你在使用 Modern.js 框架的过程中遇到任何构建相关的问题,你可以随时查阅 Modern.js Builder 的文档来寻找相应的解决方案。

    使用 Builder CLI 工具

    Modern.js Builder 提供了一个轻量的 CLI 工具,包含 dev、build 等基础命令,它主要用于构建非 React 项目。

    如果你的项目不是基于 React 的,比如开发一个 Vue 项目,那么你可以使用 Builder CLI 工具来构建你的项目。

    -

    请参考 使用 Builder CLI 来了解相关用法。

    +

    请参考 使用 Builder CLI 来了解相关用法。

    在前端框架中接入

    如果你正在开发一个前端框架,可以通过下面的步骤来接入 Builder:

    1. 安装 Builder

    @@ -56,7 +56,7 @@

    1.

    2. 创建 Builder 实例

    创建 Builder 实例的过程分两步:

    -

    首先你需要初始化 Builder Provider,并传入 builderConfig 配置对象。Builder 提供了丰富的配置项,允许你对构建行为进行灵活定制。此时你还不需要了解配置项的具体内容,传入一个空对象即可。你可以在 API - 配置 中找到所有可用的配置项。

    +

    首先你需要初始化 Builder Provider,并传入 builderConfig 配置对象。Builder 提供了丰富的配置项,允许你对构建行为进行灵活定制。此时你还不需要了解配置项的具体内容,传入一个空对象即可。你可以在 API - 配置 中找到所有可用的配置项。

    • 初始化 webpack Provider:
    @@ -85,20 +85,20 @@

    index: './src/index.ts', }, });

    -

    除了上述示例中的 entry 选项,createBuilder 方法也提供了一些其他的选项,你可以在 API - createBuilder 中进一步了解。

    +

    除了上述示例中的 entry 选项,createBuilder 方法也提供了一些其他的选项,你可以在 API - createBuilder 中进一步了解。

    3. 调用 Builder 实例方法

    Builder 实例提供了与构建相关的各个方法,你可以根据实际场景来进行使用。

    -

    在本地开发场景,建议使用 builder.startDevServer 方法,调用后会启动本地 Dev Server。

    +

    在本地开发场景,建议使用 builder.startDevServer 方法,调用后会启动本地 Dev Server。

    await builder.startDevServer();

    成功启动 Dev Server 后,可以看到以下日志信息:

    info    Starting dev server...
     
       > Local:    http://localhost:8081
       > Network:  http://192.168.0.1:8081
    -

    在生产环境部署场景,建议使用 builder.build 方法,调用后会构建出生产环境产物。

    +

    在生产环境部署场景,建议使用 builder.build 方法,调用后会构建出生产环境产物。

    await builder.build();
    -

    关于 Builder 实例方法的更多介绍,请阅读 Builder Instance 章节。

    +

    关于 Builder 实例方法的更多介绍,请阅读 Builder Instance 章节。

    通过以上三个步骤,你已经了解了 Builder 基本的使用方法。接下来你可以通过 Builder 插件和 Builder 配置来对构建流程进行定制。

    下一步

    diff --git a/modern-js/builder/index.html b/modern-js/builder/index.html index dfd05a7715..859859043a 100644 --- a/modern-js/builder/index.html +++ b/modern-js/builder/index.html @@ -1,4 +1,4 @@ -Modern.js Builder +Modern.js Builder -Modern.js Builder

    Modern.js Builder

    基于 Rspack 的 Web 构建工具

    🚀

    Rust 构建

    轻松切换到 Rspack 构建工具,编译飞快。

    🍭

    深度优化

    自动优化静态资源,产物性能有保障。

    📦

    开箱即用

    基于字节跳动数千个应用的实践经验,各种能力开箱即用。

    📖

    易于配置

    以零配置启动,然后一切皆可配置。

    🎨

    可插拔

    自带轻量级插件系统,满足你的定制诉求。

    多种产物

    支持构建出运行在 Node.js、Web Worker 等环境的产物。

    Copyright © 2023 ByteDance.
    \ No newline at end of file +Modern.js Builder

    Modern.js Builder

    基于 Rspack 的 Web 构建工具

    🚀

    Rust 构建

    轻松切换到 Rspack 构建工具,编译飞快。

    🍭

    深度优化

    自动优化静态资源,产物性能有保障。

    📦

    开箱即用

    基于字节跳动数千个应用的实践经验,各种能力开箱即用。

    📖

    易于配置

    以零配置启动,然后一切皆可配置。

    🎨

    可插拔

    自带轻量级插件系统,满足你的定制诉求。

    多种产物

    支持构建出运行在 Node.js、Web Worker 等环境的产物。

    Copyright © 2023 ByteDance.
    \ No newline at end of file diff --git a/modern-js/builder/plugins/introduction.html b/modern-js/builder/plugins/introduction.html index dfa6034326..99351a312f 100644 --- a/modern-js/builder/plugins/introduction.html +++ b/modern-js/builder/plugins/introduction.html @@ -1,4 +1,4 @@ -插件系统 - Modern.js Builder +插件系统 - Modern.js Builder -Modern.js Builder

    插件系统

    +Modern.js Builder

    插件系统

    Builder 提供了一套轻量强大的插件系统,用以实现自身的大多数功能,并允许用户进行扩展。 开发者编写的插件能够修改 Builder 的默认行为并添加各类额外功能,包括但不限于:

      @@ -49,8 +49,8 @@

      为了便于识别,插件名称需要包含约定的 builder-plugin 前缀,例如 builder-plugin-foo @scope/builder-plugin-bar 等。

      生命周期钩子

      Builder 在内部按照约定的生命周期进行任务调度,插件可以通过注册钩子来介入工作流程的任意阶段,并实现自己的功能。

      -

      Builder 生命周期钩子的完整列表参考 API 文档

      -

      Builder 不会接管底层 Bundler 的生命周期,相关生命周期钩子的使用方式见对应文档:webpack hooks

      +

      Builder 生命周期钩子的完整列表参考 API 文档

      +

      Builder 不会接管底层 Bundler 的生命周期,相关生命周期钩子的使用方式见对应文档:webpack hooks

      使用配置项

      自行编写的插件通常使用初始化时传入函数的参数作为配置项即可,开发者可以随意定义和使用函数的入参。

      但某些情况下插件可能需要读取 / 修改 Builder 公用的配置项,这时就需要了解 Builder 内部对配置项的生产和消费流程:

      @@ -123,11 +123,11 @@

      api.modifyWebpackConfig(config => {}) 修改最终的 webpack 配置
    • api.onAfterCreateCompiler(compiler => {}) 直接操作 webpack 实例
    -

    通常推荐使用 neutrinojs/webpack-chain 提供的链式 API 来修改 webpack 配置的工作。

    -

    Builder 使用的是兼容 webpack5 的修改版本:sorrycc/webpack-chain

    +

    通常推荐使用 neutrinojs/webpack-chain 提供的链式 API 来修改 webpack 配置的工作。

    +

    Builder 使用的是兼容 webpack5 的修改版本:sorrycc/webpack-chain

    参考范例

    修改 Loader

    -

    Loader 可以读取和处理不同类型的文件模块,具体参考 conceptsloaders

    +

    Loader 可以读取和处理不同类型的文件模块,具体参考 conceptsloaders

    import type { BuilderPlugin } from '@modern-js/builder-webpack-provider';
     
     export const builderPluginTypeScriptExt = (): BuilderPlugin => ({
    diff --git a/modern-js/builder/plugins/list.html b/modern-js/builder/plugins/list.html
    index 2479949554..687cd9b07d 100644
    --- a/modern-js/builder/plugins/list.html
    +++ b/modern-js/builder/plugins/list.html
    @@ -1,4 +1,4 @@
    -总览 - Modern.js Builder
    +总览 - Modern.js Builder
     
    -Modern.js Builder

    总览

    +Modern.js Builder

    总览

    官方插件

    -

    你可以在 modern.js/packages/builder 目录下找到这些插件的源代码。

    \ No newline at end of file +

    你可以在 modern.js/packages/builder 目录下找到这些插件的源代码。

    \ No newline at end of file diff --git a/modern-js/builder/plugins/plugin-esbuild.html b/modern-js/builder/plugins/plugin-esbuild.html index 483a0f37e9..f661808d9d 100644 --- a/modern-js/builder/plugins/plugin-esbuild.html +++ b/modern-js/builder/plugins/plugin-esbuild.html @@ -1,4 +1,4 @@ -Esbuild 插件 - Modern.js Builder +Esbuild 插件 - Modern.js Builder -Modern.js Builder

    Esbuild 插件

    +Modern.js Builder

    Esbuild 插件

    WARNING

    当前文档中的 esbuild 功能已停止迭代,我们更推荐使用 Rspack + SWC 的方案,因为 Rspack + SWC 具备更好的构建性能、功能丰富度和产物兼容性。

    -

    请参考「使用 Rspack」了解更多。

    +

    请参考「使用 Rspack」了解更多。

    -

    esbuild 是一款基于 Golang 开发的前端构建工具,具有打包、编译和压缩 JavaScript 代码的功能,相比传统的打包编译工具,esbuild 在性能上有显著提升。在代码压缩方面,相比 webpack 内置的 terser 压缩器,esbuild 在性能上有数十倍的提升。

    +

    esbuild 是一款基于 Golang 开发的前端构建工具,具有打包、编译和压缩 JavaScript 代码的功能,相比传统的打包编译工具,esbuild 在性能上有显著提升。在代码压缩方面,相比 webpack 内置的 terser 压缩器,esbuild 在性能上有数十倍的提升。

    Modern.js Builder 提供了 esbuild 插件,让你能使用 esbuild 代替 babel-loader、ts-loader 和 terser 等库进行代码编译和压缩。在大型工程中启用 esbuild 后,可以大幅度减少代码编译和压缩所需的时间,同时有效避免 OOM (heap out of memory) 问题

    快速开始

    在 Modern.js 框架中使用

    -

    Modern.js 框架默认集成了 Builder 的 esbuild 插件,因此,你不需要手动安装和注册插件,只需要使用 tools.esbuild 配置项即可:

    +

    Modern.js 框架默认集成了 Builder 的 esbuild 插件,因此,你不需要手动安装和注册插件,只需要使用 tools.esbuild 配置项即可:

    export default defineConfig({
       tools: {
         esbuild: {
    @@ -56,7 +56,7 @@ 

    loader charset: builderConfig.output.charset, };

    这个选项用于启用 JavaScript 和 TypeScript 的转译,启用时将会使用 esbuild-loader 替换 babel-loader 和 ts-loader。

    -

    如果你需要修改转译参数,可以查看 esbuild-loader 文档

    +

    如果你需要修改转译参数,可以查看 esbuild-loader 文档

    设置 JSX 格式

    在使用 esbuild 进行代码转译时,esbuild 默认会读取 tsconfig.json 中的 compilerOptions.jsx 字段,来决定使用哪种 JSX 语法。

    因此,你需要在 tsconfig.json 中设置正确的 JSX 语法。

    @@ -67,7 +67,7 @@

    设置 J } }

    修改目标环境

    -

    通过 target 选项来修改代码转译的目标环境。target 可以直接设置为 JavaScript 语言版本,比如 es6es2020;也可以设置为若干个目标环境,每个目标环境都是一个环境名称后跟一个版本号,比如 ['chrome58', 'edge16' ,'firefox57']target 字段的详细介绍可以参考 esbuild - target

    +

    通过 target 选项来修改代码转译的目标环境。target 可以直接设置为 JavaScript 语言版本,比如 es6es2020;也可以设置为若干个目标环境,每个目标环境都是一个环境名称后跟一个版本号,比如 ['chrome58', 'edge16' ,'firefox57']target 字段的详细介绍可以参考 esbuild - target

    target 支持设置为以下环境:

    这个选项用于启用 JavaScript 和 CSS 的代码压缩。

    -

    如果你需要修改压缩参数,可以查看 esbuild-loader 文档

    +

    如果你需要修改压缩参数,可以查看 esbuild-loader 文档

    修改目标环境

    通过 target 选项来修改代码压缩的目标环境。

    builderPluginEsbuild({
    @@ -140,4 +140,4 @@ 

    如果你有 babel-plugin-import 等 Babel 插件相关诉求,可以使用 SWC 插件。

    产物体积

    使用 esbuild 压缩虽然带来了构建效率上的提升,但 esbuild 的压缩比例是低于 terser 的,因此构建产物的体积会增大,请根据业务情况酌情使用。通常来说,esbuild 比较适合中后台等对体积不敏感的场景。

    -

    对于压缩工具之间的详细对比,可以参考 minification-benchmarks

    \ No newline at end of file +

    对于压缩工具之间的详细对比,可以参考 minification-benchmarks

    \ No newline at end of file diff --git a/modern-js/builder/plugins/plugin-image-compress.html b/modern-js/builder/plugins/plugin-image-compress.html index 7a0e85876d..738e3074d0 100644 --- a/modern-js/builder/plugins/plugin-image-compress.html +++ b/modern-js/builder/plugins/plugin-image-compress.html @@ -1,4 +1,4 @@ -Image Compress 插件 - Modern.js Builder +Image Compress 插件 - Modern.js Builder -Modern.js Builder

    Image Compress 插件

    +Modern.js Builder

    Image Compress 插件

    Image Compress 插件会将项目中用到的图片资源进行压缩处理,进而在图片视觉观感不受影响的同时减小产物体积。

    快速开始

    安装插件

    @@ -44,4 +44,4 @@

    配置

    配置项列表最终会转换成对应的 bundler loader 配置,因此压缩器也遵循从下到上依次匹配的规则。 例如对于如下配置,png 压缩器会优先于 pngLossless 压缩器生效:

    builderPluginImageCompress(['jpeg', 'pngLossless', 'ico', 'png']);
    -

    压缩器的具体配置项请参考 @napi-rs/image

    \ No newline at end of file +

    压缩器的具体配置项请参考 @napi-rs/image

    \ No newline at end of file diff --git a/modern-js/builder/plugins/plugin-node-polyfill.html b/modern-js/builder/plugins/plugin-node-polyfill.html index 898c575de9..0aeabe4f0c 100644 --- a/modern-js/builder/plugins/plugin-node-polyfill.html +++ b/modern-js/builder/plugins/plugin-node-polyfill.html @@ -1,4 +1,4 @@ -Node Polyfill 插件 - Modern.js Builder +Node Polyfill 插件 - Modern.js Builder -Modern.js Builder

    Node Polyfill 插件

    +Modern.js Builder

    Node Polyfill 插件

    Node Polyfill 介绍

    通常情况下,我们不会在浏览器端使用 Node 模块。但在当前代码需要同时在 Node 端和浏览器端运行时,用到一些 Node 模块是有可能的。Node Polyfill 为这些 Node 模块提供了浏览器版本的 polyfills。

    通过使用 Node Polyfill 插件,会自动注入 Node 核心模块在浏览器端的 polyfills,让你可以在浏览器端放心使用这些模块。

    快速开始

    在 Modern.js 框架中使用

    -

    Modern.js 框架默认集成了 Builder 的 Node Polyfill 插件,因此,你不需要手动安装和注册插件,只需要将 output.disableNodePolyfill 设置为 false 即可:

    +

    Modern.js 框架默认集成了 Builder 的 Node Polyfill 插件,因此,你不需要手动安装和注册插件,只需要将 output.disableNodePolyfill 设置为 false 即可:

    export default defineConfig({
       output: {
         disableNodePolyfill: false,
    diff --git a/modern-js/builder/plugins/plugin-stylus.html b/modern-js/builder/plugins/plugin-stylus.html
    index 4471d3b9e0..14a809459b 100644
    --- a/modern-js/builder/plugins/plugin-stylus.html
    +++ b/modern-js/builder/plugins/plugin-stylus.html
    @@ -1,4 +1,4 @@
    -Stylus 插件 - Modern.js Builder
    +Stylus 插件 - Modern.js Builder
     
    -Modern.js Builder

    Stylus 插件

    +Modern.js Builder

    Stylus 插件

    Stylus 是一个富于表现力、动态的、健壮的 CSS 预处理器,本章节介绍如何在 Builder 中使用 Stylus。

    快速开始

    安装插件

    @@ -64,7 +64,7 @@

    stylusOp
    • 默认值: undefined
    -

    传递给 Stylus 的选项,请查阅 Stylus 文档 来了解具体用法。

    +

    传递给 Stylus 的选项,请查阅 Stylus 文档 来了解具体用法。

    builderPluginStylus({
       stylusOptions: {
         lineNumbers: false,
    diff --git a/modern-js/builder/plugins/plugin-swc.html b/modern-js/builder/plugins/plugin-swc.html
    index f455c75e00..6c46a185ac 100644
    --- a/modern-js/builder/plugins/plugin-swc.html
    +++ b/modern-js/builder/plugins/plugin-swc.html
    @@ -1,4 +1,4 @@
    -SWC 插件 - Modern.js Builder
    +SWC 插件 - Modern.js Builder
     
    -Modern.js Builder

    SWC 插件

    -

    SWC (Speedy Web Compiler) 是基于 Rust 语言编写的高性能 JavaScript 和 TypeScript 转译和压缩工具。在 Polyfill 和语法降级方面可以和 Babel 提供一致的能力,并且性能比 Babel 高出一个数量级。

    +Modern.js Builder

    SWC 插件

    +

    SWC (Speedy Web Compiler) 是基于 Rust 语言编写的高性能 JavaScript 和 TypeScript 转译和压缩工具。在 Polyfill 和语法降级方面可以和 Babel 提供一致的能力,并且性能比 Babel 高出一个数量级。

    Modern.js 提供了开箱即用的 SWC 插件,可以为你的 Web 应用提供语法降级、Polyfill 以及压缩,并且移植了一些额外常见的 Babel 插件。

    适用场景

    在使用 SWC 插件之前,请先了解一下 SWC 插件的适用场景和局限性,以明确你的项目是否需要使用 SWC 插件。

    @@ -22,16 +22,16 @@

    Babel 插 -

    如果你使用了 SWC 尚未支持的 Babel 插件能力,在切换到 SWC 编译后,将无法再使用它们。你可以到 swc-plugins 仓库下通过 issues 进行反馈,我们会评估是否需要内置支持。

    +

    如果你使用了 SWC 尚未支持的 Babel 插件能力,在切换到 SWC 编译后,将无法再使用它们。你可以到 swc-plugins 仓库下通过 issues 进行反馈,我们会评估是否需要内置支持。

    产物体积

    -

    在使用 SWC 来代替 tersercssnano 进行代码压缩时,构建产物的体积可能会出现少量变化。在 JavaScript 代码压缩方面,SWC 的压缩率是优于 terser 的;在 CSS 代码压缩方面,SWC 的压缩率稍逊于 cssnano。

    -

    对于压缩工具之间的详细对比,可以参考 minification-benchmarks

    +

    在使用 SWC 来代替 tersercssnano 进行代码压缩时,构建产物的体积可能会出现少量变化。在 JavaScript 代码压缩方面,SWC 的压缩率是优于 terser 的;在 CSS 代码压缩方面,SWC 的压缩率稍逊于 cssnano。

    +

    对于压缩工具之间的详细对比,可以参考 minification-benchmarks

    快速开始

    在 Modern.js 框架中使用

    Modern.js 框架对 Builder 的 SWC 插件进行了封装,你可以通过以下方式来使用:

    @@ -82,13 +82,13 @@

    配置当使用函数形式配置时,则会传入插件内部产出的默认配置,可以对其进行修改或返回新的配置。

    presetReact

      -
    • 类型: SWC 中的 react 配置。
    • +
    • 类型: SWC 中的 react 配置。

    对标 @babel/preset-react。传入的值会与默认配置进行合并。

    插件默认会自动根据你的 react 版本确定 runtime 字段,如果 react 版本大于 17.0.0,会设置成 automatic,否则设置成 classic

    presetEnv

    对标 @babel/preset-env。传入的值会与默认配置进行合并。 默认配置为:

    @@ -98,7 +98,7 @@

    presetEnv}

    jsMinify

    如果配置 false 将不会使用 SWC 的压缩能力,配置 true 会启用默认压缩配置,如果配置是对象,则会与默认配置进行合并。

    @@ -168,7 +168,7 @@

    exten additionalLibraries?: string[]; classNameMatchers?: string[]; };

    -

    移除 React 组件在运行时的类型判断。移植自 @babel/plugin-react-transform-remove-prop-types

    +

    移除 React 组件在运行时的类型判断。移植自 @babel/plugin-react-transform-remove-prop-types

    相应配置和 @babel/plugin-react-transform-remove-prop-types 插件保持一致。

    extensions.lodash

      @@ -185,7 +185,7 @@

      extension cwd: process.cwd(), ids: ['lodash', 'lodash-es'], };

    -

    移植自 babel-plugin-lodash,用于自动将 Lodash 的引用转换为按需引入,从而减少打包后的 Lodash 代码大小。

    +

    移植自 babel-plugin-lodash,用于自动将 Lodash 的引用转换为按需引入,从而减少打包后的 Lodash 代码大小。

    // Input
     import { get, throttle } from 'lodash';
     
    @@ -205,7 +205,7 @@ 

    cssProp?: boolean; // 默认开启 namespace?: string; // 默认空 };

    -

    由 Next.js 团队移植自 babel-plugin-styled-components

    +

    由 Next.js 团队移植自 babel-plugin-styled-components

    extensions.emotion

    • 类型:
    • @@ -231,11 +231,11 @@

      extensio } }, },

    -

    由 Next.js 团队移植自 @emotion/babel-plugin

    +

    由 Next.js 团队移植自 @emotion/babel-plugin

    extensions.pluginImport

    -
    TIP

    Builder 提供了 source.transformImport 配置项,因此你不需要手动配置 extensions.pluginImport。 +

    TIP

    Builder 提供了 source.transformImport 配置项,因此你不需要手动配置 extensions.pluginImport

    -

    移植自 babel-plugin-import,配置选项保持一致。

    +

    移植自 babel-plugin-import,配置选项保持一致。

    一些配置可以传入函数,例如 customNamecustomStyleName 等,这些 JavaScript 函数会由 Rust 通过 Node-API 调用,这种调用会造成一些性能劣化。

    简单的函数逻辑其实可以通过模版语言来代替,因此customNamecustomStyleName 等这些配置除了可以传入函数,也可以传入字符串作为模版来代替函数,提高性能。

    我们以下面代码为例说明:

    @@ -254,7 +254,7 @@

    ext

    其中的 {{ member }} 会被替换为相应的引入成员,转换后:

    import Btn from 'foo/es/MyButton';

    可以看出配置 customName: "foo/es/{{ member }}" 的效果等同于配置 customName: (member) => `foo/es/${member}` ,但是不会有 Node-API 的调用开销。

    -

    这里使用到的模版是 handlebars,模版配置中还内置了一些有用的辅助工具,还是以上面的导入语句为例,配置成:

    +

    这里使用到的模版是 handlebars,模版配置中还内置了一些有用的辅助工具,还是以上面的导入语句为例,配置成:

    PluginSWC({
       extensions: {
         pluginImport: [
    diff --git a/modern-js/builder/plugins/plugin-vue.html b/modern-js/builder/plugins/plugin-vue.html
    index ab5159f4eb..da64dad83c 100644
    --- a/modern-js/builder/plugins/plugin-vue.html
    +++ b/modern-js/builder/plugins/plugin-vue.html
    @@ -1,4 +1,4 @@
    -Vue 插件 - Modern.js Builder
    +Vue 插件 - Modern.js Builder
     
    -Modern.js Builder

    Vue 插件

    -

    Vue 插件提供了对 Vue 3 应用构建的支持,插件内部集成了 vue-loader@vue/babel-plugin-jsx

    +Modern.js Builder

    Vue 插件

    +

    Vue 插件提供了对 Vue 3 应用构建的支持,插件内部集成了 vue-loader@vue/babel-plugin-jsx

    快速开始

    安装插件

    你可以通过如下的命令安装插件:

    @@ -20,7 +20,7 @@

    注册插
    import { builderPluginVue } from '@modern-js/builder-plugin-vue';
     
     builder.addPlugins([builderPluginVue()]);
    -

    安装完插件后,你可以直接在代码中引入 *.vue 文件,也可以使用 Vue 的 JSX 语法,无须添加其他配置。

    +

    安装完插件后,你可以直接在代码中引入 *.vue 文件,也可以使用 Vue 的 JSX 语法,无须添加其他配置。

    配置

    如果你需要自定义 Vue 的编译行为,可以使用以下配置项。

    vueLoaderOptions

    @@ -34,7 +34,7 @@

    vueLo }, experimentalInlineMatchResource: builder === 'rspack', };

    -

    传递给 vue-loader 的选项,请查阅 vue-loader 文档 来了解具体用法。

    +

    传递给 vue-loader 的选项,请查阅 vue-loader 文档 来了解具体用法。

    builderPluginVue({
       vueLoaderOptions: {
         hotReload: false,
    @@ -61,7 +61,7 @@ 

    vueJsxOp
    • 默认值: {}
    -

    传递给 @vue/babel-plugin-jsx 的选项,请查阅 @vue/babel-plugin-jsx 文档 来了解具体用法。

    +

    传递给 @vue/babel-plugin-jsx 的选项,请查阅 @vue/babel-plugin-jsx 文档 来了解具体用法。

    builderPluginVue({
       vueJsxOptions: {
         transformOn: true,
    diff --git a/modern-js/builder/plugins/plugin-vue2.html b/modern-js/builder/plugins/plugin-vue2.html
    index 08389e504b..1e86e3f7e6 100644
    --- a/modern-js/builder/plugins/plugin-vue2.html
    +++ b/modern-js/builder/plugins/plugin-vue2.html
    @@ -1,4 +1,4 @@
    -Vue 2 插件 - Modern.js Builder
    +Vue 2 插件 - Modern.js Builder
     
    -Modern.js Builder

    Vue 2 插件

    -

    Vue 2 插件提供了对 Vue 2 应用构建的支持,插件内部集成了 vue-loader@vue/babel-preset-jsx

    +Modern.js Builder

    Vue 2 插件

    +

    Vue 2 插件提供了对 Vue 2 应用构建的支持,插件内部集成了 vue-loader@vue/babel-preset-jsx

    快速开始

    安装插件

    你可以通过如下的命令安装插件:

    @@ -20,7 +20,7 @@

    注册插
    import { builderPluginVue2 } from '@modern-js/builder-plugin-vue2';
     
     builder.addPlugins([builderPluginVue2()]);
    -

    安装完插件后,你可以直接在代码中引入 *.vue 文件,也可以使用 Vue 的 JSX 语法,无须添加其他配置。

    +

    安装完插件后,你可以直接在代码中引入 *.vue 文件,也可以使用 Vue 的 JSX 语法,无须添加其他配置。

    配置

    如果你需要自定义 Vue 的编译行为,可以使用以下配置项。

    vueLoaderOptions

    @@ -33,7 +33,7 @@

    vueLo preserveWhitespace: false, }, };

    -

    传递给 vue-loader 的选项,请查阅 vue-loader 文档 来了解具体用法。

    +

    传递给 vue-loader 的选项,请查阅 vue-loader 文档 来了解具体用法。

    builderPluginVue2({
       vueLoaderOptions: {
         hotReload: false,
    @@ -58,7 +58,7 @@ 

    vueJsxOp
    const defaultOptions = {
       injectH: true,
     };
    -

    传递给 @vue/babel-preset-jsx 的选项,请查阅 @vue/babel-preset-jsx 文档 来了解具体用法。

    +

    传递给 @vue/babel-preset-jsx 的选项,请查阅 @vue/babel-preset-jsx 文档 来了解具体用法。

    builderPluginVue2({
       vueJsxOptions: {
         injectH: false,
    diff --git a/modern-js/builder/static/css/styles.7c5c11e3.css b/modern-js/builder/static/css/styles.c246dc17.css
    similarity index 76%
    rename from modern-js/builder/static/css/styles.7c5c11e3.css
    rename to modern-js/builder/static/css/styles.c246dc17.css
    index bc8637b56b..744575a597 100644
    --- a/modern-js/builder/static/css/styles.7c5c11e3.css
    +++ b/modern-js/builder/static/css/styles.c246dc17.css
    @@ -14,4 +14,4 @@
         Monaco,
         Consolas,
         "Courier New",
    -    monospace}.first\:mt-2:first-child{margin-top:.5rem}.last\:mr-0:last-child{margin-right:0}.even\:bg-soft:nth-child(2n){background-color:var(--rp-c-bg-soft)}.hover\:border-brand-dark:hover{border-color:var(--rp-c-brand-dark)}.hover\:border-gray-600:hover{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.hover\:bg-mute:hover{background-color:var(--rp-c-bg-mute)}.hover\:text-brand-dark:hover{color:var(--rp-c-brand-dark)}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\:text-text-1:hover{color:var(--rp-c-text-1)}.hover\:text-text-2:hover{color:var(--rp-c-text-2)}.hover\:opacity-60:hover{opacity:.6}.dark .dark\:hover\:border-gray-200:hover{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.dark .dark\:hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}@media(min-width:640px){.sm\:m-4{margin:1rem}.sm\:mt-0{margin-top:0}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-xl{max-width:36rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-row{flex-direction:row}.sm\:justify-around{justify-content:space-around}.sm\:p-8{padding:2rem}.sm\:px-16{padding-left:4rem;padding-right:4rem}.sm\:pb-2{padding-bottom:.5rem}.sm\:pb-40{padding-bottom:10rem}.sm\:pl-4{padding-left:1rem}.sm\:pr-2{padding-right:.5rem}.sm\:pt-10{padding-top:2.5rem}.sm\:pt-24{padding-top:6rem}.sm\:pt-8{padding-top:2rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-6xl{font-size:3.75rem;line-height:1}.sm\:leading-8{line-height:2rem}}@media(min-width:768px){.md\:order-1{order:1}.md\:order-2{order:2}.md\:m-0{margin:0}.md\:ml-1{margin-left:.25rem}.md\:mr-2{margin-right:.5rem}.md\:flex{display:flex}.md\:flex-row{flex-direction:row}.md\:flex-wrap{flex-wrap:wrap}.md\:justify-center{justify-content:center}.md\:px-16{padding-left:4rem;padding-right:4rem}.md\:pb-16{padding-bottom:4rem}.md\:pb-3{padding-bottom:.75rem}.md\:pt-16{padding-top:4rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-7xl{font-size:4.5rem;line-height:1}}@media(min-width:1024px){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:pb-2{padding-bottom:.5rem}}.\[\&\:not\(\:first-child\)\]\:mt-2:not(:first-child){margin-top:.5rem}:root{--rp-code-font-size:14px;--rp-code-block-color:rgb(46, 52, 64);--rp-code-title-bg:rgba(0, 99, 199, 0.05);--rp-code-block-bg:#f6f8fa;--rp-code-line-highlight-color:rgba(0, 99, 199, 0.1);--rp-code-line-number-color:rgba(235, 235, 235, 0.38);--rp-code-copy-code-hover-bg:rgba(255, 255, 255, 0.05);--rp-code-wrap-code-hover-bg:rgba(255, 255, 255, 0.05)}.dark{--rp-code-block-color:rgb(229, 231, 235);--rp-code-block-bg:#242424;--rp-code-title-bg:rgba(255, 255, 255, 0.04);--rp-code-line-highlight-color:rgba(255, 255, 255, 0.1);--rp-code-line-number-color:rgba(60, 60, 60, 0.33)}.rspress-doc-container :not(pre,h1,h2,h3,h4,h5,h6)>code,.rspress-sidebar code{font-size:var(--rp-code-font-size)}.rspress-doc-container :not(pre,div,a)>code,.rspress-sidebar code{border-radius:var(--rp-radius-small);padding:4px 8px;color:var(--rp-c-text-code);background-color:var(--rp-c-bg-mute);overflow-wrap:break-word}.rspress-doc-container h1>code,.rspress-doc-container h2>code,.rspress-doc-container h3>code{font-size:.9em}.rspress-doc-container a>code{color:var(--rp-c-brand);transition:color.25s;border:none}.rspress-doc-container a:hover>code{color:var(--rp-c-brand-dark)}.rspress-doc-container div[class^=language-]{position:relative;margin:16px 0;background-color:var(--rp-code-block-bg);overflow-x:auto;transition:none}.rspress-doc-container .rspress-code-title{padding:12px 16px;font-size:var(--rp-code-font-size);background-color:var(--rp-code-title-bg);transition:background-color.5s}@media(min-width:640px){.rspress-doc-container div[class^=language-]{border-radius:var(--rp-radius);margin:24px 0;contain:content}}@media(max-width:640px){.rspress-doc-container li div[class^=language-]{border-radius:var(--rp-radius-small)0 0 var(--rp-radius-small)}}.rspress-doc-container [class^=language-] pre,.rspress-doc-container [class^=language-] code{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.rspress-doc-container [class^=language-] pre{position:relative;z-index:1;margin:0;background:transparent;overflow-x:auto}.rspress-doc-container [class^=language-] code{display:block;padding:16px 0;width:-moz-fit-content;width:fit-content;min-width:100%;line-height:1.7;font-size:var(--rp-code-font-size);color:var(--rp-code-block-color);background-color:var(--rp-code-block-bg);transition:color.5s}.rspress-doc-container [class^=language-] .rspress-code-content{position:relative}.rspress-doc-container [class^=language-] .rspress-code-content span.highlighted{background-color:var(--rp-code-line-highlight-color);position:absolute;display:block;left:0;right:0;padding-left:20px}.rspress-doc-container [class^=language-] .rspress-code-content>code{padding:16px 20px}.rspress-scrollbar{scrollbar-gutter:stable}.rspress-scrollbar::-webkit-scrollbar{width:12px;height:8px;-webkit-transition:all.3s;transition:all.3s}.rspress-scrollbar::-webkit-scrollbar-track{background:transparent}.rspress-scrollbar::-webkit-scrollbar-thumb{border-radius:var(--rp-radius-small)}.rspress-scrollbar:hover::-webkit-scrollbar-thumb{border:3px solid transparent;background-color:var(--rp-c-text-4);background-clip:content-box}.rspress-scrollbar::-webkit-scrollbar-corner{background:transparent}.aside-link{padding-bottom:1px}.aside-link-text{padding:0 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:var(--rp-radius-small)0 0 var(--rp-radius-small);font-size:13px;line-height:1.75rem}.aside-link-text:hover{background-color:var(--rp-c-bg-mute)}.aside-active,.aside-active:hover{color:var(--rp-c-brand-dark)!important;background-color:var(--rp-c-brand-tint)}.editLink_2a169{color:var(--rp-c-brand);text-decoration:none;font-size:15px;font-weight:500;margin:20px 0;transition:all.2s ease-in-out}.editLink_2a169:hover{color:var(--rp-c-brand-dark)}.link_03735:hover{color:var(--rp-c-brand);transition:color.2s}.link_03735{font-weight:500}.pager-link_9b9a7{display:block;border:1px solid var(--rp-c-divider-light)!important;border-radius:var(--rp-radius);padding:16px 20px;width:100%;height:100%;transition:border-color.25s}.pager-link_9b9a7:hover{border-color:var(--rp-c-brand)!important}.pager-link_9b9a7:hover .title_9b9a7{color:var(--rp-c-brand-dark)}.pager-link_9b9a7.next_9b9a7{margin-left:auto;text-align:right}.desc_9b9a7{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--rp-c-text-2)}.title_9b9a7{display:block;line-height:24px;font-size:14px;font-weight:500;color:var(--rp-c-brand);transition:color.25s}@media(min-width:640px){.pager_e7091{display:flex;flex-direction:column;width:50%}.pager_e7091.has-next_e7091{padding-top:0;padding-left:16px}}.prev_e7091,.next_e7091{width:100%}.hidden_f6cde{transform:translate3d(0,-100%,0);background:transparent;opacity:0}.container_f6cde{margin:auto}.navContainer_f6cde{top:0;left:0;transition:all.3s ease;transition-property:transform,opacity;background:var(--rp-c-bg);height:var(--rp-nav-height);z-index:var(--rp-z-index-nav)}.leftNav_f6cde,.rightNav_f6cde{display:none}.singleItem_f6cde{word-break:keep-all}.activeItem_f6cde,.singleItem_f6cde:hover{background-color:var(--rp-c-bg-mute);cursor:pointer;color:var(--rp-c-brand-dark);border-radius:var(--rp-radius)}.navBarTitle_f6cde{flex-shrink:0}.navContainer_f6cde :deep(*){pointer-events:all}.social-links-icon_f6cde{width:20px;height:100%;display:flex;fill:currentColor;color:var(--rp-c-text-2)}.social-links-icon_f6cde:hover{color:var(--rp-c-text-1)}.menu-item_f6cde{display:none;margin:0 8px}@media(max-width:768px){:root{--rp-nav-height:56px}.menu-item_f6cde:before{display:none}.mobileNavMenu_f6cde{display:flex}}@media(min-width:768px){.menu-item_f6cde{display:flex}.leftNav_f6cde{display:flex;align-items:center;flex-grow:1;margin:0 .5rem}.rightNav_f6cde{display:flex;align-items:center}.mobileNavMenu_f6cde{display:none}}@media(min-width:960px){.mask_f6cde{position:absolute;right:0;bottom:-30px;width:100vw;height:30px}.mask_f6cde.docPage_f6cde{width:calc(100vw - 48px - var(--rp-sidebar-width))}.mask_f6cde:before{display:block;width:100%;height:30px;background:linear-gradient(var(--rp-c-bg),transparent 60%);content:""}.leftNav_f6cde{margin:0 2rem}}.navTitleMask_71eca{padding-left:1.5rem;height:var(--rp-nav-height);display:flex;align-items:center}.sidebar_71eca{position:fixed;top:0;bottom:0;left:0;z-index:var(--rp-z-index-sidebar);width:calc(100vw - 64px);max-width:320px;opacity:0;transform:translatex(-100%);transition:opacity.5s,transform.25s ease;background:var(--rp-c-bg)}.sidebarContainer_71eca{padding:0 12px 96px 0}.sidebarContent_71eca{overflow-x:hidden}.sidebar_71eca.open_71eca{opacity:1;visibility:visible;transform:translatex(0);transition:opacity.25s,transform.5s cubic-bezier(.19,1,.22,1)}@media(min-width:960px){.sidebar_71eca{z-index:5;opacity:1;visibility:visible;position:sticky;margin-top:calc(-1*var(--rp-nav-height));height:100vh;width:var(--rp-sidebar-width);transform:translatex(0);box-shadow:var(--rp-c-shadow-3);-webkit-mask-image:linear-gradient(transparent,#000 20px),linear-gradient(270deg,#000 10px,transparent 0);mask-image:linear-gradient(transparent,#000 20px),linear-gradient(270deg,#000 10px,transparent 0);--webkit-mask-image:linear-gradient(270deg, #000 10px, transparent 0)}}@media(min-width:1440px){.sidebar_71eca{width:var(--rp-sidebar-width)}.sidebarContainer_71eca{padding-left:0}}.menuLink_71eca{opacity:1}.menuLink_71eca:hover{color:inherit;transition:all.2s}.menuItem_71eca:hover{background-color:var(--rp-c-bg-mute);transition:all.2s}.collapseContainer_71eca:hover{background-color:rgba(229,229,229,.4);transition:all.2s}.dark .menuItem_71eca:hover,.dark .collapseContainer_71eca:hover{background-color:var(--rp-c-bg-mute);transition:all.2s}.menuItem_71eca,.menuItemStatic_71eca,.menuItemActive_71eca{font-size:13px;line-height:19px;border-radius:0 var(--rp-radius)var(--rp-radius)0}.menuItem_71eca,.menuItemStatic_71eca{color:var(--rp-c-text-2);transition:color.2s;font-weight:500}.menuItemActive_71eca{background-color:var(--rp-c-brand-tint);color:var(--rp-c-brand);font-weight:bolder;position:relative}.menuItemActive_71eca:before{content:"";position:absolute;top:0;left:0;width:1px;height:100%;background-color:var(--rp-c-brand);transition:all.2s ease}.menuGroupActive_71eca{background-color:var(--rp-c-bg-mute)}.rspress-sidebar-group{position:relative}.rspress-sidebar-group:before{content:"";position:absolute;top:0;left:18px;width:1px;height:100%;background-color:var(--rp-c-gray-light-4)}.rspress-sidebar-section-header{display:flex;align-items:center;padding:8px 0 8px 16px}.rspress-sidebar-section-header>span{display:flex;align-items:center;margin-left:8px;font-size:14px;line-height:20px;color:var(--rp-c-text-1);font-weight:700}.dark .rspress-sidebar-group:before{background-color:var(--rp-c-bg-mute)}.dark .sidebar_71eca{box-shadow:var(--rp-shadow-1)}.rspress-sidebar-menu{position:sticky;top:0;left:0;z-index:var(--rp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--rp-c-divider-light);border-top:1px solid var(--rp-c-divider-light);width:100%;color:var(--rp-c-text-1);background-color:var(--rp-c-bg);padding-left:10px}.rspress-sidebar-menu>button{padding:12px;transition:color.5s}.rspress-sidebar-menu>button:hover{color:var(--rp-c-text-3)}.rspress-sidebar-back-drop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--rp-z-index-backdrop)}@media(min-width:960px){.rspress-sidebar-menu,.rspress-sidebar-back-drop{display:none}}.rspress-local-toc-container{position:absolute;padding:6px;border-radius:var(--rp-radius-small);top:var(--rp-nav-height);background-color:var(--rp-c-bg-soft);right:20px;max-width:250px;transition:all.3s;overflow-y:scroll}.rspress-toc-link{display:block;border-radius:var(--rp-radius-small);transition:all.3s}.rspress-toc-link-text{padding:6px 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all.2s ease-in-out;border-radius:var(--rp-radius-small);color:var(--rp-c-text-2)}.rspress-toc-link-text:hover{background-color:var(--rp-c-bg-mute);color:var(--rp-c-text-1)}.overview-index h1,.overview-index h2,.overview-index h3{font-weight:600}.overview-index h2,.overview-index h3{line-height:1}.overview-index h2{letter-spacing:-.02em;font-size:24px;color:var(--rp-c-text-1);margin:36px 0;transition:color.5s;padding-top:36px;border-top:1px solid var(--rp-c-divider-light)}.overview-index h3,.overview-index h3>a{letter-spacing:-.01em;color:var(--rp-c-brand);font-size:18px;margin-bottom:1em;transition:color.5s;font-weight:600}.overview-index h3>a{margin:0;line-height:1.3}.overview-index h3>a:hover{transition:color.5s;color:var(--rp-c-brand-dark)}.overview-index h3:before{display:none}.overview-index h1:hover .header-anchor_8f375,.overview-index h1:focus .header-anchor_8f375,.overview-index h2:hover .header-anchor_8f375,.overview-index h2:focus .header-anchor_8f375,.overview-index h3:hover .header-anchor_8f375,.overview-index h3:focus .header-anchor_8f375,.overview-index h4:hover .header-anchor_8f375,.overview-index h4:focus .header-anchor_8f375,.overview-index h5:hover .header-anchor_8f375,.overview-index h5:focus .header-anchor_8f375,.overview-index h6:hover .header-anchor_8f375,.overview-index h6:focus .header-anchor_8f375{opacity:1}.overview-index a.header-anchor_8f375{float:left;margin-top:.125em;margin-left:-.87em;padding-right:.23em;font-size:.85em;opacity:0;font-weight:500;color:var(--rp-c-brand);transition:color.25s;text-decoration-style:dotted}.overview-index a.header-anchor_8f375:hover,.overview-index a.header-anchor_8f375:focus{text-decoration:none}.overview-groups_8f375 a{display:block;font-size:15px;font-weight:500;line-height:1.6;margin-top:8px;color:var(--rp-c-text-code);transition:color.5s;word-break:break-all}.overview-group-li_8f375{position:relative}.overview-group-li_8f375.level-2_8f375{padding-left:1px}.overview-group-li_8f375.level-2_8f375:before{left:-.25rem}.dark overview-groups a{font-weight:400}.overview-group_8f375{break-inside:avoid;margin-bottom:28px;background-color:var(--rp-c-bg-soft);border-radius:var(--rp-radius);padding:28px 32px;transition:background-color.5s}@media(max-width:768px){.overview-index{padding:42px 24px}.overview-index h1{font-size:32px;margin-bottom:24px}.overview-index h2{font-size:22px;margin:42px 0 32px;padding-top:32px}.overview-groups_8f375 a{font-size:14px}.header_8f375{display:block}}@media(min-width:768px){.overview-groups_8f375{columns:2}}@media(min-width:1024px){.overview-groups_8f375{columns:3}}.scroll-to-top_1a167{z-index:1;position:fixed;right:1rem;bottom:1rem;padding:.5rem;border-radius:9999px;color:var(--rp-c-text-1);border-color:var(--rp-c-text-3);border-width:.1px;background-color:var(--rp-c-bg-soft);box-shadow:0 1px 3px 0 var(--rp-shadow-1),0 1px 2px 0 var(--rp-shadow-2);transform:scale(0);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:75ms}.scroll-to-top_1a167.entered_1a167{transform:scale(1)!important}.aside-container_edeb4{position:sticky;display:none;top:0;margin-top:calc(-32px + -1*var(--rp-nav-height));padding-top:calc(32px + var(--rp-nav-height));overflow-x:hidden;overflow-y:auto;scrollbar-width:none;width:0;max-height:calc(32px + 100vh - var(--rp-nav-height))}.aside-container_edeb4::-webkit-scrollbar{display:none}.rspress-doc{min-height:60vh;view-transition-name:flip}*{view-transition-name:none}@keyframes fade-out_edeb4{0%{opacity:1}to{opacity:0;transform:translatey(20px)}}@keyframes fade-in_edeb4{0%{opacity:0;transform:translatey(20px)}to{opacity:1}}::view-transition-old(flip),::view-transition-new(flip){animation-time:.25s}::view-transition-old(flip){animation-name:fade-out_edeb4;transition-timing-function:ease-out}::view-transition-new(flip){animation-name:fade-in_edeb4;animation-delay:.18s;transition-timing-function:ease-in}@media(max-width:960px){.docLayout_edeb4{position:relative}.content_edeb4{padding:36px 24px 72px}.rspress-doc{view-transition-name:none}}@media(min-width:960px){.docLayout_edeb4{width:100%;display:flex}.content_edeb4{width:calc(100% - var(--rp-sidebar-width));padding:48px 48px 72px max(0px,48px - var(--rp-sidebar-width))}.content_edeb4 .rspress-doc,.content_edeb4 .rspress-doc-footer{width:100%}.aside-container_edeb4{width:var(--rp-aside-width)}}@media(min-width:1280px){.aside-container_edeb4{display:block;width:var(--rp-aside-width)}.content_edeb4{padding:48px 0 72px}.content_edeb4 .rspress-doc,.content_edeb4 .rspress-doc-footer{padding:0 48px;box-sizing:border-box;width:calc(100vw - var(--rp-sidebar-width) - var(--rp-aside-width));max-width:min(100%,1056px);margin:auto}}@media(min-width:1440px){.docLayout_edeb4{width:100%;margin-left:0}.content_edeb4 .rspress-doc,.content_edeb4 .rspress-doc-footer{box-sizing:border-box;width:calc(100vw - var(--rp-sidebar-width) - var(--rp-aside-width));padding:0 48px;max-width:min(100%,1056px);margin:auto}}.button_72e53{display:inline-block;text-align:center;font-weight:700;white-space:nowrap;height:48px;line-height:48px}.button_72e53:active{transition:color.1s,border-color.1s,background-color.1s}.button_72e53.medium_72e53{border-radius:var(--rp-radius);padding:0 20px;line-height:38px;height:38px;font-size:14px}.button_72e53.big_72e53{border-radius:var(--rp-radius-large);font-size:16px;min-width:142px;font-weight:700}.button_72e53.brand_72e53,.button_72e53.brand_72e53:hover,.button_72e53.brand_72e53:active{opacity:1;color:#fff;transition:all.3s ease}.button_72e53.brand_72e53{background:linear-gradient(275deg,var(--rp-c-brand-dark)3%,var(--rp-c-brand-light)97%)}.button_72e53.brand_72e53:hover{background-color:var(--rp-c-brand-light);opacity:.8}.button_72e53.alt_72e53,.button_72e53.alt_72e53:hover,.button_72e53.alt_72e53:active{border:1px solid var(--rp-c-gray-light-3);color:var(--rp-c-text-1);background-color:var(--rp-c-gray-light-5);transition:all.3s ease}.dark .button_72e53.alt_72e53{background-color:var(--rp-c-bg-mute);border-color:#484848;color:var(--rp-c-text-1)}.button_72e53.alt_72e53:hover{background-color:var(--rp-c-gray-light-4)}.dark .button_72e53.alt_72e53:hover{background-color:#484848}@media(max-width:768px){.button_72e53.big_72e53{font-size:14px;min-width:100px;height:42px;line-height:42px}}.clip_c867a{background:var(--rp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--rp-home-hero-name-color)}.mask_c867a{position:absolute;background-image:conic-gradient(from 180deg at 50%50%,var(--rp-c-brand)0deg,180deg,#42d392 0deg);max-width:500px;width:100%;height:500px;border-radius:100%;mixblendmode:normal;filter:blur(80px);opacity:.05;top:-100px;transform:translatex(-50%);z-index:0}.dark .mask_c867a{opacity:.15}@media(min-width:640px){.rspress-home-hero-image{width:375px}}@media(max-width:640px){.rspress-home-hero-image{max-width:250px}}@media(max-width:768px){.mask_c867a{display:none}}@media(max-width:640px){.grid-2_ffda3,.grid-4_ffda3,.grid-6_ffda3{width:100%}}@media(min-width:640px){.grid-2_ffda3,.grid-4_ffda3,.grid-6_ffda3{width:50%}}@media(min-width:768px){.grid-2_ffda3,.grid-4_ffda3{width:50%}.grid-3_ffda3,.grid-6_ffda3{width:33.3333333333%}}@media(min-width:960px){.grid-3_ffda3{width:25%}.grid-4_ffda3{width:33.3333333333%}.grid-6_ffda3{width:50%}}.featureCard_ffda3{background:var(--rp-home-feature-bg);border:1px solid transparent;transition:all.3s}.featureCard_ffda3:hover{background:var(--rp-home-feature-hover-bg);border:1px solid var(--rp-c-brand)}:root{--rp-home-hero-name-color:transparent;--rp-home-hero-name-background:-webkit-linear-gradient( 120deg, var(--rp-c-brand) 30%, #42d392 );--rp-home-hero-image-background-image:none;--rp-home-hero-image-filter:none;--rp-home-feature-bg:#f9f9f9;--rp-home-feature-hover-bg:linear-gradient(to bottom, #ededed, #f9f9f9)}.dark{--rp-home-bg:#000;--rp-home-feature-bg:#242424;--rp-home-feature-hover-bg:#2f2f2f}.social-links-icon_93d67{width:24px;height:24px;display:flex;fill:currentColor;margin-left:.5rem;color:var(--rp-c-text-2)}.social-links-icon_93d67:hover{color:var(--rp-c-text-1)}@media(max-width:768px){.menu-item_93d67:before{display:none}}.navScreen_457e8{display:none;position:fixed;top:var(--rp-nav-height);right:0;bottom:0;left:0;padding:32px;width:100%;background-color:var(--rp-c-bg);overflow-y:auto;pointer-events:auto;z-index:20}.active_457e8{display:block}.container_457e8{margin:0 auto;padding:24px 0 96px;max-width:248px}.navMenu_457e8{display:flex;justify-content:center;align-items:center;flex-direction:column}.navMenuItem_457e8{display:flex;justify-content:center;padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--rp-c-text-1);border-bottom:1px solid var(--rp-c-divider-light);transition:border-color.5s,color.25s}.navAppearance_457e8{padding-right:0}.socialAndAppearance_457e8{padding:8px 0 7px}.navScreenMenuGroup_457e8{height:39px;overflow:hidden;transition:border-color.5s}.navScreenMenuGroup_457e8.open_457e8{padding-bottom:10px;height:auto}.button_457e8{display:flex;justify-content:center;align-items:center;padding:8px 0 7px;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--rp-c-text-1);transition:color.25s}.buttonSpan_457e8{display:flex;align-items:center;height:24px;padding-right:4px}.navScreenMenuGroup_457e8 .items_457e8{visibility:hidden}.navScreenMenuGroup_457e8.open_457e8 .items_457e8{visibility:visible}.down_457e8{transition:all.5s}.open_457e8.down_457e8{transform:rotate(180deg)}.navHamburger_e7b06{display:flex;justify-content:center;align-items:center;width:36px;height:56px;margin-left:6px}@media(min-width:768px){.navHamburger_e7b06{display:none}}.container_e7b06{position:relative;width:16px;height:14px;overflow:hidden}.navHamburger_e7b06:hover .top_e7b06{top:0;left:0;transform:translatex(4px)}.navHamburger_e7b06:hover .middle_e7b06{top:6px;left:0;transform:translatex(0)}.navHamburger_e7b06:hover .bottom_e7b06{top:12px;left:0;transform:translatex(8px)}.navHamburger_e7b06.active_e7b06 .top_e7b06{top:6px;transform:translatex(0)rotate(225deg)}.navHamburger_e7b06.active_e7b06 .middle_e7b06{top:6px;transform:translatex(16px)}.navHamburger_e7b06.active_e7b06 .bottom_e7b06{top:6px;transform:translatex(0)rotate(135deg)}.navHamburger_e7b06.active_e7b06:hover .top_e7b06,.navHamburger_e7b06.active_e7b06:hover .middle_e7b06,.navHamburger_e7b06.active_e7b06:hover .bottom_e7b06{transition:top.25s,background-color.25s,transform.25s}.top_e7b06,.middle_e7b06,.bottom_e7b06{position:absolute;width:16px;height:1.5px;background-color:var(--rp-c-text-2);transition:top.25s,background-color.5s,transform.25s}.top_e7b06{top:0;left:0;transform:translatex(0)}.middle_e7b06{top:6px;left:0;transform:translatex(8px)}.bottom_e7b06{top:12px;left:0;transform:translatex(4px)}.mask_6e282{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(84,84,84,.7019607843);z-index:100}.modal_6e282{position:relative;background-color:var(--rp-c-bg-soft);border-radius:var(--rp-radius);margin:80px auto auto;max-width:560px;padding:20px;padding-bottom:20px;height:auto}.inputForm_6e282{width:100%;height:55px;display:flex;align-items:center;padding:0 12px;background-color:var(--rp-c-bg);border:1px solid var(--rp-c-brand);border-radius:var(--rp-radius-small)}.inputForm_6e282 .input_6e282{flex:1 1;padding-left:8px;height:100%;width:80%;outline:none;background-color:var(--rp-c-bg);font-weight:500;font-size:20px}.dark .inputForm_6e282 .input_6e282{color:var(--rp-c-text)}.close_6e282:hover{cursor:pointer;color:var(--rp-c-brand);transition:color.3s}.searchHits_6e282{max-height:calc(100vh - 230px);overflow:scroll;padding-right:2px}.searchHits_6e282 .groupTitle_6e282{position:sticky;top:0;left:0;background-color:var(--rp-c-bg-soft);font-size:13px;font-weight:600;color:var(--rp-c-brand-dark);padding-top:6px;padding-bottom:6px;padding-left:2px;margin:0}.navSearchButton_6e282{display:flex;border-radius:var(--rp-radius);padding:0 10px;height:40px;width:100%;background-color:var(--rp-c-bg-mute);transition:border-color.3s;border:1px solid transparent}.navSearchButton_6e282>button{cursor:pointer;display:flex;justify-content:space-around;align-items:center;font-size:13px}.navSearchButton_6e282>button .searchWord_6e282{margin-left:5px;margin-right:40px;font-weight:500;white-space:nowrap;color:var(--rp-c-text-2);transition:all.3s}.navSearchButton_6e282>button>div{border-radius:var(--rp-radius-small);color:var(--rp-c-gray);font-weight:500;background-color:var(--rp-c-bg);width:43px;transition:opacity.3s}.navSearchButton_6e282>button>div>span{margin-left:5px}.navSearchButton_6e282>button>div>span+span{margin-right:5px}.navSearchButton_6e282:hover{border:1px solid var(--rp-c-brand)}.navSearchButton_6e282:hover>button .searchWord_6e282{color:var(--rp-c-text-1)}.suggestItem_6e282{list-style:none;box-sizing:border-box;margin:5px 2px}.dark .suggestItem_6e282,.dark .suggestItem_6e282>a{box-shadow:none}.suggestItem_6e282>a{background-color:var(--rp-c-bg);border-radius:var(--rp-radius-small);padding-left:12px;color:var(--rp-c-black-soft);display:flex;width:100%;box-shadow:0 1px 3px 0#d4d9e1}.suggestItem_6e282>a .suggestItemContainer_6e282{width:100%;min-height:56px;display:flex;align-items:center;font-weight:500;padding-right:12px}.suggestItem_6e282>a .suggestItemContainer_6e282 .contentWrapper_6e282{padding:6px 8px;font-size:14px;line-height:1.5;width:100%}.suggestItem_6e282>a .suggestItemContainer_6e282 .contentWrapper_6e282 .mark_6e282{color:var(--rp-c-brand)}.suggestItem_6e282>a .suggestItemContainer_6e282 .contentWrapper_6e282 .titleForContent_6e282{font-size:12px;font-weight:600;color:var(--rp-c-gray-light-1)}.suggestItem_6e282>a .suggestItemContainer_6e282 svg{color:var(--rp-c-gray-light-1)}.suggestItem_6e282>a .suggestItemContainer_6e282 .actionIcon_6e282{opacity:0}.suggestItem_6e282:hover>a,.suggestItem_6e282.current_6e282>a{background-color:var(--rp-c-brand);cursor:pointer;color:#fff}.suggestItem_6e282:hover .suggestItemContainer_6e282 svg,.suggestItem_6e282.current_6e282 .suggestItemContainer_6e282 svg{color:#fff}.suggestItem_6e282:hover .suggestItemContainer_6e282 .actionIcon_6e282,.suggestItem_6e282.current_6e282 .suggestItemContainer_6e282 .actionIcon_6e282{opacity:1}.suggestItem_6e282:hover .suggestItemContainer_6e282 .contentWrapper_6e282 .mark_6e282,.suggestItem_6e282.current_6e282 .suggestItemContainer_6e282 .contentWrapper_6e282 .mark_6e282{color:#fff;text-decoration:underline}.suggestItem_6e282:hover .suggestItemContainer_6e282 .contentWrapper_6e282 .titleForContent_6e282,.suggestItem_6e282.current_6e282 .suggestItemContainer_6e282 .contentWrapper_6e282 .titleForContent_6e282{color:#fff}.tabClassName_6e282{position:sticky;background-color:var(--rp-c-bg-soft);padding-bottom:6px}.mobileNavSearchButton_6e282{display:none;align-items:center;justify-content:center;font-weight:500;cursor:pointer}@media(max-width:768px){.navSearchButton_6e282{display:none}.mobileNavSearchButton_6e282{display:flex}.modal_6e282{margin-top:0}.inputForm_6e282{height:40px}.inputForm_6e282 svg{width:16px;height:16px}.inputForm_6e282 .input_6e282{font-size:16px}}.container_fa768{background-color:var(--rp-code-block-bg);contain:content;border-radius:var(--rp-radius)}.container_fa768 div[class*=language-]{margin:6px 0}.container_fa768 div[class*=language-] code{background-color:var(--rp-c-bg)}.tab-list_fa768{padding-left:8px;padding-top:4px;display:flex;min-width:100%;overflow-x:scroll}.tab_fa768{color:var(--rp-c-text-2);border-bottom:2px solid transparent;box-sizing:border-box;margin-right:10px;padding:6px 12px;margin-bottom:-1px;-webkit-user-select:none;user-select:none;transition:all.2s ease-in-out;cursor:pointer}.tab_fa768:last-child{margin-right:0}.not-selected_fa768:hover{color:var(--rp-c-text-1);border-color:var(--rp-c-gray)}.selected_fa768{color:var(--rp-c-brand-dark);border-color:var(--rp-c-brand-dark)}.no-scrollbar_fa768::-webkit-scrollbar{display:none}.no-scrollbar_fa768{-ms-overflow-style:none;scrollbar-width:none}.badge_99dcf{padding:0 10px;line-height:22px;font-size:12px}.badge_99dcf.info_99dcf{color:#2e3440;background-color:rgba(46,52,64,.16)}.badge_99dcf.warning_99dcf{color:#ad850e;background-color:rgba(255,197,23,.16)}.badge_99dcf.danger_99dcf{color:#ab2131;background-color:rgba(237,60,80,.16)}.rspress-code-content:hover .code-button-group_15153>button{opacity:1}.code-button-group_15153{position:absolute;right:20px;top:20px;z-index:10;display:flex;gap:10px}.code-button-group_15153>button{position:relative;display:flex;justify-content:center;align-items:center;opacity:0}.code-button-group_15153 svg{opacity:inherit;width:20px;height:20px;transition:all.2s ease;color:var(--rp-c-text-3)}.code-button-group_15153 svg:hover{color:var(--rp-c-text-2)}.code-copy-button_15153 .icon-success_15153{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0);opacity:0;color:#00d600}.code-copied_15153 .icon-copy_15153{transform:scale(.33);opacity:0}.code-copied_15153 .icon-success_15153{transform:translate(-50%,-50%)scale(1);opacity:1;transition-delay:75ms}.icon-wrapped_15153{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0);opacity:0;color:#00d600}.wrapped-btn_15153 .icon-wrap_15153{transform:scale(.33);opacity:0}.wrapped-btn_15153 .icon-wrapped_15153{transform:translate(-50%,-50%)scale(1);opacity:1;transition-delay:75ms}.rspress-package-manager-tabs div[class*=language-] code{background-color:var(--rp-c-bg-mute)!important}.sourceCode_bf1b0{fill:currentColor;color:var(--rp-c-text-2)}.sourceCode_bf1b0:hover{color:var(--rp-c-text-1)}.rspressSteps_38f64 h3{counter-increment:step;margin-top:3px}.rspressSteps_38f64 h3:before{content:counter(step);border-radius:9999px;font-weight:400;text-align:center;font-size:1.1rem;margin-left:-41px;position:absolute;width:30px;height:30px;color:var(--rp-c-text-1);background-color:var(--rp-code-block-bg);border-width:1.5px;border-color:var(--rp-c-text-3)}.rspressSteps_38f64{border-color:var(--rp-c-text-3)}.rspressSteps_38f64 p{color:var(--rp-c-text-1)}.title_3b154{position:relative;font-weight:600;outline:none}.title_3b154 .header-anchor{float:left;margin-left:-.87em;padding-right:.23em;font-weight:500;opacity:0;font-size:inherit;transition:color.25s,opacity.25s}.title_3b154:hover .header-anchor{opacity:1}.title_3b154 .header-anchor:focus{opacity:1}.blockquote_3b154 p,summary .blockquote_3b154 p{margin:0;font-size:16px;color:var(--rp-c-text-2)}.link_3b154:not(.header-anchor),summary .link_3b154:not(.header-anchor),summary a:not(.header-anchor){font-weight:500;border-bottom:1px dashed var(--rp-c-brand);transition:color.25s}.link_3b154.header-anchor,summary .link_3b154.header-anchor,summary a.header-anchor{color:var(--rp-c-brand)}.link_3b154:hover,summary .link_3b154:hover,summary a:hover{color:var(--rp-c-brand-dark);border-style:solid}.rspress-doc details{margin:16px 0;padding:8px;font-size:normal;cursor:pointer;transition:all.3s}.rspress-doc details p{margin:8px 0}.rspress-doc details:hover{background-color:var(--rp-c-bg-mute)}.inline-link_3b154{display:inline;word-break:break-all}span.code-line-highlighted{background-color:var(--rp-code-line-highlight-color)}#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px#29d,0 0 5px#29d;opacity:1;transform:rotate(3deg)translate(0,-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner.4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.link-b99d0c:hover{color:var(--rp-c-brand);transition:color.2s}.link-b99d0c{font-weight:500}
    \ No newline at end of file
    +    monospace}.first\:mt-2:first-child{margin-top:.5rem}.last\:mr-0:last-child{margin-right:0}.even\:bg-soft:nth-child(2n){background-color:var(--rp-c-bg-soft)}.hover\:border-brand-dark:hover{border-color:var(--rp-c-brand-dark)}.hover\:border-gray-600:hover{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.hover\:bg-mute:hover{background-color:var(--rp-c-bg-mute)}.hover\:text-brand-dark:hover{color:var(--rp-c-brand-dark)}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\:text-text-1:hover{color:var(--rp-c-text-1)}.hover\:text-text-2:hover{color:var(--rp-c-text-2)}.hover\:opacity-60:hover{opacity:.6}.dark .dark\:hover\:border-gray-200:hover{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.dark .dark\:hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}@media(min-width:640px){.sm\:m-4{margin:1rem}.sm\:mt-0{margin-top:0}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-xl{max-width:36rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-row{flex-direction:row}.sm\:justify-around{justify-content:space-around}.sm\:p-8{padding:2rem}.sm\:px-16{padding-left:4rem;padding-right:4rem}.sm\:pb-2{padding-bottom:.5rem}.sm\:pb-40{padding-bottom:10rem}.sm\:pl-4{padding-left:1rem}.sm\:pr-2{padding-right:.5rem}.sm\:pt-10{padding-top:2.5rem}.sm\:pt-24{padding-top:6rem}.sm\:pt-8{padding-top:2rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-6xl{font-size:3.75rem;line-height:1}.sm\:leading-8{line-height:2rem}}@media(min-width:768px){.md\:order-1{order:1}.md\:order-2{order:2}.md\:m-0{margin:0}.md\:ml-1{margin-left:.25rem}.md\:mr-2{margin-right:.5rem}.md\:flex{display:flex}.md\:flex-row{flex-direction:row}.md\:flex-wrap{flex-wrap:wrap}.md\:justify-center{justify-content:center}.md\:px-16{padding-left:4rem;padding-right:4rem}.md\:pb-16{padding-bottom:4rem}.md\:pb-3{padding-bottom:.75rem}.md\:pt-16{padding-top:4rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-7xl{font-size:4.5rem;line-height:1}}@media(min-width:1024px){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:pb-2{padding-bottom:.5rem}}.\[\&\:not\(\:first-child\)\]\:mt-2:not(:first-child){margin-top:.5rem}:root{--rp-code-font-size:14px;--rp-code-block-color:rgb(46, 52, 64);--rp-code-title-bg:rgba(0, 99, 199, 0.05);--rp-code-block-bg:#f6f8fa;--rp-code-line-highlight-color:rgba(0, 99, 199, 0.1);--rp-code-line-number-color:rgba(235, 235, 235, 0.38);--rp-code-copy-code-hover-bg:rgba(255, 255, 255, 0.05);--rp-code-wrap-code-hover-bg:rgba(255, 255, 255, 0.05)}.dark{--rp-code-block-color:rgb(229, 231, 235);--rp-code-block-bg:#242424;--rp-code-title-bg:rgba(255, 255, 255, 0.04);--rp-code-line-highlight-color:rgba(255, 255, 255, 0.1);--rp-code-line-number-color:rgba(60, 60, 60, 0.33)}.rspress-doc-container :not(pre,h1,h2,h3,h4,h5,h6)>code,.rspress-sidebar code{font-size:var(--rp-code-font-size)}.rspress-doc-container :not(pre,div,a)>code,.rspress-sidebar code{border-radius:var(--rp-radius-small);padding:4px 8px;color:var(--rp-c-text-code);background-color:var(--rp-c-bg-mute);overflow-wrap:break-word}.rspress-doc-container h1>code,.rspress-doc-container h2>code,.rspress-doc-container h3>code{font-size:.9em}.rspress-doc-container a>code{color:var(--rp-c-brand);transition:color.25s;border:none}.rspress-doc-container a:hover>code{color:var(--rp-c-brand-dark)}.rspress-doc-container div[class^=language-]{position:relative;margin:16px 0;background-color:var(--rp-code-block-bg);overflow-x:auto;transition:none}.rspress-doc-container .rspress-code-title{padding:12px 16px;font-size:var(--rp-code-font-size);background-color:var(--rp-code-title-bg);transition:background-color.5s}@media(min-width:640px){.rspress-doc-container div[class^=language-]{border-radius:var(--rp-radius);margin:24px 0;contain:content}}@media(max-width:640px){.rspress-doc-container li div[class^=language-]{border-radius:var(--rp-radius-small)0 0 var(--rp-radius-small)}}.rspress-doc-container [class^=language-] pre,.rspress-doc-container [class^=language-] code{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.rspress-doc-container [class^=language-] pre{position:relative;z-index:1;margin:0;background:transparent;overflow-x:auto}.rspress-doc-container [class^=language-] code{display:block;padding:16px 0;width:-moz-fit-content;width:fit-content;min-width:100%;line-height:1.7;font-size:var(--rp-code-font-size);color:var(--rp-code-block-color);background-color:var(--rp-code-block-bg);transition:color.5s}.rspress-doc-container [class^=language-] .rspress-code-content{position:relative}.rspress-doc-container [class^=language-] .rspress-code-content span.highlighted{background-color:var(--rp-code-line-highlight-color);position:absolute;display:block;left:0;right:0;padding-left:20px}.rspress-doc-container [class^=language-] .rspress-code-content>code{padding:16px 20px}.rspress-scrollbar{scrollbar-gutter:stable}.rspress-scrollbar::-webkit-scrollbar{width:12px;height:8px;-webkit-transition:all.3s;transition:all.3s}.rspress-scrollbar::-webkit-scrollbar-track{background:transparent}.rspress-scrollbar::-webkit-scrollbar-thumb{border-radius:var(--rp-radius-small)}.rspress-scrollbar:hover::-webkit-scrollbar-thumb{border:3px solid transparent;background-color:var(--rp-c-text-4);background-clip:content-box}.rspress-scrollbar::-webkit-scrollbar-corner{background:transparent}.aside-link{padding-bottom:1px}.aside-link-text{padding:0 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:var(--rp-radius-small)0 0 var(--rp-radius-small);font-size:13px;line-height:1.75rem}.aside-link-text:hover{background-color:var(--rp-c-bg-mute)}.aside-active,.aside-active:hover{color:var(--rp-c-brand-dark)!important;background-color:var(--rp-c-brand-tint)}.editLink_2a169{color:var(--rp-c-brand);text-decoration:none;font-size:15px;font-weight:500;margin:20px 0;transition:all.2s ease-in-out}.editLink_2a169:hover{color:var(--rp-c-brand-dark)}.link_03735:hover{color:var(--rp-c-brand);transition:color.2s}.link_03735{font-weight:500}.pager-link_9b9a7{display:block;border:1px solid var(--rp-c-divider-light)!important;border-radius:var(--rp-radius);padding:16px 20px;width:100%;height:100%;transition:border-color.25s}.pager-link_9b9a7:hover{border-color:var(--rp-c-brand)!important}.pager-link_9b9a7:hover .title_9b9a7{color:var(--rp-c-brand-dark)}.pager-link_9b9a7.next_9b9a7{margin-left:auto;text-align:right}.desc_9b9a7{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--rp-c-text-2)}.title_9b9a7{display:block;line-height:24px;font-size:14px;font-weight:500;color:var(--rp-c-brand);transition:color.25s}@media(min-width:640px){.pager_e7091{display:flex;flex-direction:column;width:50%}.pager_e7091.has-next_e7091{padding-top:0;padding-left:16px}}.prev_e7091,.next_e7091{width:100%}.hidden_f6cde{transform:translate3d(0,-100%,0);background:transparent;opacity:0}.container_f6cde{margin:auto}.navContainer_f6cde{top:0;left:0;transition:all.3s ease;transition-property:transform,opacity;background:var(--rp-c-bg);height:var(--rp-nav-height);z-index:var(--rp-z-index-nav)}.leftNav_f6cde,.rightNav_f6cde{display:none}.singleItem_f6cde{word-break:keep-all}.activeItem_f6cde,.singleItem_f6cde:hover{background-color:var(--rp-c-bg-mute);cursor:pointer;color:var(--rp-c-brand-dark);border-radius:var(--rp-radius)}.navBarTitle_f6cde{flex-shrink:0}.navContainer_f6cde :deep(*){pointer-events:all}.social-links-icon_f6cde{width:20px;height:100%;display:flex;fill:currentColor;color:var(--rp-c-text-2)}.social-links-icon_f6cde:hover{color:var(--rp-c-text-1)}.menu-item_f6cde{display:none;margin:0 8px}@media(max-width:768px){:root{--rp-nav-height:56px}.menu-item_f6cde:before{display:none}.mobileNavMenu_f6cde{display:flex}}@media(min-width:768px){.menu-item_f6cde{display:flex}.leftNav_f6cde{display:flex;align-items:center;flex-grow:1;margin:0 .5rem}.rightNav_f6cde{display:flex;align-items:center}.mobileNavMenu_f6cde{display:none}}@media(min-width:960px){.mask_f6cde{position:absolute;right:0;bottom:-30px;width:100vw;height:30px}.mask_f6cde.docPage_f6cde{width:calc(100vw - 48px - var(--rp-sidebar-width))}.mask_f6cde:before{display:block;width:100%;height:30px;background:linear-gradient(var(--rp-c-bg),transparent 60%);content:""}.leftNav_f6cde{margin:0 2rem}}.navTitleMask_71eca{padding-left:1.5rem;height:var(--rp-nav-height);display:flex;align-items:center}.sidebar_71eca{position:fixed;top:0;bottom:0;left:0;z-index:var(--rp-z-index-sidebar);width:calc(100vw - 64px);max-width:320px;opacity:0;transform:translatex(-100%);transition:opacity.5s,transform.25s ease;background:var(--rp-c-bg)}.sidebarContainer_71eca{padding:0 12px 96px 0}.sidebarContent_71eca{overflow-x:hidden}.sidebar_71eca.open_71eca{opacity:1;visibility:visible;transform:translatex(0);transition:opacity.25s,transform.5s cubic-bezier(.19,1,.22,1)}@media(min-width:960px){.sidebar_71eca{z-index:5;opacity:1;visibility:visible;position:sticky;margin-top:calc(-1*var(--rp-nav-height));height:100vh;width:var(--rp-sidebar-width);transform:translatex(0);box-shadow:var(--rp-c-shadow-3);-webkit-mask-image:linear-gradient(transparent,#000 20px),linear-gradient(270deg,#000 10px,transparent 0);mask-image:linear-gradient(transparent,#000 20px),linear-gradient(270deg,#000 10px,transparent 0);--webkit-mask-image:linear-gradient(270deg, #000 10px, transparent 0)}}@media(min-width:1440px){.sidebar_71eca{width:var(--rp-sidebar-width)}.sidebarContainer_71eca{padding-left:0}}.menuLink_71eca{opacity:1}.menuLink_71eca:hover{color:inherit;transition:all.2s}.menuItem_71eca:hover{background-color:var(--rp-c-bg-mute);transition:all.2s}.collapseContainer_71eca:hover{background-color:rgba(229,229,229,.4);transition:all.2s}.dark .menuItem_71eca:hover,.dark .collapseContainer_71eca:hover{background-color:var(--rp-c-bg-mute);transition:all.2s}.menuItem_71eca,.menuItemStatic_71eca,.menuItemActive_71eca{font-size:13px;line-height:19px;border-radius:0 var(--rp-radius)var(--rp-radius)0}.menuItem_71eca,.menuItemStatic_71eca{color:var(--rp-c-text-2);transition:color.2s;font-weight:500}.menuItemActive_71eca{background-color:var(--rp-c-brand-tint);color:var(--rp-c-brand);font-weight:bolder;position:relative}.menuItemActive_71eca:before{content:"";position:absolute;top:0;left:0;width:1px;height:100%;background-color:var(--rp-c-brand);transition:all.2s ease}.menuGroupActive_71eca{background-color:var(--rp-c-bg-mute)}.rspress-sidebar-group{position:relative}.rspress-sidebar-group:before{content:"";position:absolute;top:0;left:18px;width:1px;height:100%;background-color:var(--rp-c-gray-light-4)}.rspress-sidebar-section-header{display:flex;align-items:center;padding:8px 0 8px 16px}.rspress-sidebar-section-header>span{display:flex;align-items:center;margin-left:8px;font-size:14px;line-height:20px;color:var(--rp-c-text-1);font-weight:700}.dark .rspress-sidebar-group:before{background-color:var(--rp-c-bg-mute)}.dark .sidebar_71eca{box-shadow:var(--rp-shadow-1)}.rspress-sidebar-menu{position:sticky;top:0;left:0;z-index:var(--rp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--rp-c-divider-light);border-top:1px solid var(--rp-c-divider-light);width:100%;color:var(--rp-c-text-1);background-color:var(--rp-c-bg);padding-left:10px}.rspress-sidebar-menu>button{padding:12px;transition:color.5s}.rspress-sidebar-menu>button:hover{color:var(--rp-c-text-3)}.rspress-sidebar-back-drop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--rp-z-index-backdrop)}@media(min-width:960px){.rspress-sidebar-menu,.rspress-sidebar-back-drop{display:none}}.rspress-local-toc-container{position:absolute;padding:6px;border-radius:var(--rp-radius-small);top:var(--rp-nav-height);background-color:var(--rp-c-bg-soft);right:20px;max-width:250px;transition:all.3s;overflow-y:scroll}.rspress-toc-link{display:block;border-radius:var(--rp-radius-small);transition:all.3s}.rspress-toc-link-text{padding:6px 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all.2s ease-in-out;border-radius:var(--rp-radius-small);color:var(--rp-c-text-2)}.rspress-toc-link-text:hover{background-color:var(--rp-c-bg-mute);color:var(--rp-c-text-1)}.overview-index h1,.overview-index h2,.overview-index h3{font-weight:600}.overview-index h2,.overview-index h3{line-height:1}.overview-index h2{letter-spacing:-.02em;font-size:24px;color:var(--rp-c-text-1);margin:36px 0;transition:color.5s;padding-top:36px;border-top:1px solid var(--rp-c-divider-light)}.overview-index h3,.overview-index h3>a{letter-spacing:-.01em;color:var(--rp-c-brand);font-size:18px;margin-bottom:1em;transition:color.5s;font-weight:600}.overview-index h3>a{margin:0;line-height:1.3}.overview-index h3>a:hover{transition:color.5s;color:var(--rp-c-brand-dark)}.overview-index h3:before{display:none}.overview-index h1:hover .header-anchor_8f375,.overview-index h1:focus .header-anchor_8f375,.overview-index h2:hover .header-anchor_8f375,.overview-index h2:focus .header-anchor_8f375,.overview-index h3:hover .header-anchor_8f375,.overview-index h3:focus .header-anchor_8f375,.overview-index h4:hover .header-anchor_8f375,.overview-index h4:focus .header-anchor_8f375,.overview-index h5:hover .header-anchor_8f375,.overview-index h5:focus .header-anchor_8f375,.overview-index h6:hover .header-anchor_8f375,.overview-index h6:focus .header-anchor_8f375{opacity:1}.overview-index a.header-anchor_8f375{float:left;margin-top:.125em;margin-left:-.87em;padding-right:.23em;font-size:.85em;opacity:0;font-weight:500;color:var(--rp-c-brand);transition:color.25s;text-decoration-style:dotted}.overview-index a.header-anchor_8f375:hover,.overview-index a.header-anchor_8f375:focus{text-decoration:none}.overview-groups_8f375 a{display:block;font-size:15px;font-weight:500;line-height:1.6;margin-top:8px;color:var(--rp-c-text-code);transition:color.5s;word-break:break-all}.overview-group-li_8f375{position:relative}.overview-group-li_8f375.level-2_8f375{padding-left:1px}.overview-group-li_8f375.level-2_8f375:before{left:-.25rem}.dark overview-groups a{font-weight:400}.overview-group_8f375{break-inside:avoid;margin-bottom:28px;background-color:var(--rp-c-bg-soft);border-radius:var(--rp-radius);padding:28px 32px;transition:background-color.5s}@media(max-width:768px){.overview-index{padding:42px 24px}.overview-index h1{font-size:32px;margin-bottom:24px}.overview-index h2{font-size:22px;margin:42px 0 32px;padding-top:32px}.overview-groups_8f375 a{font-size:14px}.header_8f375{display:block}}@media(min-width:768px){.overview-groups_8f375{columns:2}}@media(min-width:1024px){.overview-groups_8f375{columns:3}}.scroll-to-top_1a167{z-index:1;position:fixed;right:1rem;bottom:1rem;padding:.5rem;border-radius:9999px;color:var(--rp-c-text-1);border-color:var(--rp-c-text-3);border-width:.1px;background-color:var(--rp-c-bg-soft);box-shadow:0 1px 3px 0 var(--rp-shadow-1),0 1px 2px 0 var(--rp-shadow-2);transform:scale(0);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:75ms}.scroll-to-top_1a167.entered_1a167{transform:scale(1)!important}.aside-container_edeb4{position:sticky;display:none;top:0;margin-top:calc(-32px + -1*var(--rp-nav-height));padding-top:calc(32px + var(--rp-nav-height));overflow-x:hidden;overflow-y:auto;scrollbar-width:none;width:0;max-height:calc(32px + 100vh - var(--rp-nav-height))}.aside-container_edeb4::-webkit-scrollbar{display:none}.rspress-doc{min-height:60vh;view-transition-name:flip}*{view-transition-name:none}@keyframes fade-out_edeb4{0%{opacity:1}to{opacity:0;transform:translatey(20px)}}@keyframes fade-in_edeb4{0%{opacity:0;transform:translatey(20px)}to{opacity:1}}::view-transition-old(flip),::view-transition-new(flip){animation-time:.25s}::view-transition-old(flip){animation-name:fade-out_edeb4;transition-timing-function:ease-out}::view-transition-new(flip){animation-name:fade-in_edeb4;animation-delay:.18s;transition-timing-function:ease-in}@media(max-width:960px){.docLayout_edeb4{position:relative}.content_edeb4{padding:36px 24px 72px}.rspress-doc{view-transition-name:none}}@media(min-width:960px){.docLayout_edeb4{width:100%;display:flex}.content_edeb4{width:calc(100% - var(--rp-sidebar-width));padding:48px 48px 72px max(0px,48px - var(--rp-sidebar-width))}.content_edeb4 .rspress-doc,.content_edeb4 .rspress-doc-footer{width:100%}.aside-container_edeb4{width:var(--rp-aside-width)}}@media(min-width:1280px){.aside-container_edeb4{display:block;width:var(--rp-aside-width)}.content_edeb4{padding:48px 0 72px}.content_edeb4 .rspress-doc,.content_edeb4 .rspress-doc-footer{padding:0 48px;box-sizing:border-box;width:calc(100vw - var(--rp-sidebar-width) - var(--rp-aside-width));max-width:min(100%,1056px);margin:auto}}@media(min-width:1440px){.docLayout_edeb4{width:100%;margin-left:0}.content_edeb4 .rspress-doc,.content_edeb4 .rspress-doc-footer{box-sizing:border-box;width:calc(100vw - var(--rp-sidebar-width) - var(--rp-aside-width));padding:0 48px;max-width:min(100%,1056px);margin:auto}}.button_72e53{display:inline-block;text-align:center;font-weight:700;white-space:nowrap;height:48px;line-height:48px}.button_72e53:active{transition:color.1s,border-color.1s,background-color.1s}.button_72e53.medium_72e53{border-radius:var(--rp-radius);padding:0 20px;line-height:38px;height:38px;font-size:14px}.button_72e53.big_72e53{border-radius:var(--rp-radius-large);font-size:16px;min-width:142px;font-weight:700}.button_72e53.brand_72e53,.button_72e53.brand_72e53:hover,.button_72e53.brand_72e53:active{opacity:1;color:#fff;transition:all.3s ease}.button_72e53.brand_72e53{background:linear-gradient(275deg,var(--rp-c-brand-dark)3%,var(--rp-c-brand-light)97%)}.button_72e53.brand_72e53:hover{background-color:var(--rp-c-brand-light);opacity:.8}.button_72e53.alt_72e53,.button_72e53.alt_72e53:hover,.button_72e53.alt_72e53:active{border:1px solid var(--rp-c-gray-light-3);color:var(--rp-c-text-1);background-color:var(--rp-c-gray-light-5);transition:all.3s ease}.dark .button_72e53.alt_72e53{background-color:var(--rp-c-bg-mute);border-color:#484848;color:var(--rp-c-text-1)}.button_72e53.alt_72e53:hover{background-color:var(--rp-c-gray-light-4)}.dark .button_72e53.alt_72e53:hover{background-color:#484848}@media(max-width:768px){.button_72e53.big_72e53{font-size:14px;min-width:100px;height:42px;line-height:42px}}.clip_c867a{background:var(--rp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--rp-home-hero-name-color)}.mask_c867a{position:absolute;background-image:conic-gradient(from 180deg at 50%50%,var(--rp-c-brand)0deg,180deg,#42d392 0deg);max-width:500px;width:100%;height:500px;border-radius:100%;mixblendmode:normal;filter:blur(80px);opacity:.05;top:-100px;transform:translatex(-50%);z-index:0}.dark .mask_c867a{opacity:.15}@media(min-width:640px){.rspress-home-hero-image{width:375px}}@media(max-width:640px){.rspress-home-hero-image{max-width:250px}}@media(max-width:768px){.mask_c867a{display:none}}@media(max-width:640px){.grid-2_ffda3,.grid-4_ffda3,.grid-6_ffda3{width:100%}}@media(min-width:640px){.grid-2_ffda3,.grid-4_ffda3,.grid-6_ffda3{width:50%}}@media(min-width:768px){.grid-2_ffda3,.grid-4_ffda3{width:50%}.grid-3_ffda3,.grid-6_ffda3{width:33.3333333333%}}@media(min-width:960px){.grid-3_ffda3{width:25%}.grid-4_ffda3{width:33.3333333333%}.grid-6_ffda3{width:50%}}.featureCard_ffda3{background:var(--rp-home-feature-bg);border:1px solid transparent;transition:all.3s}.featureCard_ffda3:hover{background:var(--rp-home-feature-hover-bg);border:1px solid var(--rp-c-brand)}:root{--rp-home-hero-name-color:transparent;--rp-home-hero-name-background:-webkit-linear-gradient( 120deg, var(--rp-c-brand) 30%, #42d392 );--rp-home-hero-image-background-image:none;--rp-home-hero-image-filter:none;--rp-home-feature-bg:#f9f9f9;--rp-home-feature-hover-bg:linear-gradient(to bottom, #ededed, #f9f9f9)}.dark{--rp-home-bg:#000;--rp-home-feature-bg:#242424;--rp-home-feature-hover-bg:#2f2f2f}.social-links-icon_93d67{width:24px;height:24px;display:flex;align-items:center;fill:currentColor;margin-left:.5rem;color:var(--rp-c-text-2)}.social-links-icon_93d67:hover{color:var(--rp-c-text-1)}@media(max-width:768px){.menu-item_93d67:before{display:none}}.navScreen_457e8{display:none;position:fixed;top:var(--rp-nav-height);right:0;bottom:0;left:0;padding:32px;width:100%;background-color:var(--rp-c-bg);overflow-y:auto;pointer-events:auto;z-index:20}.active_457e8{display:block}.container_457e8{margin:0 auto;padding:24px 0 96px;max-width:248px}.navMenu_457e8{display:flex;justify-content:center;align-items:center;flex-direction:column}.navMenuItem_457e8{display:flex;justify-content:center;padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--rp-c-text-1);border-bottom:1px solid var(--rp-c-divider-light);transition:border-color.5s,color.25s}.navAppearance_457e8{padding-right:0}.socialAndAppearance_457e8{padding:8px 0 7px}.navScreenMenuGroup_457e8{height:39px;overflow:hidden;transition:border-color.5s}.navScreenMenuGroup_457e8.open_457e8{padding-bottom:10px;height:auto}.button_457e8{display:flex;justify-content:center;align-items:center;padding:8px 0 7px;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--rp-c-text-1);transition:color.25s}.buttonSpan_457e8{display:flex;align-items:center;height:24px;padding-right:4px}.navScreenMenuGroup_457e8 .items_457e8{visibility:hidden}.navScreenMenuGroup_457e8.open_457e8 .items_457e8{visibility:visible}.down_457e8{transition:all.5s}.open_457e8.down_457e8{transform:rotate(180deg)}.navHamburger_e7b06{display:flex;justify-content:center;align-items:center;width:36px;height:56px;margin-left:6px}@media(min-width:768px){.navHamburger_e7b06{display:none}}.container_e7b06{position:relative;width:16px;height:14px;overflow:hidden}.navHamburger_e7b06:hover .top_e7b06{top:0;left:0;transform:translatex(4px)}.navHamburger_e7b06:hover .middle_e7b06{top:6px;left:0;transform:translatex(0)}.navHamburger_e7b06:hover .bottom_e7b06{top:12px;left:0;transform:translatex(8px)}.navHamburger_e7b06.active_e7b06 .top_e7b06{top:6px;transform:translatex(0)rotate(225deg)}.navHamburger_e7b06.active_e7b06 .middle_e7b06{top:6px;transform:translatex(16px)}.navHamburger_e7b06.active_e7b06 .bottom_e7b06{top:6px;transform:translatex(0)rotate(135deg)}.navHamburger_e7b06.active_e7b06:hover .top_e7b06,.navHamburger_e7b06.active_e7b06:hover .middle_e7b06,.navHamburger_e7b06.active_e7b06:hover .bottom_e7b06{transition:top.25s,background-color.25s,transform.25s}.top_e7b06,.middle_e7b06,.bottom_e7b06{position:absolute;width:16px;height:1.5px;background-color:var(--rp-c-text-2);transition:top.25s,background-color.5s,transform.25s}.top_e7b06{top:0;left:0;transform:translatex(0)}.middle_e7b06{top:6px;left:0;transform:translatex(8px)}.bottom_e7b06{top:12px;left:0;transform:translatex(4px)}.mask_6e282{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(84,84,84,.7019607843);z-index:100}.modal_6e282{position:relative;background-color:var(--rp-c-bg-soft);border-radius:var(--rp-radius);margin:80px auto auto;max-width:560px;padding:20px;padding-bottom:20px;height:auto}.inputForm_6e282{width:100%;height:55px;display:flex;align-items:center;padding:0 12px;background-color:var(--rp-c-bg);border:1px solid var(--rp-c-brand);border-radius:var(--rp-radius-small)}.inputForm_6e282 .input_6e282{flex:1 1;padding-left:8px;height:100%;width:80%;outline:none;background-color:var(--rp-c-bg);font-weight:500;font-size:20px}.dark .inputForm_6e282 .input_6e282{color:var(--rp-c-text)}.close_6e282:hover{cursor:pointer;color:var(--rp-c-brand);transition:color.3s}.searchHits_6e282{max-height:calc(100vh - 230px);overflow:scroll;padding-right:2px}.searchHits_6e282 .groupTitle_6e282{position:sticky;top:0;left:0;background-color:var(--rp-c-bg-soft);font-size:13px;font-weight:600;color:var(--rp-c-brand-dark);padding-top:6px;padding-bottom:6px;padding-left:2px;margin:0}.navSearchButton_6e282{display:flex;border-radius:var(--rp-radius);padding:0 10px;height:40px;width:100%;background-color:var(--rp-c-bg-mute);transition:border-color.3s;border:1px solid transparent}.navSearchButton_6e282>button{cursor:pointer;display:flex;justify-content:space-around;align-items:center;font-size:13px}.navSearchButton_6e282>button .searchWord_6e282{margin-left:5px;margin-right:40px;font-weight:500;white-space:nowrap;color:var(--rp-c-text-2);transition:all.3s}.navSearchButton_6e282>button>div{border-radius:var(--rp-radius-small);color:var(--rp-c-gray);font-weight:500;background-color:var(--rp-c-bg);width:43px;transition:opacity.3s}.navSearchButton_6e282>button>div>span{margin-left:5px}.navSearchButton_6e282>button>div>span+span{margin-right:5px}.navSearchButton_6e282:hover{border:1px solid var(--rp-c-brand)}.navSearchButton_6e282:hover>button .searchWord_6e282{color:var(--rp-c-text-1)}.suggestItem_6e282{list-style:none;box-sizing:border-box;margin:5px 2px}.dark .suggestItem_6e282,.dark .suggestItem_6e282>a{box-shadow:none}.suggestItem_6e282>a{background-color:var(--rp-c-bg);border-radius:var(--rp-radius-small);padding-left:12px;color:var(--rp-c-black-soft);display:flex;width:100%;box-shadow:0 1px 3px 0#d4d9e1}.suggestItem_6e282>a .suggestItemContainer_6e282{width:100%;min-height:56px;display:flex;align-items:center;font-weight:500;padding-right:12px}.suggestItem_6e282>a .suggestItemContainer_6e282 .contentWrapper_6e282{padding:6px 8px;font-size:14px;line-height:1.5;width:100%}.suggestItem_6e282>a .suggestItemContainer_6e282 .contentWrapper_6e282 .mark_6e282{color:var(--rp-c-brand)}.suggestItem_6e282>a .suggestItemContainer_6e282 .contentWrapper_6e282 .titleForContent_6e282{font-size:12px;font-weight:600;color:var(--rp-c-gray-light-1)}.suggestItem_6e282>a .suggestItemContainer_6e282 svg{color:var(--rp-c-gray-light-1)}.suggestItem_6e282>a .suggestItemContainer_6e282 .actionIcon_6e282{opacity:0}.suggestItem_6e282:hover>a,.suggestItem_6e282.current_6e282>a{background-color:var(--rp-c-brand);cursor:pointer;color:#fff}.suggestItem_6e282:hover .suggestItemContainer_6e282 svg,.suggestItem_6e282.current_6e282 .suggestItemContainer_6e282 svg{color:#fff}.suggestItem_6e282:hover .suggestItemContainer_6e282 .actionIcon_6e282,.suggestItem_6e282.current_6e282 .suggestItemContainer_6e282 .actionIcon_6e282{opacity:1}.suggestItem_6e282:hover .suggestItemContainer_6e282 .contentWrapper_6e282 .mark_6e282,.suggestItem_6e282.current_6e282 .suggestItemContainer_6e282 .contentWrapper_6e282 .mark_6e282{color:#fff;text-decoration:underline}.suggestItem_6e282:hover .suggestItemContainer_6e282 .contentWrapper_6e282 .titleForContent_6e282,.suggestItem_6e282.current_6e282 .suggestItemContainer_6e282 .contentWrapper_6e282 .titleForContent_6e282{color:#fff}.tabClassName_6e282{position:sticky;background-color:var(--rp-c-bg-soft);padding-bottom:6px}.mobileNavSearchButton_6e282{display:none;align-items:center;justify-content:center;font-weight:500;cursor:pointer}@media(max-width:768px){.navSearchButton_6e282{display:none}.mobileNavSearchButton_6e282{display:flex}.modal_6e282{margin-top:0}.inputForm_6e282{height:40px}.inputForm_6e282 svg{width:16px;height:16px}.inputForm_6e282 .input_6e282{font-size:16px}}.container_fa768{background-color:var(--rp-code-block-bg);contain:content;border-radius:var(--rp-radius)}.container_fa768 div[class*=language-]{margin:6px 0}.container_fa768 div[class*=language-] code{background-color:var(--rp-c-bg)}.tab-list_fa768{padding-left:8px;padding-top:4px;display:flex;min-width:100%;overflow-x:scroll}.tab_fa768{color:var(--rp-c-text-2);border-bottom:2px solid transparent;box-sizing:border-box;margin-right:10px;padding:6px 12px;margin-bottom:-1px;-webkit-user-select:none;user-select:none;transition:all.2s ease-in-out;cursor:pointer}.tab_fa768:last-child{margin-right:0}.not-selected_fa768:hover{color:var(--rp-c-text-1);border-color:var(--rp-c-gray)}.selected_fa768{color:var(--rp-c-brand-dark);border-color:var(--rp-c-brand-dark)}.no-scrollbar_fa768::-webkit-scrollbar{display:none}.no-scrollbar_fa768{-ms-overflow-style:none;scrollbar-width:none}.badge_99dcf{padding:0 10px;line-height:22px;font-size:12px}.badge_99dcf.info_99dcf{color:#2e3440;background-color:rgba(46,52,64,.16)}.badge_99dcf.warning_99dcf{color:#ad850e;background-color:rgba(255,197,23,.16)}.badge_99dcf.danger_99dcf{color:#ab2131;background-color:rgba(237,60,80,.16)}.rspress-code-content:hover .code-button-group_15153>button{opacity:1}.code-button-group_15153{position:absolute;right:20px;top:20px;z-index:10;display:flex;gap:10px}.code-button-group_15153>button{position:relative;display:flex;justify-content:center;align-items:center;opacity:0}.code-button-group_15153 svg{opacity:inherit;width:20px;height:20px;transition:all.2s ease;color:var(--rp-c-text-3)}.code-button-group_15153 svg:hover{color:var(--rp-c-text-2)}.code-copy-button_15153 .icon-success_15153{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0);opacity:0;color:#00d600}.code-copied_15153 .icon-copy_15153{transform:scale(.33);opacity:0}.code-copied_15153 .icon-success_15153{transform:translate(-50%,-50%)scale(1);opacity:1;transition-delay:75ms}.icon-wrapped_15153{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0);opacity:0;color:#00d600}.wrapped-btn_15153 .icon-wrap_15153{transform:scale(.33);opacity:0}.wrapped-btn_15153 .icon-wrapped_15153{transform:translate(-50%,-50%)scale(1);opacity:1;transition-delay:75ms}.rspress-package-manager-tabs div[class*=language-] code{background-color:var(--rp-c-bg-mute)!important}.sourceCode_bf1b0{fill:currentColor;color:var(--rp-c-text-2)}.sourceCode_bf1b0:hover{color:var(--rp-c-text-1)}.rspressSteps_38f64 h3{counter-increment:step;margin-top:3px}.rspressSteps_38f64 h3:before{content:counter(step);border-radius:9999px;font-weight:400;text-align:center;font-size:1.1rem;margin-left:-41px;position:absolute;width:30px;height:30px;color:var(--rp-c-text-1);background-color:var(--rp-code-block-bg);border-width:1.5px;border-color:var(--rp-c-text-3)}.rspressSteps_38f64{border-color:var(--rp-c-text-3)}.rspressSteps_38f64 p{color:var(--rp-c-text-1)}.title_3b154{position:relative;font-weight:600;outline:none}.title_3b154 .header-anchor{float:left;margin-left:-.87em;padding-right:.23em;font-weight:500;opacity:0;font-size:inherit;transition:color.25s,opacity.25s}.title_3b154:hover .header-anchor{opacity:1}.title_3b154 .header-anchor:focus{opacity:1}.blockquote_3b154 p,summary .blockquote_3b154 p{margin:0;font-size:16px;color:var(--rp-c-text-2)}.link_3b154:not(.header-anchor),summary .link_3b154:not(.header-anchor),summary a:not(.header-anchor){font-weight:500;border-bottom:1px dashed var(--rp-c-brand);transition:color.25s}.link_3b154.header-anchor,summary .link_3b154.header-anchor,summary a.header-anchor{color:var(--rp-c-brand)}.link_3b154:hover,summary .link_3b154:hover,summary a:hover{color:var(--rp-c-brand-dark);border-style:solid}.rspress-doc details{margin:16px 0;padding:8px;font-size:normal;cursor:pointer;transition:all.3s}.rspress-doc details p{margin:8px 0}.rspress-doc details:hover{background-color:var(--rp-c-bg-mute)}.inline-link_3b154{display:inline;word-break:break-all}span.code-line-highlighted{background-color:var(--rp-code-line-highlight-color)}#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px#29d,0 0 5px#29d;opacity:1;transform:rotate(3deg)translate(0,-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner.4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.link-d9254e:hover{color:var(--rp-c-brand);transition:color.2s}.link-d9254e{font-weight:500}
    \ No newline at end of file
    diff --git a/modern-js/builder/static/js/7860.b69ddd1b.js b/modern-js/builder/static/js/7860.b69ddd1b.js
    new file mode 100644
    index 0000000000..205ee143d3
    --- /dev/null
    +++ b/modern-js/builder/static/js/7860.b69ddd1b.js
    @@ -0,0 +1,2 @@
    +/*! For license information please see 7860.b69ddd1b.js.LICENSE.txt */
    +(self.webpackChunk_modern_js_builder_doc=self.webpackChunk_modern_js_builder_doc||[]).push([["7860"],{30224:function(e,t,n){"use strict";n.r(t),n.d(t,{Content:function(){return u}});var i=n("39980"),r=n("2363"),a=n("35383"),d=n("13328"),o=n("84188"),l=n("18373");let{routes:s}=n("99593"),c=(0,r.memo)(function(e){let t=e.el;return d.default?.themeConfig?.enableContentAnimation&&(t=(0,l.useViewTransition)(e.el)),t},(e,t)=>e.el===t.el),u=({fallback:e=(0,i.jsx)(i.Fragment,{})})=>{let{pathname:t}=(0,a.useLocation)(),n=(0,a.matchRoutes)(s,(0,o.normalizeRoutePath)(t));if(!n)return(0,i.jsx)("div",{});let d=n[0].route.element;return(0,i.jsx)(r.Suspense,{fallback:e,children:(0,i.jsx)(c,{el:d})})}},13972:function(e,t,n){"use strict";n.r(t),n.d(t,{NoSSR:function(){return a}});var i=n("39980"),r=n("2363");function a(e){let{children:t}=e,[n,a]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{a(!0)},[]),n)?(0,i.jsx)(i.Fragment,{children:t}):null}},18373:function(e,t,n){"use strict";n.r(t),n.d(t,{DataContext:function(){return a},ThemeContext:function(){return d},useLang:function(){return l},usePageData:function(){return o},useVersion:function(){return s},useViewTransition:function(){return c}});var i=n("2363"),r=n("61850");let a=(0,i.createContext)({}),d=(0,i.createContext)({});function o(){return(0,i.useContext)(a).data}function l(){return(0,i.useContext)(a).data.page.lang||""}function s(){return(0,i.useContext)(a).data.page.version||""}function c(e){let[t,n]=(0,i.useState)(e);return(0,i.useLayoutEffect)(()=>{document.startViewTransition&&t!==e?document.startViewTransition(()=>{(0,r.flushSync)(()=>{n(e)}),window.dispatchEvent(new Event("RspressReloadContent"))}):((0,r.flushSync)(()=>{n(e)}),window.dispatchEvent(new Event("RspressReloadContent")))},[e]),t}},80219:function(e,t,n){"use strict";n.r(t),n.d(t,{BrowserRouter:function(){return d.BrowserRouter},NoSSR:function(){return o.NoSSR},isEqualPath:function(){return a.isEqualPath},isProduction:function(){return a.isProduction},matchRoutes:function(){return d.matchRoutes},normalizeHrefInRuntime:function(){return a.normalizeHrefInRuntime},normalizeImagePath:function(){return a.normalizeImagePath},normalizeRoutePath:function(){return a.normalizeRoutePath},removeBase:function(){return a.removeBase},useLocation:function(){return d.useLocation},useNavigate:function(){return d.useNavigate},withBase:function(){return a.withBase}});var i=n("18373");n.es(i,t);var r=n("30224");n.es(r,t);var a=n("84188"),d=n("35383");n("20288");var o=n("13972")},84188:function(e,t,n){"use strict";n.r(t),n.d(t,{isEqualPath:function(){return l},isProduction:function(){return r.isProduction},normalizeHrefInRuntime:function(){return s},normalizeImagePath:function(){return c},normalizeRoutePath:function(){return a},removeBase:function(){return o},withBase:function(){return d}});var i=n("13328"),r=n("64362");function a(e){return decodeURIComponent(e).replace(/\.html$/,"").replace(/\/index$/,"/")}function d(e="/"){return(0,r.withBase)(e,i.default.base)}function o(e){return(0,r.removeBase)(e,i.default.base)}function l(e,t){return d(s((0,r.removeHash)(e)))===d(s((0,r.removeHash)(t)))}function s(e){let t=!!i.default?.route?.cleanUrls;return(0,r.normalizeHref)(e,t)}function c(e){return!(0,r.isProduction)()||(0,r.isExternalUrl)(e)||(0,r.isDataUrl)(e)?e:d(e)}},12555:function(e,t,n){"use strict";n.r(t),n.d(t,{clearAllBodyScrollLocks:function(){return v},disableBodyScroll:function(){return b}});var i=!1;if("undefined"!=typeof window){var r={get passive(){i=!0;return}};window.addEventListener("testPassive",null,r),window.removeEventListener("testPassive",null,r)}var a="undefined"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1),d=[],o=!1,l=-1,s=void 0,c=void 0,u=void 0,h=function(e){return d.some(function(t){return!!(t.options.allowTouchMove&&t.options.allowTouchMove(e))||!1})},p=function(e){var t=e||window.event;return!!h(t.target)||!!(t.touches.length>1)||(t.preventDefault&&t.preventDefault(),!1)},x=function(e){if(void 0===u){var t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;if(t&&n>0){var i=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right"),10);u=document.body.style.paddingRight,document.body.style.paddingRight=i+n+"px"}}void 0===s&&(s=document.body.style.overflow,document.body.style.overflow="hidden")},f=function(){void 0!==u&&(document.body.style.paddingRight=u,u=void 0),void 0!==s&&(document.body.style.overflow=s,s=void 0)},m=function(){if(void 0!==c){var e=-parseInt(document.body.style.top,10),t=-parseInt(document.body.style.left,10);document.body.style.position=c.position,document.body.style.top=c.top,document.body.style.left=c.left,window.scrollTo(t,e),c=void 0}},g=function(e,t){var n,i=e.targetTouches[0].clientY-l;if(h(e.target))return!1;if(t&&0===t.scrollTop&&i>0)return p(e);return(n=t)&&n.scrollHeight-n.scrollTop<=n.clientHeight&&i<0?p(e):(e.stopPropagation(),!0)},b=function(e,t){if(!e){console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");return}!d.some(function(t){return t.targetElement===e})&&(d=[].concat(function(e){if(!Array.isArray(e))return Array.from(e);for(var t=0,n=Array(e.length);t=i&&(document.body.style.top=-(t+e))})},300)}}):x(t),a&&(e.ontouchstart=function(e){1===e.targetTouches.length&&(l=e.targetTouches[0].clientY)},e.ontouchmove=function(t){1===t.targetTouches.length&&g(t,e)},!o&&(document.addEventListener("touchmove",p,i?{passive:!1}:void 0),o=!0)))},v=function(){a&&(d.forEach(function(e){e.targetElement.ontouchstart=null,e.targetElement.ontouchmove=null}),o&&(document.removeEventListener("touchmove",p,i?{passive:!1}:void 0),o=!1),l=-1),a?m():f(),d=[]}},429:function(e,t){"use strict";t.parse=function(e){for(var t,n=[],i=String(e||""),r=i.indexOf(","),a=0,d=!1;!d;)-1===r&&(r=i.length,d=!0),((t=i.slice(a,r).trim())||!d)&&n.push(t),a=r+1,r=i.indexOf(",",a);return n},t.stringify=function(e,t){var n=t||{},i=!1===n.padLeft?"":" ",r=n.padRight?" ":"";return""===e[e.length-1]&&(e=e.concat("")),e.join(r+","+i).trim()}},79522:function(e,t,n){"use strict";var i=n("48456"),r={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,a,d,o,l,s,c,u,h=!1;!t&&(t={}),d=t.debug||!1;try{if(l=i(),s=document.createRange(),c=document.getSelection(),(u=document.createElement("span")).textContent=e,u.ariaHidden="true",u.style.all="unset",u.style.position="fixed",u.style.top=0,u.style.clip="rect(0, 0, 0, 0)",u.style.whiteSpace="pre",u.style.webkitUserSelect="text",u.style.MozUserSelect="text",u.style.msUserSelect="text",u.style.userSelect="text",u.addEventListener("copy",function(n){if(n.stopPropagation(),t.format){if(n.preventDefault(),void 0===n.clipboardData){d&&console.warn("unable to use e.clipboardData"),d&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=r[t.format]||r.default;window.clipboardData.setData(i,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e)}t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))}),document.body.appendChild(u),s.selectNodeContents(u),c.addRange(s),!document.execCommand("copy"))throw Error("copy command was unsuccessful");h=!0}catch(i){d&&console.error("unable to copy using execCommand: ",i),d&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),h=!0}catch(i){;d&&console.error("unable to copy using clipboardData: ",i),d&&console.error("falling back to prompt"),n="message"in t?t.message:"Copy to clipboard: #{key}, Enter",a=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C",o=n.replace(/#{\s*key\s*}/g,a),window.prompt(o,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(s):c.removeAllRanges()),u&&document.body.removeChild(u),l()}return h}},85653:function(e,t){"use strict";var n,i,r;let a;n="FlexSearch",i=function e(t){let n;function i(e,t){let n=t?t.id:e&&e.id;this.id=n||0===n?n:E++,this.init(e,t),o(this,"index",function(){return this.a?Object.keys(this.a.index[this.a.keys[0]].c):Object.keys(this.c)}),o(this,"length",function(){return this.index.length})}function r(e,t,n,i){return this.u!==this.g&&(this.o=this.o.concat(n),this.u++,i&&this.o.length>=i&&(this.u=this.g),this.u===this.g&&(this.cache&&this.j.set(t,this.o),this.F&&this.F(this.o))),this}function a(e,t){let n=e.length,i=y(t),r=[];for(let a=0,d=0;a=d&&((e=(e=e[o-(r+.5>>0)])[n]||(e[n]=[]))[e.length]=i),r)}function u(e,t){if(e){let n=Object.keys(e);for(let i=0,r=n.length;i(e=e.length-t.length)?1:e?-1:0}function x(e,t){return e=e[n],e<(t=t[n])?-1:e>t?1:0}function f(e,t){let i=n.length;for(let r=0;rt?1:0}function m(e,t,n){return e?{page:e,next:t?""+t:null,result:n}:n}function g(e,t,n,i,r,a,d){let o,l=[];if(!0===n){n="0";var s=""}else s=n&&n.split(":");let c=e.length;if(1d&&(s=0),(o=(s=s||0)+t)=this.m.length&&(this.C=0),this.m[this.C].postMessage({add:!0,id:e,content:t}),this.c[d]=""+this.C,n&&n(),this;if(!r){if(this.async&&"function"!=typeof importScripts){let r=this;return(d=new Promise(function(n){setTimeout(function(){r.add(e,t,null,i,!0),r=null,n()})}),n)?(d.then(n),this):d}if(n)return this.add(e,t,null,i,!0),n(),this}if(!(t=this.encode(t)).length)return this;r=y(n=this.f)?n(t):t.split(this.split),this.filter&&(r=a(r,this.filter));let p=j();p._ctx=j();let x=r.length,f=this.threshold,m=this.depth,g=this.b,b=this.i,v=this.D;for(let t=0;th;n--)c(b,p,u=o.substring(h,n),e,t,s,f,g-1)}break;default:if(l=c(b,p,o,e,1,s,f,g-1),m&&1=f)for(l=p._ctx[o]||(p._ctx[o]=j()),o=this.h[o]||(this.h[o]=w(g-(f||0))),0>(s=t-m)&&(s=0),(u=t+m+1)>x&&(u=x);sr;n--)i=a[n-1],a[n]=i,t[i]=n;a[r]=e,t[e]=r}}}return t},e}();return i}(function(){let e={},t="undefined"!=typeof Blob&&"undefined"!=typeof URL&&URL.createObjectURL;return function(n,i,r,a,d){return r=t?URL.createObjectURL(new Blob(["("+r.toString()+")()"],{type:"text/javascript"})):n+".min.js",e[n+="-"+i]||(e[n]=[]),e[n][d]=new Worker(r),e[n][d].onmessage=a,e[n][d]}}()),r=this,(a=r.define)&&a.amd?a([],function(){return i}):(a=r.modules)?a[n.toLowerCase()]=i:"object"==typeof t?e.exports=i:r[n]=i},43451:function(e){"use strict";e.exports=function(e,n){for(var i,r,a,d=e||"",o=n||"div",l={},s=0;s-1}var d=["itemScope"];function o(t,n,i,r){void 0===r&&(r=null);var a=i[t],d=i._;return a?e.createElement(a,n,r):d?d(t,n,r):e.createElement(t,n,r)}return function(e,i){if(void 0===i&&(i={}),"string"!=typeof e)throw TypeError("Expected HTML string");var a=document.createElement("div");a.innerHTML=e.trim();var d=Array.from(a.childNodes).map(function(e,a){return function e(i,a,d){var l,s,c,u,h=d.transform||{},p=d.preserveAttributes||[],x=d.dangerouslySetChildren||["style"],f=h._;if(8===i.nodeType)return null;if(3===i.nodeType){var m=i.textContent;return f?f(m):m}for(var g={},b=i.attributes,v=0;v1){var r,d=(r=i[0].trim(),/^-ms-/.test(r)&&(r=r.substr(1)),r.startsWith("--")?r:t(r)),o=(n=i.slice(1).join(":").trim(),/^\d+$/.test(n)?Number(n):n.replace(/'/g,'"'));a[d]=o}}),a);else{var o=s[n],h=""===o||String(o).toLowerCase()===i.toLowerCase();e[d.name]=d.isBoolean?h:o}return e},{})),k=Array.from(i.childNodes).map(function(t,i){return n.indexOf(y)>-1&&3===t.nodeType&&(t.textContent=t.textContent.trim(),""===t.textContent)?null:e(t,a+"."+i,d)}).filter(Boolean);if(x.indexOf(y)>-1){var w=i.innerHTML;return w&&("style"!==y&&"script"!==y&&(w=w.replace(/"/g,""")),I.dangerouslySetInnerHTML={__html:w.trim()}),o(y,I,h)}return o(y,I,h,0===k.length?null:k)}(e,String(a),i)}).filter(Boolean);return 1===d.length?d[0]:d}},"object"==typeof t?e.exports=r(n("2363")):"function"==typeof define&&define.amd?define(["react"],r):(i=i||self).htmr=r(i.React)},24546:function(e){"use strict";e.exports=function(e,t,n,i,r,a,d,o){if(!e){var l;if(void 0===t)l=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,i,r,a,d,o],c=0;(l=Error(t.replace(/%s/g,function(){return s[c++]}))).name="Invariant Violation"}throw l.framesToPop=1,l}}},54761:function(e){"use strict";e.exports=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90}},29975:function(e,t,n){"use strict";var i=n("54761"),r=n("67525");e.exports=function(e){return i(e)||r(e)}},67525:function(e){"use strict";e.exports=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57}},72201:function(e){"use strict";e.exports=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57}},60366:function(e,t,n){"use strict";n.r(t);var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=window.Promise||function(e){function t(){}e(t,t)},u=function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=e.target,n=function(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,n=void 0;if(v.container){if(v.container instanceof Object)t=(e=i({},e,v.container)).width-e.left-e.right-2*v.margin,n=e.height-e.top-e.bottom-2*v.margin;else{var r=(a(v.container)?v.container:document.querySelector(v.container)).getBoundingClientRect();e=i({},e,{width:r.width,height:r.height,left:r.left,top:r.top})}}t=t||e.width-2*v.margin,n=n||e.height-2*v.margin;var o=y.zoomedHd||y.original,l=d(o)?t:o.naturalWidth||t,s=d(o)?n:o.naturalHeight||n,c=o.getBoundingClientRect(),u=c.top,h=c.left,p=c.width,x=c.height,f=Math.min(Math.min(Math.max(p,l),t)/p,Math.min(Math.max(x,s),n)/x),m=(-h+(t-p)/2+v.margin+e.left)/f,g=(-u+(n-x)/2+v.margin+e.top)/f,b="scale("+f+") translate3d("+m+"px, "+g+"px, 0)";y.zoomed.style.transform=b,y.zoomedHd&&(y.zoomedHd.style.transform=b)};return new r(function(e){if(t&&-1===f.indexOf(t)){e(k);return}if(y.zoomed){e(k);return}if(t)y.original=t;else if(f.length>0){var i=f;y.original=i[0]}else{e(k);return}if(y.original.dispatchEvent(c("medium-zoom:open",{detail:{zoom:k}})),b=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,g=!0,y.zoomed=s(y.original),document.body.appendChild(I),v.template){var r=a(v.template)?v.template:document.querySelector(v.template);y.template=document.createElement("div"),y.template.appendChild(r.content.cloneNode(!0)),document.body.appendChild(y.template)}if(y.original.parentElement&&"PICTURE"===y.original.parentElement.tagName&&y.original.currentSrc&&(y.zoomed.src=y.original.currentSrc),document.body.appendChild(y.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),y.original.classList.add("medium-zoom-image--hidden"),y.zoomed.classList.add("medium-zoom-image--opened"),y.zoomed.addEventListener("click",p),y.zoomed.addEventListener("transitionend",function t(){g=!1,y.zoomed.removeEventListener("transitionend",t),y.original.dispatchEvent(c("medium-zoom:opened",{detail:{zoom:k}})),e(k)}),y.original.getAttribute("data-zoom-src")){y.zoomedHd=y.zoomed.cloneNode(),y.zoomedHd.removeAttribute("srcset"),y.zoomedHd.removeAttribute("sizes"),y.zoomedHd.removeAttribute("loading"),y.zoomedHd.src=y.zoomed.getAttribute("data-zoom-src"),y.zoomedHd.onerror=function(){clearInterval(d),console.warn("Unable to reach the zoom image target "+y.zoomedHd.src),y.zoomedHd=null,n()};var d=setInterval(function(){y.zoomedHd.complete&&(clearInterval(d),y.zoomedHd.classList.add("medium-zoom-image--opened"),y.zoomedHd.addEventListener("click",p),document.body.appendChild(y.zoomedHd),n())},10)}else if(y.original.hasAttribute("srcset")){y.zoomedHd=y.zoomed.cloneNode(),y.zoomedHd.removeAttribute("sizes"),y.zoomedHd.removeAttribute("loading");var o=y.zoomedHd.addEventListener("load",function(){y.zoomedHd.removeEventListener("load",o),y.zoomedHd.classList.add("medium-zoom-image--opened"),y.zoomedHd.addEventListener("click",p),document.body.appendChild(y.zoomedHd),n()})}else n()})},p=function(){return new r(function(e){if(g||!y.original){e(k);return}g=!0,document.body.classList.remove("medium-zoom--opened"),y.zoomed.style.transform="",y.zoomedHd&&(y.zoomedHd.style.transform=""),y.template&&(y.template.style.transition="opacity 150ms",y.template.style.opacity=0),y.original.dispatchEvent(c("medium-zoom:close",{detail:{zoom:k}})),y.zoomed.addEventListener("transitionend",function t(){y.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(y.zoomed),y.zoomedHd&&document.body.removeChild(y.zoomedHd),document.body.removeChild(I),y.zoomed.classList.remove("medium-zoom-image--opened"),y.template&&document.body.removeChild(y.template),g=!1,y.zoomed.removeEventListener("transitionend",t),y.original.dispatchEvent(c("medium-zoom:closed",{detail:{zoom:k}})),y.original=null,y.zoomed=null,y.zoomedHd=null,y.template=null,e(k)})})},x=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target;return y.original?p():h({target:t})},f=[],m=[],g=!1,b=0,v=n,y={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(t)?v=t:(t||"string"==typeof t)&&u(t);var I=l((v=i({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},v)).background);document.addEventListener("click",function(e){var t=e.target;if(t===I){p();return}-1!==f.indexOf(t)&&x({target:t})}),document.addEventListener("keyup",function(e){var t=e.key||e.keyCode;("Escape"===t||"Esc"===t||27===t)&&p()}),document.addEventListener("scroll",function(){if(!g&&y.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(b-e)>v.scrollOffset&&setTimeout(p,150)}}),window.addEventListener("resize",p);var k={open:h,close:p,toggle:x,update:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.background&&(I.style.background=e.background),e.container&&e.container instanceof Object&&(e.container=i({},v.container,e.container)),e.template){var t=a(e.template)?e.template:document.querySelector(e.template);e.template=t}return v=i({},v,e),f.forEach(function(e){e.dispatchEvent(c("medium-zoom:update",{detail:{zoom:k}}))}),k},clone:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e(i({},v,t))},attach:u,detach:function(){for(var e=arguments.length,t=Array(e),n=0;n0?t.reduce(function(e,t){return[].concat(e,o(t))},[]):f;return i.forEach(function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(c("medium-zoom:detach",{detail:{zoom:k}}))}),f=f.filter(function(e){return -1===i.indexOf(e)}),k},on:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return f.forEach(function(i){i.addEventListener("medium-zoom:"+e,t,n)}),m.push({type:"medium-zoom:"+e,listener:t,options:n}),k},off:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return f.forEach(function(i){i.removeEventListener("medium-zoom:"+e,t,n)}),m=m.filter(function(n){return!(n.type==="medium-zoom:"+e&&n.listener.toString()===t.toString())}),k},getOptions:function(){return v},getImages:function(){return f},getZoomedImage:function(){return y.original}};return k}},47841:function(e,t){var n,i;n=this,i=function(){var e,t,n,i={};i.version="0.2.0";var r=i.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
    '};function a(e,t,n){return en?n:e}function d(e){return(-1+e)*100}i.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},i.status=null,i.set=function(e){var t=i.isStarted();e=a(e,r.minimum,1),i.status=1===e?null:e;var n=i.render(!t),d=n.querySelector(r.barSelector),s=r.speed,c=r.easing;return n.offsetWidth,o(function(t){""===r.positionUsing&&(r.positionUsing=i.getPositioningCSS()),l(d,function(e,t,n){var i;if("translate3d"===r.positionUsing)i={transform:"translate3d("+(-1+e)*100+"%,0,0)"};else if("translate"===r.positionUsing)i={transform:"translate("+(-1+e)*100+"%,0)"};else i={"margin-left":(-1+e)*100+"%"};return i.transition="all "+t+"ms "+n,i}(e,s,c)),1===e?(l(n,{transition:"none",opacity:1}),n.offsetWidth,setTimeout(function(){l(n,{transition:"all "+s+"ms linear",opacity:0}),setTimeout(function(){i.remove(),t()},s)},s)):setTimeout(t,s)}),this},i.isStarted=function(){return"number"==typeof i.status},i.start=function(){!i.status&&i.set(0);var e=function(){setTimeout(function(){i.status&&(i.trickle(),e())},r.trickleSpeed)};return r.trickle&&e(),this},i.done=function(e){return e||i.status?i.inc(.3+.5*Math.random()).set(1):this},i.inc=function(e){var t=i.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),i.set(t)):i.start()},i.trickle=function(){return i.inc(Math.random()*r.trickleRate)},e=0,t=0,i.promise=function(n){return n&&"resolved"!==n.state()?(0===t&&i.start(),e++,t++,n.always(function(){0==--t?(e=0,i.done()):i.set((e-t)/e)}),this):this},i.render=function(e){if(i.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var n,a=t.querySelector(r.barSelector),d=e?"-100":function(e){return(-1+e)*100}(i.status||0),o=document.querySelector(r.parent);return l(a,{transition:"all 0 linear",transform:"translate3d("+d+"%,0,0)"}),!r.showSpinner&&(n=t.querySelector(r.spinnerSelector))&&p(n),o!=document.body&&c(o,"nprogress-custom-parent"),o.appendChild(t),t},i.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},i.isRendered=function(){return!!document.getElementById("nprogress")},i.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective" in e?"translate3d":t+"Transform" in e?"translate":"margin"};var o=(n=[],function(e){n.push(e),1==n.length&&!function e(){var t=n.shift();t&&t(e)}()}),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(n,i,r){i=function(n){return t[n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})]||(t[n]=function(t){var n=document.body.style;if(t in n)return t;for(var i,r=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);r--;)if((i=e[r]+a)in n)return i;return t}(n))}(i),n.style[i]=r}return function(e,t){var i,r,a=arguments;if(2==a.length)for(i in t)void 0!==(r=t[i])&&t.hasOwnProperty(i)&&n(e,i,r);else n(e,a[1],a[2])}}();function s(e,t){return("string"==typeof e?e:h(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=h(e),i=n+t;!s(n,t)&&(e.className=i.substring(1))}function u(e,t){var n,i=h(e);s(e,t)&&(n=i.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function h(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return i},"function"==typeof define&&define.amd?define(i):"object"==typeof t?e.exports=i():n.NProgress=i()},55144:function(e){"use strict";var t;e.exports=function(e){var n,i="&"+e+";";return(t=t||document.createElement("i")).innerHTML=i,(59!==(n=t.textContent).charCodeAt(n.length-1)||"semi"===e)&&n!==i&&n}},82668:function(e,t,n){"use strict";var i=n("10924"),r=n("33222"),a=n("67525"),d=n("72201"),o=n("29975"),l=n("55144");e.exports=function(e,t){var n,a,d={};for(a in!t&&(t={}),h)n=t[a],d[a]=null==n?h[a]:n;return(d.position.indent||d.position.start)&&(d.indent=d.position.indent||[],d.position=d.position.start),function(e,t){var n,a,d,h,v,y,I,k,w,j,P,S,C,z,E,_,N,A,T,L=t.additional,O=t.nonTerminated,M=t.text,B=t.reference,R=t.warning,D=t.textContext,H=t.referenceContext,F=t.warningContext,$=t.position,W=t.indent||[],K=e.length,U=0,q=-1,V=$.column||1,G=$.line||1,Z="",Y=[];for("string"==typeof L&&(L=L.charCodeAt(0)),_=X(),k=R?function(e,t){var n=X();n.column+=t,n.offset+=t,R.call(F,b[e],n,e)}:u,U--,K++;++U=55296&&e<=57343||e>1114111}(y=parseInt(h,m[z]))?(k(7,A),y=c(65533)):y in r?(k(6,A),y=r[y]):(j="",function(e){return e>=1&&e<=8||11===e||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||(65535&e)==65535||(65535&e)==65534}(y)&&k(6,A),y>65535&&(y-=65536,j+=c(y>>>10|55296),y=56320|1023&y),y=j+c(y))):z!==p&&k(4,A);y?(Q(),_=X(),U=T-1,V+=T-C+1,Y.push(y),N=X(),N.offset++,B&&B.call(H,y,{start:_,end:N},e.slice(C-1,T)),_=N):(h=e.slice(C-1,T),Z+=h,V+=h.length,U=T-1)}else 10===v&&(G++,q++,V=0),v==v?(Z+=c(v),V++):Q();return Y.join("");function X(){return{line:G,column:V,offset:U+($.offset||0)}}function Q(){Z&&(Y.push(Z),M&&M.call(D,Z,{start:_,end:X()}),Z="")}}(e,d)};var s={}.hasOwnProperty,c=String.fromCharCode,u=Function.prototype,h={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},p="named",x="hexadecimal",f="decimal",m={};m[x]=16,m[f]=10;var g={};g[p]=o,g[f]=a,g[x]=d;var b={};b[1]="Named character references must be terminated by a semicolon",b[2]="Numeric character references must be terminated by a semicolon",b[3]="Named character references cannot be empty",b[4]="Numeric character references cannot be empty",b[5]="Named character references must be known",b[6]="Numeric character references cannot be disallowed",b[7]="Numeric character references cannot be outside the permissible Unicode range"},3921:function(e,t,n){var i=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,i={},r={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=c.reach));k+=I.value.length,I=I.next){var w,j=I.value;if(n.length>t.length)return;if(!(j instanceof a)){var P=1;if(g){if(!(w=d(y,k,t,m))||w.index>=t.length)break;var S=w.index,C=w.index+w[0].length,z=k;for(z+=I.value.length;S>=z;)z+=(I=I.next).value.length;if(z-=I.value.length,k=z,I.value instanceof a)continue;for(var E=I;E!==n.tail&&(zc.reach&&(c.reach=T);var L=I.prev;if(N&&(L=l(n,L,N),k+=N.length),function(e,t,n){for(var i=t.next,r=0;r1){var O={cause:u+","+p,reach:T};e(t,n,i,I.prev,k,O),c&&O.reach>c.reach&&(c.reach=O.reach)}}}}}}(e,s,t,s.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(s)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var i,a=0;i=n[a++];)i(t)}},Token:a};function a(e,t,n,i){this.type=e,this.content=t,this.alias=n,this.length=0|(i||"").length}function d(e,t,n,i){e.lastIndex=t;var r=e.exec(n);if(r&&i&&r[1]){var a=r[1].length;r.index+=a,r[0]=r[0].slice(a)}return r}e.Prism=r,a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var i="";return t.forEach(function(t){i+=e(t,n)}),i}var a={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},d=t.alias;d&&(Array.isArray(d)?Array.prototype.push.apply(a.classes,d):a.classes.push(d)),r.hooks.run("wrap",a);var o="";for(var l in a.attributes)o+=" "+l+'="'+(a.attributes[l]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+o+">"+a.content+""};function o(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function l(e,t,n){var i=t.next,r={value:n,prev:t,next:i};return t.next=r,i.prev=r,e.length++,r}if(!e.document)return e.addEventListener?(!r.disableWorkerMessageHandler&&e.addEventListener("message",function(t){var n=JSON.parse(t.data),i=n.language,a=n.code,d=n.immediateClose;e.postMessage(r.highlight(a,r.languages[i],i)),d&&e.close()},!1),r):r;var s=r.util.currentScript();function c(){!r.manual&&r.highlightAll()}if(s&&(r.filename=s.src,s.hasAttribute("data-manual")&&(r.manual=!0)),!r.manual){var u=document.readyState;"loading"===u||"interactive"===u&&s&&s.defer?document.addEventListener("DOMContentLoaded",c):window.requestAnimationFrame?window.requestAnimationFrame(c):window.setTimeout(c,16)}return r}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=i),void 0!==n.g&&(n.g.Prism=i)},52504:function(e,t,n){"use strict";var i=n("62265");function r(){}function a(){}a.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,a,d){if(d!==i){var o=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw o.name="Invariant Violation",o}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:r};return n.PropTypes=n,n}},23698:function(e,t,n){e.exports=n("52504")()},62265:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},62616:function(e,t,n){"use strict";var i=n("22275"),r=n("6492"),a=n("23811"),d="data";e.exports=function(e,t){var n=i(t),h=t,p=a;return n in e.normal?e.property[e.normal[n]]:(n.length>4&&n.slice(0,4)===d&&o.test(t)&&("-"===t.charAt(4)?h=function(e){var t=e.slice(5).replace(l,u);return d+t.charAt(0).toUpperCase()+t.slice(1)}(t):t=function(e){var t=e.slice(4);return l.test(t)?e:("-"!==(t=t.replace(s,c)).charAt(0)&&(t="-"+t),d+t)}(t),p=r),new p(h,t))};var o=/^data[-\w.:]+$/i,l=/-[a-z]/g,s=/[A-Z]/g;function c(e){return"-"+e.toLowerCase()}function u(e){return e.charAt(1).toUpperCase()}},46093:function(e,t,n){"use strict";var i=n("96399"),r=n("59283"),a=n("87430"),d=n("62376"),o=n("35531"),l=n("11006");e.exports=i([a,r,d,o,l])},35531:function(e,t,n){"use strict";var i=n("13077"),r=n("79469"),a=i.booleanish,d=i.number,o=i.spaceSeparated;e.exports=r({transform:function(e,t){return"role"===t?t:"aria-"+t.slice(4).toLowerCase()},properties:{ariaActiveDescendant:null,ariaAtomic:a,ariaAutoComplete:null,ariaBusy:a,ariaChecked:a,ariaColCount:d,ariaColIndex:d,ariaColSpan:d,ariaControls:o,ariaCurrent:null,ariaDescribedBy:o,ariaDetails:null,ariaDisabled:a,ariaDropEffect:o,ariaErrorMessage:null,ariaExpanded:a,ariaFlowTo:o,ariaGrabbed:a,ariaHasPopup:null,ariaHidden:a,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:o,ariaLevel:d,ariaLive:null,ariaModal:a,ariaMultiLine:a,ariaMultiSelectable:a,ariaOrientation:null,ariaOwns:o,ariaPlaceholder:null,ariaPosInSet:d,ariaPressed:a,ariaReadOnly:a,ariaRelevant:null,ariaRequired:a,ariaRoleDescription:o,ariaRowCount:d,ariaRowIndex:d,ariaRowSpan:d,ariaSelected:a,ariaSetSize:d,ariaSort:null,ariaValueMax:d,ariaValueMin:d,ariaValueNow:d,ariaValueText:null,role:null}})},11006:function(e,t,n){"use strict";var i=n("13077"),r=n("79469"),a=n("12561"),d=i.boolean,o=i.overloadedBoolean,l=i.booleanish,s=i.number,c=i.spaceSeparated,u=i.commaSeparated;e.exports=r({space:"html",attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},transform:a,mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:u,acceptCharset:c,accessKey:c,action:null,allow:null,allowFullScreen:d,allowPaymentRequest:d,allowUserMedia:d,alt:null,as:null,async:d,autoCapitalize:null,autoComplete:c,autoFocus:d,autoPlay:d,capture:d,charSet:null,checked:d,cite:null,className:c,cols:s,colSpan:null,content:null,contentEditable:l,controls:d,controlsList:c,coords:s|u,crossOrigin:null,data:null,dateTime:null,decoding:null,default:d,defer:d,dir:null,dirName:null,disabled:d,download:o,draggable:l,encType:null,enterKeyHint:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:d,formTarget:null,headers:c,height:s,hidden:d,high:s,href:null,hrefLang:null,htmlFor:c,httpEquiv:c,id:null,imageSizes:null,imageSrcSet:u,inputMode:null,integrity:null,is:null,isMap:d,itemId:null,itemProp:c,itemRef:c,itemScope:d,itemType:c,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:d,low:s,manifest:null,max:null,maxLength:s,media:null,method:null,min:null,minLength:s,multiple:d,muted:d,name:null,nonce:null,noModule:d,noValidate:d,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforePrint:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextMenu:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:d,optimum:s,pattern:null,ping:c,placeholder:null,playsInline:d,poster:null,preload:null,readOnly:d,referrerPolicy:null,rel:c,required:d,reversed:d,rows:s,rowSpan:s,sandbox:c,scope:null,scoped:d,seamless:d,selected:d,shape:null,size:s,sizes:null,slot:null,span:s,spellCheck:l,src:null,srcDoc:null,srcLang:null,srcSet:u,start:s,step:null,style:null,tabIndex:s,target:null,title:null,translate:null,type:null,typeMustMatch:d,useMap:null,value:l,width:s,wrap:null,align:null,aLink:null,archive:c,axis:null,background:null,bgColor:null,border:s,borderColor:null,bottomMargin:s,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:d,declare:d,event:null,face:null,frame:null,frameBorder:null,hSpace:s,leftMargin:s,link:null,longDesc:null,lowSrc:null,marginHeight:s,marginWidth:s,noResize:d,noHref:d,noShade:d,noWrap:d,object:null,profile:null,prompt:null,rev:null,rightMargin:s,rules:null,scheme:null,scrolling:l,standby:null,summary:null,text:null,topMargin:s,valueType:null,version:null,vAlign:null,vLink:null,vSpace:s,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:d,disableRemotePlayback:d,prefix:null,property:null,results:s,security:null,unselectable:null}})},12561:function(e,t,n){"use strict";var i=n("56073");e.exports=function(e,t){return i(e,t.toLowerCase())}},56073:function(e){"use strict";e.exports=function(e,t){return t in e?e[t]:t}},79469:function(e,t,n){"use strict";var i=n("22275"),r=n("23673"),a=n("6492");e.exports=function(e){var t,n,d=e.space,o=e.mustUseProperty||[],l=e.attributes||{},s=e.properties,c=e.transform,u={},h={};for(t in s)n=new a(t,c(l,t),s[t],d),-1!==o.indexOf(t)&&(n.mustUseProperty=!0),u[t]=n,h[i(t)]=t,h[i(n.attribute)]=t;return new r(u,h,d)}},6492:function(e,t,n){"use strict";var i=n("23811"),r=n("13077");e.exports=o,o.prototype=new i,o.prototype.defined=!0;var a=["boolean","booleanish","overloadedBoolean","number","commaSeparated","spaceSeparated","commaOrSpaceSeparated"],d=a.length;function o(e,t,n,o){var l,s=-1;for(function(e,t,n){n&&(e[t]=n)}(this,"space",o),i.call(this,e,t);++s=0||(r[n]=e[n]);return r}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},b={rel:["amphtml","canonical","alternate"]},v={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},I=Object.keys(g).map(function(e){return g[e]}),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},w=Object.keys(k).reduce(function(e,t){return e[k[t]]=t,e},{}),j=function(e,t){for(var n=e.length-1;n>=0;n-=1){var i=e[n];if(Object.prototype.hasOwnProperty.call(i,t))return i[t]}return null},P=function(e){var t=j(e,g.TITLE),n=j(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,function(){return t});var i=j(e,"defaultTitle");return t||i||void 0},S=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return p({},e,t)},{})},C=function(e,t,n){var i={};return n.filter(function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)}).map(function(t){return t[e]}).reverse().reduce(function(e,n){var r={};n.filter(function(e){for(var n,a=Object.keys(e),d=0;d/g,">").replace(/"/g,""").replace(/'/g,"'")},L=function(e){return Object.keys(e).reduce(function(t,n){var i=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+i:i},"")},O=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce(function(t,n){return t[k[n]||n]=e[n],t},t)},M=function(e,t){return t.map(function(t,n){var i,a=((i={key:n})["data-rh"]=!0,i);return Object.keys(t).forEach(function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]}),r().createElement(e,a)})},B=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){var e,n,i,a;return n=t.titleAttributes,(i={key:e=t.title})["data-rh"]=!0,a=O(n,i),[r().createElement(g.TITLE,a,e)]},toString:function(){var i,r,a,d,o,l;return i=e,r=t.title,a=t.titleAttributes,d=n,o=L(a),l=E(r),o?"<"+i+' data-rh="true" '+o+">"+T(l,d)+"":"<"+i+' data-rh="true">'+T(l,d)+""}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return O(t)},toString:function(){return L(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){var i,r,a;return i=e,r=t,a=n,r.reduce(function(e,t){var n=Object.keys(t).filter(function(e){return!("innerHTML"===e||"cssText"===e)}).reduce(function(e,n){var i=void 0===t[n]?n:n+'="'+T(t[n],a)+'"';return e?e+" "+i:i},""),r=t.innerHTML||t.cssText||"",d=-1===A.indexOf(i);return e+"<"+i+' data-rh="true" '+n+(d?"/>":">"+r+"")},"")}}}},R=function(e){var t=e.baseTag,n=e.bodyAttributes,i=e.encode,r=e.htmlAttributes,a=e.noscriptTags,d=e.styleTags,o=e.title,l=e.titleAttributes,s=e.linkTags,c=e.metaTags,u=e.scriptTags,h={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var p,x,f,m,I,k,w,j=(x=(p=e).linkTags,f=p.scriptTags,m=p.encode,I=_(p.metaTags,y),k=_(x,b),w=_(f,v),{priorityMethods:{toComponent:function(){return[].concat(M(g.META,I.priority),M(g.LINK,k.priority),M(g.SCRIPT,w.priority))},toString:function(){return B(g.META,I.priority,m)+" "+B(g.LINK,k.priority,m)+" "+B(g.SCRIPT,w.priority,m)}},metaTags:I.default,linkTags:k.default,scriptTags:w.default});h=j.priorityMethods,s=j.linkTags,c=j.metaTags,u=j.scriptTags}return{priority:h,base:B(g.BASE,t,i),bodyAttributes:B("bodyAttributes",n,i),htmlAttributes:B("htmlAttributes",r,i),link:B(g.LINK,s,i),meta:B(g.META,c,i),noscript:B(g.NOSCRIPT,a,i),script:B(g.SCRIPT,u,i),style:B(g.STYLE,d,i),title:B(g.TITLE,{title:void 0===o?"":o,titleAttributes:l},i)}},D=[],H=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?D:n.instances},add:function(e){(n.canUseDOM?D:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?D:n.instances).indexOf(e);(n.canUseDOM?D:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=R({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},F=r().createContext({}),$=d().shape({setHelmet:d().func,helmetInstances:d().shape({get:d().func,add:d().func,remove:d().func})}),W=function(e){function t(n){var i;return(i=e.call(this,n)||this).helmetData=new H(i.props.context,t.canUseDOM),i}return x(t,e),t.prototype.render=function(){return r().createElement(F.Provider,{value:this.helmetData.value},this.props.children)},t}(i.Component);W.canUseDOM="undefined"!=typeof document,W.propTypes={context:d().shape({helmet:d().shape()}),children:d().node.isRequired},W.defaultProps={context:{}},W.displayName="HelmetProvider";var K=function(e,t){var n,i=document.head||document.querySelector(g.HEAD),r=i.querySelectorAll(e+"[data-rh]"),a=[].slice.call(r),d=[];return t&&t.length&&t.forEach(function(t){var i=document.createElement(e);for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&("innerHTML"===r?i.innerHTML=t.innerHTML:"cssText"===r?i.styleSheet?i.styleSheet.cssText=t.cssText:i.appendChild(document.createTextNode(t.cssText)):i.setAttribute(r,void 0===t[r]?"":t[r]));i.setAttribute("data-rh","true"),a.some(function(e,t){return n=t,i.isEqualNode(e)})?a.splice(n,1):d.push(i)}),a.forEach(function(e){return e.parentNode.removeChild(e)}),d.forEach(function(e){return i.appendChild(e)}),{oldTags:a,newTags:d}},U=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var i=n.getAttribute("data-rh"),r=i?i.split(","):[],a=[].concat(r),d=Object.keys(t),o=0;o=0;u-=1)n.removeAttribute(a[u]);r.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==d.join(",")&&n.setAttribute("data-rh",d.join(","))}},q=function(e,t){var n,i,r=e.baseTag,a=e.htmlAttributes,d=e.linkTags,o=e.metaTags,l=e.noscriptTags,s=e.onChangeClientState,c=e.scriptTags,u=e.styleTags,h=e.title,p=e.titleAttributes;U(g.BODY,e.bodyAttributes),U(g.HTML,a),n=h,i=p,void 0!==n&&document.title!==n&&(document.title=E(n)),U(g.TITLE,i);var x={baseTag:K(g.BASE,r),linkTags:K(g.LINK,d),metaTags:K(g.META,o),noscriptTags:K(g.NOSCRIPT,l),scriptTags:K(g.SCRIPT,c),styleTags:K(g.STYLE,u)},f={},m={};Object.keys(x).forEach(function(e){var t=x[e],n=t.newTags,i=t.oldTags;n.length&&(f[e]=n),i.length&&(m[e]=x[e].oldTags)}),t&&t(),s(e,f,m)},V=null,G=function(e){function t(){for(var t,n=arguments.length,i=Array(n),r=0;r elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,i=e.arrayTypeChildren;return p({},i,((t={})[n.type]=[].concat(i[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,i=e.child,r=e.newProps,a=e.newChildProps,d=e.nestedChildren;switch(i.type){case g.TITLE:return p({},r,((t={})[i.type]=d,t.titleAttributes=p({},a),t));case g.BODY:return p({},r,{bodyAttributes:p({},a)});case g.HTML:return p({},r,{htmlAttributes:p({},a)});default:return p({},r,((n={})[i.type]=p({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach(function(t){var i;n=p({},n,((i={})[t]=e[t],i))}),n},n.warnOnInvalidChildren=function(e,t){return c()(I.some(function(t){return e.type===t}),"function"==typeof e.type?"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+I.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),c()(!t||"string"==typeof t||Array.isArray(t)&&!t.some(function(e){return"string"!=typeof e}),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``} ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,i={};return r().Children.forEach(e,function(e){if(e&&e.props){var r=e.props,a=r.children,d=m(r,Z),o=Object.keys(d).reduce(function(e,t){return e[w[t]||t]=d[t],e},{}),l=e.type;switch("symbol"==typeof l?l=l.toString():n.warnOnInvalidChildren(e,a),l){case g.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:i=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:i,newChildProps:o,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:o,nestedChildren:a})}}}),this.mapArrayTypeChildrenToProps(i,t)},n.render=function(){var e=this.props,t=e.children,n=m(e,Y),i=p({},n),a=n.helmetData;return t&&(i=this.mapChildrenToProps(t,i)),!a||a instanceof H||(a=new H(a.context,a.instances)),a?r().createElement(G,p({},i,{context:a.value,helmetData:void 0})):r().createElement(F.Consumer,null,function(e){return r().createElement(G,p({},i,{context:e}))})},t}(i.Component);X.propTypes={base:d().object,bodyAttributes:d().object,children:d().oneOfType([d().arrayOf(d().node),d().node]),defaultTitle:d().string,defer:d().bool,encodeSpecialCharacters:d().bool,htmlAttributes:d().object,link:d().arrayOf(d().object),meta:d().arrayOf(d().object),noscript:d().arrayOf(d().object),onChangeClientState:d().func,script:d().arrayOf(d().object),style:d().arrayOf(d().object),title:d().string,titleAttributes:d().object,titleTemplate:d().string,prioritizeSeoTags:d().bool,helmetData:d().object},X.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},X.displayName="Helmet"},22897:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.lazyWithPreload=void 0;var i=n("2363");function r(e){var t,n,r=(0,i.lazy)(e),a=(0,i.forwardRef)(function(e,n){var a=(0,i.useRef)(null!=t?t:r);return(0,i.createElement)(a.current,Object.assign(n?{ref:n}:{},e))});return a.preload=function(){return!n&&(n=e().then(function(e){return t=e.default})),n},a}t.lazyWithPreload=r,t.default=r},68965:function(e,t,n){"use strict";function i(e,t){return -1!==e.listLanguages().indexOf(t)}n.r(t),n.d(t,{default:function(){return i}})},51414:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return u}});var i=n("83197"),r=n("99553"),a=n("2363"),d=n.n(a);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function l(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return(function(e){if(0===e.length||1===e.length)return e;var t,n,i=e.join(".");if(!s[i]){;s[i]=0===(n=(t=e).length)||1===n?t:2===n?[t[0],t[1],"".concat(t[0],".").concat(t[1]),"".concat(t[1],".").concat(t[0])]:3===n?[t[0],t[1],t[2],"".concat(t[0],".").concat(t[1]),"".concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[0]),"".concat(t[1],".").concat(t[2]),"".concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[1],".").concat(t[0])]:n>=4?[t[0],t[1],t[2],t[3],"".concat(t[0],".").concat(t[1]),"".concat(t[0],".").concat(t[2]),"".concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[0]),"".concat(t[1],".").concat(t[2]),"".concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[1]),"".concat(t[2],".").concat(t[3]),"".concat(t[3],".").concat(t[0]),"".concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[0]),"".concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[1],".").concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[2],".").concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[3],".").concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[2],".").concat(t[1],".").concat(t[0])]:void 0}return s[i]})(e.filter(function(e){return"token"!==e})).reduce(function(e,t){return l(l({},e),n[t])},t)}(c.className,Object.assign({},c.style,void 0===r?{}:r),n)})}else b=l(l({},c),{},{className:c.className.join(" ")});var w=v(t.children);return d().createElement(p,(0,i.default)({key:o},b),w)}}},40458:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return y}});var i=n("86608"),r=n("31476"),a=n("99553"),d=n("2363"),o=n.n(d),l=n("51414"),s=n("68965"),c=["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","showInlineLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","wrapLongLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"];function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function h(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=0;a2&&void 0!==arguments[2]?arguments[2]:[];return t||d.length>0?function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return g({children:e,lineNumber:t,lineNumberStyle:l,largestLineNumber:o,showInlineLineNumbers:a,lineProps:n,className:r,showLineNumbers:i,wrapLongLines:s})}(e,r,d):function(e,t){if(i&&t&&a){var n=m(l,t,o);e.unshift(f(t,n))}return e}(e,r)}for(;b>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:i},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:i},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:i.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:i.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var r=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=i.variable[1].inside,d=0;d]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}}e.exports=t,t.displayName="clike",t.aliases=[]},17520:function(e){"use strict";function t(e){var t,n,i;n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/,(t=e).languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},t.languages.css.atrule.inside.rest=t.languages.css,(i=t.languages.markup)&&(i.tag.addInlined("style","css"),i.tag.addAttribute("style","css"))}e.exports=t,t.displayName="css",t.aliases=[]},63610:function(e){"use strict";function t(e){var t,n;(t=e).languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]},Object.keys(n={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"}).forEach(function(e){var i=n[e],r=[];!/^\w+$/.test(e)&&r.push(/\w+/.exec(e)[0]),"diff"===e&&r.push("bold"),t.languages.diff[e]={pattern:RegExp("^(?:["+i+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:r,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(e)[0]}}}}),Object.defineProperty(t.languages.diff,"PREFIXES",{value:n})}e.exports=t,t.displayName="diff",t.aliases=[]},59551:function(e){"use strict";function t(e){e.languages.javascript=e.languages.extend("clike",{"class-name":[e.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|")+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),e.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,e.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:e.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:e.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:e.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:e.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:e.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),e.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:e.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),e.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),e.languages.markup&&(e.languages.markup.tag.addInlined("script","javascript"),e.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),e.languages.js=e.languages.javascript}e.exports=t,t.displayName="javascript",t.aliases=["js"]},7091:function(e){"use strict";function t(e){e.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},e.languages.webmanifest=e.languages.json}e.exports=t,t.displayName="json",t.aliases=["webmanifest"]},17942:function(e){"use strict";function t(e){!function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,i=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,r=/(?:\{*\.{3}(?:[^{}]|)*\})/.source;function a(e,t){return RegExp(e=e.replace(//g,function(){return n}).replace(//g,function(){return i}).replace(//g,function(){return r}),t)}r=a(r).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var d=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(d).join(""):""},o=function(t){for(var n=[],i=0;i0&&n[n.length-1].tagName===d(r.content[0].content[1])&&n.pop():"/>"===r.content[r.content.length-1].content||n.push({tagName:d(r.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===r.type&&"{"===r.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===r.type&&"}"===r.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof r)&&n.length>0&&0===n[n.length-1].openedBraces){var l=d(r);i0&&("string"==typeof t[i-1]||"plain-text"===t[i-1].type)&&(l=d(t[i-1])+l,t.splice(i-1,1),i--),t[i]=new e.Token("plain-text",l,null,l)}r.content&&"string"!=typeof r.content&&o(r.content)}};e.hooks.add("after-tokenize",function(e){("jsx"===e.language||"tsx"===e.language)&&o(e.tokens)})}(e)}e.exports=t,t.displayName="jsx",t.aliases=[]},89693:function(e){"use strict";function t(e){e.languages.less=e.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),e.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}})}e.exports=t,t.displayName="less",t.aliases=[]},19463:function(e){"use strict";function t(e){!function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,function(){return t}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var i=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,r=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return i}),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+r+a+"(?:"+r+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+r+a+")(?:"+r+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(i),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+r+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+r+"$"),inside:{"table-header":{pattern:RegExp(i),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(t){["url","bold","italic","strike","code-snippet"].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add("after-tokenize",function(e){("markdown"===e.language||"md"===e.language)&&function e(t){if(t&&"string"!=typeof t)for(var n=0,i=t.length;n",quot:'"'},l=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(e)}e.exports=t,t.displayName="markdown",t.aliases=["md"]},47264:function(e){"use strict";function t(e){e.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},e.languages.markup.tag.inside["attr-value"].inside.entity=e.languages.markup.entity,e.languages.markup.doctype.inside["internal-subset"].inside=e.languages.markup,e.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.value.replace(/&/,"&"))}),Object.defineProperty(e.languages.markup.tag,"addInlined",{value:function(t,n){var i={};i["language-"+n]={pattern:/(^$)/i,lookbehind:!0,inside:e.languages[n]},i.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:i}};r["language-"+n]={pattern:/[\s\S]+/,inside:e.languages[n]};var a={};a[t]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return t}),"i"),lookbehind:!0,greedy:!0,inside:r},e.languages.insertBefore("markup","cdata",a)}}),Object.defineProperty(e.languages.markup.tag,"addAttribute",{value:function(t,n){e.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+t+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:e.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),e.languages.html=e.languages.markup,e.languages.mathml=e.languages.markup,e.languages.svg=e.languages.markup,e.languages.xml=e.languages.extend("markup",{}),e.languages.ssml=e.languages.xml,e.languages.atom=e.languages.xml,e.languages.rss=e.languages.xml}e.exports=t,t.displayName="markup",t.aliases=["html","mathml","svg","xml","ssml","atom","rss"]},31337:function(e){"use strict";function t(e){e.languages.scss=e.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),e.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),e.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),e.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),e.languages.scss.atrule.inside.rest=e.languages.scss}e.exports=t,t.displayName="scss",t.aliases=[]},89455:function(e,t,n){"use strict";var i=n("17942"),r=n("63847");function a(e){var t,n,a;e.register(i),e.register(r),n=(t=e).util.clone(t.languages.typescript),t.languages.tsx=t.languages.extend("jsx",n),delete t.languages.tsx.parameter,delete t.languages.tsx["literal-property"],(a=t.languages.tsx.tag).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+a.pattern.source+")",a.pattern.flags),a.lookbehind=!0}e.exports=a,a.displayName="tsx",a.aliases=[]},63847:function(e){"use strict";function t(e){var t,n;(t=e).languages.typescript=t.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),t.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete t.languages.typescript.parameter,delete t.languages.typescript["literal-property"],n=t.languages.extend("typescript",{}),delete n["class-name"],t.languages.typescript["class-name"].inside=n,t.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:n}}}}),t.languages.ts=t.languages.typescript}e.exports=t,t.displayName="typescript",t.aliases=["ts"]},14646:function(e){"use strict";function t(e){!function(e){function t(t,n){e.languages[t]&&e.languages.insertBefore(t,"comment",{"doc-comment":n})}var n=e.languages.markup.tag,i={pattern:/\/\/\/.*/,greedy:!0,alias:"comment",inside:{tag:n}};t("csharp",i),t("fsharp",i),t("vbnet",{pattern:/'''.*/,greedy:!0,alias:"comment",inside:{tag:n}})}(e)}e.exports=t,t.displayName="xmlDoc",t.aliases=[]},70660:function(e){"use strict";function t(e){!function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,i="(?:"+n.source+"(?:[ ]+"+t.source+")?|"+t.source+"(?:[ ]+"+n.source+")?)",r=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function d(e,t){return t=(t||"").replace(/m/g,"")+"m",RegExp(/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,function(){return i}).replace(/<>/g,function(){return e}),t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,function(){return i})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,function(){return i}).replace(/<>/g,function(){return"(?:"+r+"|"+a+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:d(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:d(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:d(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:d(a),lookbehind:!0,greedy:!0},number:{pattern:d(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(e)}e.exports=t,t.displayName="yaml",t.aliases=["yml"]},65241:function(e){e.exports=function(e,t,n,i){var r=n?n.call(i,e,t):void 0;if(void 0!==r)return!!r;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),d=Object.keys(t);if(a.length!==d.length)return!1;for(var o=Object.prototype.hasOwnProperty.bind(t),l=0;l{let n=e=>e.replace(/\/$/,"").toLowerCase();return(0,d.isEqualPath)(n(t.routePath),n(e))}),s=encodeURIComponent(o),u=(null===(r=n.default.__RSPRESS_PAGE_META)||void 0===r?void 0:r[s])||{},{toc:h=[],title:p="",frontmatter:x={},...f}=c.MDX_REGEXP.test(t.filePath)?u:n;return{siteData:a.default,page:{...f,pagePath:o,...l,pageType:(null==x?void 0:x.pageType)||"doc",title:p,frontmatter:x,toc:h}}}return{siteData:a.default,page:{pagePath:"",pageType:"404",routePath:"/404",lang:a.default.lang||"",frontmatter:{},title:"404",toc:[],version:"",_filepath:"",_relativePath:""}}}function f(e){let{helmetContext:t}=e,{setData:n,data:i}=(0,l.useContext)(d.DataContext),a=i.page.frontmatter||{},{pathname:c,search:p}=(0,d.useLocation)(),f=new URLSearchParams(p),m="globalUIComponents",g=!1===a[m]||"0"===f.get(m);return(0,l.useLayoutEffect)(()=>{(async function e(){try{let e=await x((0,d.normalizeRoutePath)(c));n(e)}catch(e){console.log(e)}})()},[c,n]),(0,r.jsxs)(o.HelmetProvider,{context:t,children:[(0,r.jsx)(h.Layout,{}),!g&&u.default.map((e,t)=>{if(Array.isArray(e)){let[n,i]=e;return s().createElement(n,{key:t,...i})}return s().createElement(e,{key:t})})]})}},19958:function(e,t,n){"use strict";n.r(t),n.d(t,{renderInBrowser:function(){return u}});var i=n("39980"),r=n("2363"),a=n("64362"),d=n("13328"),o=n("80219"),l=n("31878");let s=d.default.ssg,{default:c}=n("75962");async function u(){let e=document.getElementById("root"),t=async()=>{let e=await (0,l.initPageData)((0,o.normalizeRoutePath)(window.location.pathname));return function(){let[t,n]=(0,r.useState)(e),[a,d]=(0,r.useState)("light");return(0,i.jsx)(o.ThemeContext.Provider,{value:{theme:a,setTheme:d},children:(0,i.jsx)(o.DataContext.Provider,{value:{data:t,setData:n},children:(0,i.jsx)(o.BrowserRouter,{children:(0,i.jsx)(l.App,{})})})})}},d=await t();{let{createRoot:t,hydrateRoot:r}=n("30417");(0,a.isProduction)()&&s?r(e,(0,i.jsx)(d,{})):t(e).render((0,i.jsx)(d,{}))}}u().then(()=>{c.setup()})},53322:function(e,t,n){"use strict";n.r(t);var i=n("80219");n.es(i,t)},28853:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return i.default}});var i=n("28628");n.es(i,t)},3973:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return d}});var i=n("80219"),r=n("60366"),a=n("2363");function d(e){let{pathname:t}=(0,i.useLocation)(),{selector:n=".rspress-doc img",options:d={}}=e;return(0,a.useEffect)(()=>{let e;let t=setTimeout(()=>{let t=document.querySelectorAll(n);e=(0,r.default)(t,{...d,background:"var(--rp-c-bg)"})},100);return()=>{clearTimeout(t),null==e||e.detach(),null==e||e.close()}},[t]),null}n("12599")},22871:function(e,t,n){"use strict";n.r(t),n.d(t,{Link:function(){return u}});var i=n("39980");n("2363");var r=n("80219"),a=n("47841"),d=n.n(a),o=n("99593"),l=n("64362"),s=n("74059"),c=n("60342");function u(e){let{href:t="/",children:n,className:a="",onNavigate:u,...h}=e,p=(0,l.isExternalUrl)(t),x=p?"_blank":"",f=p?"noopener noreferrer":void 0,m=p?t:(0,r.withBase)((0,r.normalizeHrefInRuntime)(t)),g=(0,r.useNavigate)(),{pathname:b}=(0,r.useLocation)(),v=(0,r.isEqualPath)(b,m),y=async e=>{if(0!==e.button||e.currentTarget.target&&"_self"!==e.currentTarget.target||e.metaKey||e.shiftKey||e.altKey||e.ctrlKey)return;e.preventDefault();let t=m.split("#")[1];if(!p&&v&&t){let e=document.getElementById(t);e&&(0,c.scrollToTarget)(e,!0);return}if(!v){let e=(0,r.matchRoutes)(o.routes,(0,r.normalizeRoutePath)(m));if(null==e?void 0:e.length){let t=setTimeout(()=>{d().start()},200);await e[0].route.preload(),clearTimeout(t),d().done()}null==u||u(),g(m,{replace:!1})}};return p?(0,i.jsx)("a",{...h,href:m,target:x,rel:f,className:`${s.link} ${a}`,children:n}):(0,i.jsx)("a",{...h,className:`${s.link} ${a} cursor-pointer`,rel:f,target:x,onClick:y,href:m,children:n})}d().configure({showSpinner:!1})},24373:function(e,t,n){"use strict";n.r(t),n.d(t,{SvgWrapper:function(){return r}});var i=n("39980");function r(e){let{icon:t,...n}=e;return"string"==typeof t?(0,i.jsx)("img",{src:t,alt:"",...n}):(0,i.jsx)(t,{...n})}},60342:function(e,t,n){"use strict";n.r(t),n.d(t,{scrollToTarget:function(){return r.scrollToTarget},useLocaleSiteData:function(){return i.useLocaleSiteData},usePathUtils:function(){return a.usePathUtils}});var i=n("70658"),r=n("61562"),a=n("86875"),d=n("9774");n.es(d,t)},61562:function(e,t,n){"use strict";n.r(t),n.d(t,{DEFAULT_NAV_HEIGHT:function(){return i},scrollToTarget:function(){return r}}),n("59186"),n("78394"),n("64667"),n("6868"),n("4331");let i=72;function r(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i,r=parseInt(window.getComputedStyle(e).paddingTop,10),a=window.scrollY+e.getBoundingClientRect().top-n-r;window.scrollTo({left:0,top:Math.round(a),...t?{behavior:"smooth"}:{}})}},48599:function(e,t,n){"use strict";n.r(t),n.d(t,{useEnableNav:function(){return a}});var i=n("2363"),r=n("80219");function a(){let{siteData:{themeConfig:e},page:{frontmatter:t={}}}=(0,r.usePageData)(),n=((null==t?void 0:t.navbar)??!0)&&(null==e?void 0:e.hideNavbar)!=="always",[a,d]=(0,i.useState)(n);return[a,d]}},70658:function(e,t,n){"use strict";n.r(t),n.d(t,{useLocaleSiteData:function(){return r}}),n("81660"),n("71874"),n("64667");var i=n("80219");function r(){var e;let t=(0,i.usePageData)(),{page:{lang:n}}=t,r=(null==t?void 0:null===(e=t.siteData)||void 0===e?void 0:e.themeConfig)??{},a=t.siteData.lang??"",d=null==r?void 0:r.locales;return d&&0!==d.length?{...d.find(e=>e.lang===n),langRoutePrefix:n===a?"/":n}:{nav:r.nav,sidebar:r.sidebar,prevPageText:r.prevPageText,nextPageText:r.nextPageText,sourceCodeText:r.sourceCodeText,searchPlaceholderText:r.searchPlaceholderText}}},3743:function(e,t,n){"use strict";n.r(t),n.d(t,{useNavData:function(){return a}}),n("2363");var i=n("80219"),r=n("70658");function a(){let{nav:e}=(0,r.useLocaleSiteData)(),t=(0,i.useVersion)();return Array.isArray(e)?e:[...e[t.length>0?t:"default"]]}},86875:function(e,t,n){"use strict";n.r(t),n.d(t,{usePathUtils:function(){return a}}),n("59186"),n("78394"),n("64667");var i=n("64362"),r=n("80219");function a(){let e=(0,r.useLang)(),t=(0,r.useVersion)(),n=(0,r.usePageData)(),a=n.siteData.lang,d=n.siteData.multiVersion.default;return{normalizeLinkHref:n=>{let o=n;if((a||d)&&!(0,i.isExternalUrl)(o)&&!o.startsWith("#")){let n=(o=(0,r.removeBase)(o)).split("/").filter(Boolean),i="",l="",s="";return d&&(t!==d?(i=t,n[0]===t&&n.shift()):n[0]===d&&n.shift()),a&&(e!==a?(l=e,n[0]===e&&n.shift()):n[0]===a&&n.shift()),s=n.join("/"),(0,r.normalizeHrefInRuntime)((0,r.withBase)([i,l,s].filter(Boolean).join("/")))}return o}}}},89715:function(e,t,n){"use strict";n.r(t),n.d(t,{useRedirect4FirstVisit:function(){return a}}),n("6868"),n("4331"),n("20964");var i=n("80219"),r=n("2363");function a(){let{siteData:e,page:t}=(0,i.usePageData)(),n=e.lang||"",a=Object.values(e.themeConfig.locales||{}).map(e=>e.lang)||[],d=t.lang;(0,r.useEffect)(()=>{if(!n)return;let{pathname:e}=window.location,t=(0,i.removeBase)(e),r="rspress-visited";if(localStorage.getItem(r))return;localStorage.setItem(r,"1");let o=window.navigator.language.split("-")[0];a.includes(o)&&o!==d&&(o===n?window.location.replace(e.replace(`/${d}`,"")):d===n?window.location.replace((0,i.withBase)(`/${o}${t}`)):window.location.replace(e.replace(`/${d}`,`/${o}`)))},[])}},97553:function(e,t,n){"use strict";n.r(t),n.d(t,{useUISwitch:function(){return s}}),n("72104"),n("1676"),n("50882");var i,r,a=n("2363"),d=n("80219"),o=n("48599"),l=n("70658");function s(){let{page:e,siteData:t}=(0,d.usePageData)(),{frontmatter:n}=e,{themeConfig:i}=t,r=(0,l.useLocaleSiteData)(),s=(0,d.useLocation)(),c=(null==n?void 0:n.overview)??!1,u=()=>{let e="undefined"==typeof window||window.top===window.self;return((null==n?void 0:n.outline)??(null==i?void 0:i.outline)??e)&&!c},[h,p]=(0,o.useEnableNav)(),[x,f]=(0,a.useState)(u()),[m,g]=(0,a.useState)((null==n?void 0:n.footer)??!0),b=r.sidebar||{},v=(null==n?void 0:n.sidebar)!==!1&&Object.keys(b).length>0;return(0,a.useEffect)(()=>{f(u())},[e,t]),(0,a.useEffect)(()=>{let e=new URLSearchParams(s.search),t=document.documentElement.style,n=t.getPropertyValue("--rp-sidebar-width"),i=t.getPropertyValue("--rp-aside-width"),r=e.get("navbar"),a=e.get("sidebar"),d=e.get("outline"),o=e.get("footer");return"0"===r&&p(!1),"0"===a&&document.documentElement.style.setProperty("--rp-sidebar-width","0px"),"0"===d&&document.documentElement.style.setProperty("--rp-aside-width","0px"),"0"===o&&g(!1),()=>{document.documentElement.style.setProperty("--rp-sidebar-width",n),document.documentElement.style.setProperty("--rp-aside-width",i),p(h),g(m)}},[s.search]),{showAside:x,showNavbar:h,showSidebar:v,showDocFooter:m}}(r=i||(i={})).Show="1",r.Hide="0"},9774:function(e,t,n){"use strict";n.r(t),n.d(t,{getLogoUrl:function(){return o},renderHtmlOrText:function(){return l},renderInlineMarkdown:function(){return s}}),n("2363");var i=n("93371"),r=n.n(i),a=n("49555"),d=n("71082");function o(e,t){return"string"==typeof e?e:"dark"===t?e.dark:e.light}function l(e){return e?(0,d.isNumber)(e)?e:(0,a.default)(e)?r()(e):e:""}function s(e){return l(e.replace(/\*\*(.*?)\*\*/g,"$1").replace(/`(.*?)`/g,"$1"))}},89621:function(e,t,n){"use strict";n.r(t);var i=n("53322");n.es(i,t)},7808:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return i.default}});var i=n("28853");n.es(i,t)},49915:function(e,t,n){"use strict";n.r(t);var i=n("3973");t.default=[[i.default,{}]]},16288:function(e,t,n){"use strict";n.r(t);var i=n("68450"),r=n("78036"),a=n("35009"),d=n("69611"),o=n("41143"),l=n("51088"),s=n("89648"),c=n("94744"),u=n("12417"),h=n("61691"),p=n("29027"),x=n("5646");t.default={js:i.default,ts:r.default,jsx:a.default,tsx:a.default,json:d.default,css:o.default,scss:l.default,less:s.default,xml:c.default,diff:u.default,yaml:h.default,md:p.default,mdx:a.default,bash:x.default}},99593:function(e,t,n){"use strict";n.r(t),n.d(t,{routes:function(){return eQ}});var i=n("2363"),r=n.n(i),a=n("22897");let d=(0,a.lazyWithPreload)(()=>n.e("296").then(n.bind(n,"47029"))),o=(0,a.lazyWithPreload)(()=>n.e("5068").then(n.bind(n,"80522"))),l=(0,a.lazyWithPreload)(()=>n.e("6344").then(n.bind(n,"32746"))),s=(0,a.lazyWithPreload)(()=>n.e("8021").then(n.bind(n,"62815"))),c=(0,a.lazyWithPreload)(()=>n.e("1022").then(n.bind(n,"87676"))),u=(0,a.lazyWithPreload)(()=>n.e("5069").then(n.bind(n,"73357"))),h=(0,a.lazyWithPreload)(()=>n.e("343").then(n.bind(n,"42551"))),p=(0,a.lazyWithPreload)(()=>n.e("9071").then(n.bind(n,"21928"))),x=(0,a.lazyWithPreload)(()=>n.e("3681").then(n.bind(n,"19248"))),f=(0,a.lazyWithPreload)(()=>n.e("1232").then(n.bind(n,"22533"))),m=(0,a.lazyWithPreload)(()=>n.e("6422").then(n.bind(n,"46241"))),g=(0,a.lazyWithPreload)(()=>n.e("3837").then(n.bind(n,"47556"))),b=(0,a.lazyWithPreload)(()=>n.e("6782").then(n.bind(n,"11842"))),v=(0,a.lazyWithPreload)(()=>n.e("1047").then(n.bind(n,"97643"))),y=(0,a.lazyWithPreload)(()=>n.e("5450").then(n.bind(n,"74294"))),I=(0,a.lazyWithPreload)(()=>n.e("5859").then(n.bind(n,"77908"))),k=(0,a.lazyWithPreload)(()=>n.e("2456").then(n.bind(n,"89322"))),w=(0,a.lazyWithPreload)(()=>n.e("9013").then(n.bind(n,"99775"))),j=(0,a.lazyWithPreload)(()=>n.e("4838").then(n.bind(n,"19142"))),P=(0,a.lazyWithPreload)(()=>n.e("9750").then(n.bind(n,"20526"))),S=(0,a.lazyWithPreload)(()=>n.e("1352").then(n.bind(n,"57161"))),C=(0,a.lazyWithPreload)(()=>n.e("2982").then(n.bind(n,"89066"))),z=(0,a.lazyWithPreload)(()=>n.e("8142").then(n.bind(n,"42095"))),E=(0,a.lazyWithPreload)(()=>n.e("9152").then(n.bind(n,"8065"))),_=(0,a.lazyWithPreload)(()=>n.e("3555").then(n.bind(n,"49791"))),N=(0,a.lazyWithPreload)(()=>n.e("9975").then(n.bind(n,"53146"))),A=(0,a.lazyWithPreload)(()=>n.e("7850").then(n.bind(n,"46361"))),T=(0,a.lazyWithPreload)(()=>n.e("3166").then(n.bind(n,"92284"))),L=(0,a.lazyWithPreload)(()=>n.e("2305").then(n.bind(n,"69597"))),O=(0,a.lazyWithPreload)(()=>n.e("4991").then(n.bind(n,"84804"))),M=(0,a.lazyWithPreload)(()=>n.e("2901").then(n.bind(n,"34718"))),B=(0,a.lazyWithPreload)(()=>n.e("9543").then(n.bind(n,"5091"))),R=(0,a.lazyWithPreload)(()=>n.e("6756").then(n.bind(n,"16839"))),D=(0,a.lazyWithPreload)(()=>n.e("6269").then(n.bind(n,"47631"))),H=(0,a.lazyWithPreload)(()=>n.e("3758").then(n.bind(n,"81820"))),F=(0,a.lazyWithPreload)(()=>n.e("8407").then(n.bind(n,"68222"))),$=(0,a.lazyWithPreload)(()=>n.e("7204").then(n.bind(n,"7765"))),W=(0,a.lazyWithPreload)(()=>Promise.all([n.e("6212"),n.e("7724")]).then(n.bind(n,"68958"))),K=(0,a.lazyWithPreload)(()=>n.e("9443").then(n.bind(n,"37968"))),U=(0,a.lazyWithPreload)(()=>Promise.all([n.e("6212"),n.e("6379")]).then(n.bind(n,"8634"))),q=(0,a.lazyWithPreload)(()=>n.e("7505").then(n.bind(n,"54942"))),V=(0,a.lazyWithPreload)(()=>n.e("6940").then(n.bind(n,"96695"))),G=(0,a.lazyWithPreload)(()=>n.e("873").then(n.bind(n,"76214"))),Z=(0,a.lazyWithPreload)(()=>n.e("1003").then(n.bind(n,"96331"))),Y=(0,a.lazyWithPreload)(()=>n.e("9462").then(n.bind(n,"57232"))),X=(0,a.lazyWithPreload)(()=>n.e("3522").then(n.bind(n,"8954"))),Q=(0,a.lazyWithPreload)(()=>n.e("4580").then(n.bind(n,"95146"))),J=(0,a.lazyWithPreload)(()=>n.e("5072").then(n.bind(n,"18984"))),ee=(0,a.lazyWithPreload)(()=>n.e("4981").then(n.bind(n,"13588"))),et=(0,a.lazyWithPreload)(()=>n.e("6062").then(n.bind(n,"75104"))),en=(0,a.lazyWithPreload)(()=>n.e("2520").then(n.bind(n,"78425"))),ei=(0,a.lazyWithPreload)(()=>n.e("5444").then(n.bind(n,"9070"))),er=(0,a.lazyWithPreload)(()=>n.e("6018").then(n.bind(n,"46929"))),ea=(0,a.lazyWithPreload)(()=>n.e("12").then(n.bind(n,"92989"))),ed=(0,a.lazyWithPreload)(()=>n.e("1285").then(n.bind(n,"28304"))),eo=(0,a.lazyWithPreload)(()=>n.e("5789").then(n.bind(n,"89772"))),el=(0,a.lazyWithPreload)(()=>n.e("9882").then(n.bind(n,"28108"))),es=(0,a.lazyWithPreload)(()=>n.e("8867").then(n.bind(n,"83083"))),ec=(0,a.lazyWithPreload)(()=>n.e("4273").then(n.bind(n,"18400"))),eu=(0,a.lazyWithPreload)(()=>n.e("4271").then(n.bind(n,"16635"))),eh=(0,a.lazyWithPreload)(()=>n.e("308").then(n.bind(n,"68638"))),ep=(0,a.lazyWithPreload)(()=>n.e("2009").then(n.bind(n,"90167"))),ex=(0,a.lazyWithPreload)(()=>n.e("198").then(n.bind(n,"4302"))),ef=(0,a.lazyWithPreload)(()=>n.e("6069").then(n.bind(n,"26036"))),em=(0,a.lazyWithPreload)(()=>n.e("9812").then(n.bind(n,"13707"))),eg=(0,a.lazyWithPreload)(()=>n.e("8187").then(n.bind(n,"95265"))),eb=(0,a.lazyWithPreload)(()=>n.e("2200").then(n.bind(n,"48746"))),ev=(0,a.lazyWithPreload)(()=>n.e("1363").then(n.bind(n,"65629"))),ey=(0,a.lazyWithPreload)(()=>n.e("5391").then(n.bind(n,"51649"))),eI=(0,a.lazyWithPreload)(()=>n.e("2855").then(n.bind(n,"10314"))),ek=(0,a.lazyWithPreload)(()=>n.e("7697").then(n.bind(n,"20057"))),ew=(0,a.lazyWithPreload)(()=>n.e("1282").then(n.bind(n,"80437"))),ej=(0,a.lazyWithPreload)(()=>n.e("8886").then(n.bind(n,"77891"))),eP=(0,a.lazyWithPreload)(()=>n.e("2868").then(n.bind(n,"56381"))),eS=(0,a.lazyWithPreload)(()=>n.e("9475").then(n.bind(n,"1291"))),eC=(0,a.lazyWithPreload)(()=>n.e("2505").then(n.bind(n,"75894"))),ez=(0,a.lazyWithPreload)(()=>n.e("2695").then(n.bind(n,"62018"))),eE=(0,a.lazyWithPreload)(()=>n.e("7821").then(n.bind(n,"87317"))),e_=(0,a.lazyWithPreload)(()=>n.e("9775").then(n.bind(n,"68111"))),eN=(0,a.lazyWithPreload)(()=>n.e("923").then(n.bind(n,"6144"))),eA=(0,a.lazyWithPreload)(()=>n.e("9707").then(n.bind(n,"12992"))),eT=(0,a.lazyWithPreload)(()=>n.e("3918").then(n.bind(n,"83056"))),eL=(0,a.lazyWithPreload)(()=>n.e("4288").then(n.bind(n,"68143"))),eO=(0,a.lazyWithPreload)(()=>n.e("7127").then(n.bind(n,"46867"))),eM=(0,a.lazyWithPreload)(()=>n.e("6241").then(n.bind(n,"42833"))),eB=(0,a.lazyWithPreload)(()=>n.e("2425").then(n.bind(n,"95571"))),eR=(0,a.lazyWithPreload)(()=>n.e("4549").then(n.bind(n,"51297"))),eD=(0,a.lazyWithPreload)(()=>Promise.all([n.e("6212"),n.e("722")]).then(n.bind(n,"83272"))),eH=(0,a.lazyWithPreload)(()=>n.e("4280").then(n.bind(n,"38599"))),eF=(0,a.lazyWithPreload)(()=>Promise.all([n.e("6212"),n.e("7856")]).then(n.bind(n,"90929"))),e$=(0,a.lazyWithPreload)(()=>n.e("4187").then(n.bind(n,"28852"))),eW=(0,a.lazyWithPreload)(()=>n.e("585").then(n.bind(n,"11511"))),eK=(0,a.lazyWithPreload)(()=>n.e("3914").then(n.bind(n,"85487"))),eU=(0,a.lazyWithPreload)(()=>n.e("5484").then(n.bind(n,"88794"))),eq=(0,a.lazyWithPreload)(()=>n.e("811").then(n.bind(n,"34950"))),eV=(0,a.lazyWithPreload)(()=>n.e("8845").then(n.bind(n,"61582"))),eG=(0,a.lazyWithPreload)(()=>n.e("5699").then(n.bind(n,"96155"))),eZ=(0,a.lazyWithPreload)(()=>n.e("8276").then(n.bind(n,"29970"))),eY=(0,a.lazyWithPreload)(()=>n.e("6807").then(n.bind(n,"55535"))),eX=(0,a.lazyWithPreload)(()=>n.e("6654").then(n.bind(n,"30852"))),eQ=[{path:"/builder/en/api/builder-core",element:r().createElement(d),filePath:"en/api/builder-core.mdx",preload:async()=>(await d.preload(),n.e("296").then(n.bind(n,"47029"))),lang:"en",version:""},{path:"/builder/en/api/builder-instance",element:r().createElement(o),filePath:"en/api/builder-instance.mdx",preload:async()=>(await o.preload(),n.e("5068").then(n.bind(n,"80522"))),lang:"en",version:""},{path:"/builder/en/api/builder-types",element:r().createElement(l),filePath:"en/api/builder-types.mdx",preload:async()=>(await l.preload(),n.e("6344").then(n.bind(n,"32746"))),lang:"en",version:""},{path:"/builder/en/api/config-dev",element:r().createElement(s),filePath:"en/api/config-dev.mdx",preload:async()=>(await s.preload(),n.e("8021").then(n.bind(n,"62815"))),lang:"en",version:""},{path:"/builder/en/api/config-experiments",element:r().createElement(c),filePath:"en/api/config-experiments.mdx",preload:async()=>(await c.preload(),n.e("1022").then(n.bind(n,"87676"))),lang:"en",version:""},{path:"/builder/en/api/config-html",element:r().createElement(u),filePath:"en/api/config-html.mdx",preload:async()=>(await u.preload(),n.e("5069").then(n.bind(n,"73357"))),lang:"en",version:""},{path:"/builder/en/api/config-output",element:r().createElement(h),filePath:"en/api/config-output.mdx",preload:async()=>(await h.preload(),n.e("343").then(n.bind(n,"42551"))),lang:"en",version:""},{path:"/builder/en/api/config-performance",element:r().createElement(p),filePath:"en/api/config-performance.mdx",preload:async()=>(await p.preload(),n.e("9071").then(n.bind(n,"21928"))),lang:"en",version:""},{path:"/builder/en/api/config-security",element:r().createElement(x),filePath:"en/api/config-security.mdx",preload:async()=>(await x.preload(),n.e("3681").then(n.bind(n,"19248"))),lang:"en",version:""},{path:"/builder/en/api/config-source",element:r().createElement(f),filePath:"en/api/config-source.mdx",preload:async()=>(await f.preload(),n.e("1232").then(n.bind(n,"22533"))),lang:"en",version:""},{path:"/builder/en/api/config-tools",element:r().createElement(m),filePath:"en/api/config-tools.mdx",preload:async()=>(await m.preload(),n.e("6422").then(n.bind(n,"46241"))),lang:"en",version:""},{path:"/builder/en/api/",element:r().createElement(g),filePath:"en/api/index.mdx",preload:async()=>(await g.preload(),n.e("3837").then(n.bind(n,"47556"))),lang:"en",version:""},{path:"/builder/en/api/plugin-core",element:r().createElement(b),filePath:"en/api/plugin-core.mdx",preload:async()=>(await b.preload(),n.e("6782").then(n.bind(n,"11842"))),lang:"en",version:""},{path:"/builder/en/api/plugin-hooks",element:r().createElement(v),filePath:"en/api/plugin-hooks.mdx",preload:async()=>(await v.preload(),n.e("1047").then(n.bind(n,"97643"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/browser-compatibility",element:r().createElement(y),filePath:"en/guide/advanced/browser-compatibility.md",preload:async()=>(await y.preload(),n.e("5450").then(n.bind(n,"74294"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/browserslist",element:r().createElement(I),filePath:"en/guide/advanced/browserslist.md",preload:async()=>(await I.preload(),n.e("5859").then(n.bind(n,"77908"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/custom-webpack-config",element:r().createElement(k),filePath:"en/guide/advanced/custom-webpack-config.md",preload:async()=>(await k.preload(),n.e("2456").then(n.bind(n,"89322"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/define",element:r().createElement(w),filePath:"en/guide/advanced/define.md",preload:async()=>(await w.preload(),n.e("9013").then(n.bind(n,"99775"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/hmr",element:r().createElement(j),filePath:"en/guide/advanced/hmr.md",preload:async()=>(await j.preload(),n.e("4838").then(n.bind(n,"19142"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/rem",element:r().createElement(P),filePath:"en/guide/advanced/rem.md",preload:async()=>(await P.preload(),n.e("9750").then(n.bind(n,"20526"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/rspack-start",element:r().createElement(S),filePath:"en/guide/advanced/rspack-start.mdx",preload:async()=>(await S.preload(),n.e("1352").then(n.bind(n,"57161"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/storybook",element:r().createElement(C),filePath:"en/guide/advanced/storybook.mdx",preload:async()=>(await C.preload(),n.e("2982").then(n.bind(n,"89066"))),lang:"en",version:""},{path:"/builder/en/guide/basic/build-target",element:r().createElement(z),filePath:"en/guide/basic/build-target.md",preload:async()=>(await z.preload(),n.e("8142").then(n.bind(n,"42095"))),lang:"en",version:""},{path:"/builder/en/guide/basic/builder-cli",element:r().createElement(E),filePath:"en/guide/basic/builder-cli.mdx",preload:async()=>(await E.preload(),n.e("9152").then(n.bind(n,"8065"))),lang:"en",version:""},{path:"/builder/en/guide/basic/builder-config",element:r().createElement(_),filePath:"en/guide/basic/builder-config.mdx",preload:async()=>(await _.preload(),n.e("3555").then(n.bind(n,"49791"))),lang:"en",version:""},{path:"/builder/en/guide/basic/css-usage",element:r().createElement(N),filePath:"en/guide/basic/css-usage.md",preload:async()=>(await N.preload(),n.e("9975").then(n.bind(n,"53146"))),lang:"en",version:""},{path:"/builder/en/guide/basic/html-template",element:r().createElement(A),filePath:"en/guide/basic/html-template.md",preload:async()=>(await A.preload(),n.e("7850").then(n.bind(n,"46361"))),lang:"en",version:""},{path:"/builder/en/guide/basic/typescript",element:r().createElement(T),filePath:"en/guide/basic/typescript.md",preload:async()=>(await T.preload(),n.e("3166").then(n.bind(n,"92284"))),lang:"en",version:""},{path:"/builder/en/guide/debug/debug-mode",element:r().createElement(L),filePath:"en/guide/debug/debug-mode.md",preload:async()=>(await L.preload(),n.e("2305").then(n.bind(n,"69597"))),lang:"en",version:""},{path:"/builder/en/guide/faq/exceptions",element:r().createElement(O),filePath:"en/guide/faq/exceptions.md",preload:async()=>(await O.preload(),n.e("4991").then(n.bind(n,"84804"))),lang:"en",version:""},{path:"/builder/en/guide/faq/features",element:r().createElement(M),filePath:"en/guide/faq/features.md",preload:async()=>(await M.preload(),n.e("2901").then(n.bind(n,"34718"))),lang:"en",version:""},{path:"/builder/en/guide/faq/general",element:r().createElement(B),filePath:"en/guide/faq/general.md",preload:async()=>(await B.preload(),n.e("9543").then(n.bind(n,"5091"))),lang:"en",version:""},{path:"/builder/en/guide/faq/hmr",element:r().createElement(R),filePath:"en/guide/faq/hmr.md",preload:async()=>(await R.preload(),n.e("6756").then(n.bind(n,"16839"))),lang:"en",version:""},{path:"/builder/en/guide/features",element:r().createElement(D),filePath:"en/guide/features.mdx",preload:async()=>(await D.preload(),n.e("6269").then(n.bind(n,"47631"))),lang:"en",version:""},{path:"/builder/en/guide/framework/vue2",element:r().createElement(H),filePath:"en/guide/framework/vue2.mdx",preload:async()=>(await H.preload(),n.e("3758").then(n.bind(n,"81820"))),lang:"en",version:""},{path:"/builder/en/guide/framework/vue3",element:r().createElement(F),filePath:"en/guide/framework/vue3.mdx",preload:async()=>(await F.preload(),n.e("8407").then(n.bind(n,"68222"))),lang:"en",version:""},{path:"/builder/en/guide/glossary",element:r().createElement($),filePath:"en/guide/glossary.mdx",preload:async()=>(await $.preload(),n.e("7204").then(n.bind(n,"7765"))),lang:"en",version:""},{path:"/builder/en/guide/introduction",element:r().createElement(W),filePath:"en/guide/introduction.mdx",preload:async()=>(await W.preload(),Promise.all([n.e("6212"),n.e("7724")]).then(n.bind(n,"68958"))),lang:"en",version:""},{path:"/builder/en/guide/optimization/split-chunk",element:r().createElement(K),filePath:"en/guide/optimization/split-chunk.md",preload:async()=>(await K.preload(),n.e("9443").then(n.bind(n,"37968"))),lang:"en",version:""},{path:"/builder/en/guide/quick-start",element:r().createElement(U),filePath:"en/guide/quick-start.mdx",preload:async()=>(await U.preload(),Promise.all([n.e("6212"),n.e("6379")]).then(n.bind(n,"8634"))),lang:"en",version:""},{path:"/builder/en/",element:r().createElement(q),filePath:"en/index.md",preload:async()=>(await q.preload(),n.e("7505").then(n.bind(n,"54942"))),lang:"en",version:""},{path:"/builder/en/plugins/introduction",element:r().createElement(V),filePath:"en/plugins/introduction.md",preload:async()=>(await V.preload(),n.e("6940").then(n.bind(n,"96695"))),lang:"en",version:""},{path:"/builder/en/plugins/list",element:r().createElement(G),filePath:"en/plugins/list.md",preload:async()=>(await G.preload(),n.e("873").then(n.bind(n,"76214"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-esbuild",element:r().createElement(Z),filePath:"en/plugins/plugin-esbuild.mdx",preload:async()=>(await Z.preload(),n.e("1003").then(n.bind(n,"96331"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-image-compress",element:r().createElement(Y),filePath:"en/plugins/plugin-image-compress.mdx",preload:async()=>(await Y.preload(),n.e("9462").then(n.bind(n,"57232"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-node-polyfill",element:r().createElement(X),filePath:"en/plugins/plugin-node-polyfill.mdx",preload:async()=>(await X.preload(),n.e("3522").then(n.bind(n,"8954"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-stylus",element:r().createElement(Q),filePath:"en/plugins/plugin-stylus.mdx",preload:async()=>(await Q.preload(),n.e("4580").then(n.bind(n,"95146"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-swc",element:r().createElement(J),filePath:"en/plugins/plugin-swc.mdx",preload:async()=>(await J.preload(),n.e("5072").then(n.bind(n,"18984"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-vue",element:r().createElement(ee),filePath:"en/plugins/plugin-vue.mdx",preload:async()=>(await ee.preload(),n.e("4981").then(n.bind(n,"13588"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-vue2",element:r().createElement(et),filePath:"en/plugins/plugin-vue2.mdx",preload:async()=>(await et.preload(),n.e("6062").then(n.bind(n,"75104"))),lang:"en",version:""},{path:"/builder/api/builder-core",element:r().createElement(en),filePath:"zh/api/builder-core.mdx",preload:async()=>(await en.preload(),n.e("2520").then(n.bind(n,"78425"))),lang:"zh",version:""},{path:"/builder/api/builder-instance",element:r().createElement(ei),filePath:"zh/api/builder-instance.mdx",preload:async()=>(await ei.preload(),n.e("5444").then(n.bind(n,"9070"))),lang:"zh",version:""},{path:"/builder/api/builder-types",element:r().createElement(er),filePath:"zh/api/builder-types.mdx",preload:async()=>(await er.preload(),n.e("6018").then(n.bind(n,"46929"))),lang:"zh",version:""},{path:"/builder/api/config-dev",element:r().createElement(ea),filePath:"zh/api/config-dev.mdx",preload:async()=>(await ea.preload(),n.e("12").then(n.bind(n,"92989"))),lang:"zh",version:""},{path:"/builder/api/config-experiments",element:r().createElement(ed),filePath:"zh/api/config-experiments.mdx",preload:async()=>(await ed.preload(),n.e("1285").then(n.bind(n,"28304"))),lang:"zh",version:""},{path:"/builder/api/config-html",element:r().createElement(eo),filePath:"zh/api/config-html.mdx",preload:async()=>(await eo.preload(),n.e("5789").then(n.bind(n,"89772"))),lang:"zh",version:""},{path:"/builder/api/config-output",element:r().createElement(el),filePath:"zh/api/config-output.mdx",preload:async()=>(await el.preload(),n.e("9882").then(n.bind(n,"28108"))),lang:"zh",version:""},{path:"/builder/api/config-performance",element:r().createElement(es),filePath:"zh/api/config-performance.mdx",preload:async()=>(await es.preload(),n.e("8867").then(n.bind(n,"83083"))),lang:"zh",version:""},{path:"/builder/api/config-security",element:r().createElement(ec),filePath:"zh/api/config-security.mdx",preload:async()=>(await ec.preload(),n.e("4273").then(n.bind(n,"18400"))),lang:"zh",version:""},{path:"/builder/api/config-source",element:r().createElement(eu),filePath:"zh/api/config-source.mdx",preload:async()=>(await eu.preload(),n.e("4271").then(n.bind(n,"16635"))),lang:"zh",version:""},{path:"/builder/api/config-tools",element:r().createElement(eh),filePath:"zh/api/config-tools.mdx",preload:async()=>(await eh.preload(),n.e("308").then(n.bind(n,"68638"))),lang:"zh",version:""},{path:"/builder/api/",element:r().createElement(ep),filePath:"zh/api/index.mdx",preload:async()=>(await ep.preload(),n.e("2009").then(n.bind(n,"90167"))),lang:"zh",version:""},{path:"/builder/api/plugin-core",element:r().createElement(ex),filePath:"zh/api/plugin-core.mdx",preload:async()=>(await ex.preload(),n.e("198").then(n.bind(n,"4302"))),lang:"zh",version:""},{path:"/builder/api/plugin-hooks",element:r().createElement(ef),filePath:"zh/api/plugin-hooks.mdx",preload:async()=>(await ef.preload(),n.e("6069").then(n.bind(n,"26036"))),lang:"zh",version:""},{path:"/builder/guide/advanced/browser-compatibility",element:r().createElement(em),filePath:"zh/guide/advanced/browser-compatibility.md",preload:async()=>(await em.preload(),n.e("9812").then(n.bind(n,"13707"))),lang:"zh",version:""},{path:"/builder/guide/advanced/browserslist",element:r().createElement(eg),filePath:"zh/guide/advanced/browserslist.md",preload:async()=>(await eg.preload(),n.e("8187").then(n.bind(n,"95265"))),lang:"zh",version:""},{path:"/builder/guide/advanced/custom-webpack-config",element:r().createElement(eb),filePath:"zh/guide/advanced/custom-webpack-config.md",preload:async()=>(await eb.preload(),n.e("2200").then(n.bind(n,"48746"))),lang:"zh",version:""},{path:"/builder/guide/advanced/define",element:r().createElement(ev),filePath:"zh/guide/advanced/define.md",preload:async()=>(await ev.preload(),n.e("1363").then(n.bind(n,"65629"))),lang:"zh",version:""},{path:"/builder/guide/advanced/hmr",element:r().createElement(ey),filePath:"zh/guide/advanced/hmr.md",preload:async()=>(await ey.preload(),n.e("5391").then(n.bind(n,"51649"))),lang:"zh",version:""},{path:"/builder/guide/advanced/rem",element:r().createElement(eI),filePath:"zh/guide/advanced/rem.md",preload:async()=>(await eI.preload(),n.e("2855").then(n.bind(n,"10314"))),lang:"zh",version:""},{path:"/builder/guide/advanced/rspack-start",element:r().createElement(ek),filePath:"zh/guide/advanced/rspack-start.mdx",preload:async()=>(await ek.preload(),n.e("7697").then(n.bind(n,"20057"))),lang:"zh",version:""},{path:"/builder/guide/advanced/storybook",element:r().createElement(ew),filePath:"zh/guide/advanced/storybook.mdx",preload:async()=>(await ew.preload(),n.e("1282").then(n.bind(n,"80437"))),lang:"zh",version:""},{path:"/builder/guide/basic/build-target",element:r().createElement(ej),filePath:"zh/guide/basic/build-target.md",preload:async()=>(await ej.preload(),n.e("8886").then(n.bind(n,"77891"))),lang:"zh",version:""},{path:"/builder/guide/basic/builder-cli",element:r().createElement(eP),filePath:"zh/guide/basic/builder-cli.mdx",preload:async()=>(await eP.preload(),n.e("2868").then(n.bind(n,"56381"))),lang:"zh",version:""},{path:"/builder/guide/basic/builder-config",element:r().createElement(eS),filePath:"zh/guide/basic/builder-config.mdx",preload:async()=>(await eS.preload(),n.e("9475").then(n.bind(n,"1291"))),lang:"zh",version:""},{path:"/builder/guide/basic/css-usage",element:r().createElement(eC),filePath:"zh/guide/basic/css-usage.md",preload:async()=>(await eC.preload(),n.e("2505").then(n.bind(n,"75894"))),lang:"zh",version:""},{path:"/builder/guide/basic/html-template",element:r().createElement(ez),filePath:"zh/guide/basic/html-template.md",preload:async()=>(await ez.preload(),n.e("2695").then(n.bind(n,"62018"))),lang:"zh",version:""},{path:"/builder/guide/basic/typescript",element:r().createElement(eE),filePath:"zh/guide/basic/typescript.md",preload:async()=>(await eE.preload(),n.e("7821").then(n.bind(n,"87317"))),lang:"zh",version:""},{path:"/builder/guide/debug/debug-mode",element:r().createElement(e_),filePath:"zh/guide/debug/debug-mode.md",preload:async()=>(await e_.preload(),n.e("9775").then(n.bind(n,"68111"))),lang:"zh",version:""},{path:"/builder/guide/faq/exceptions",element:r().createElement(eN),filePath:"zh/guide/faq/exceptions.md",preload:async()=>(await eN.preload(),n.e("923").then(n.bind(n,"6144"))),lang:"zh",version:""},{path:"/builder/guide/faq/features",element:r().createElement(eA),filePath:"zh/guide/faq/features.md",preload:async()=>(await eA.preload(),n.e("9707").then(n.bind(n,"12992"))),lang:"zh",version:""},{path:"/builder/guide/faq/general",element:r().createElement(eT),filePath:"zh/guide/faq/general.md",preload:async()=>(await eT.preload(),n.e("3918").then(n.bind(n,"83056"))),lang:"zh",version:""},{path:"/builder/guide/faq/hmr",element:r().createElement(eL),filePath:"zh/guide/faq/hmr.md",preload:async()=>(await eL.preload(),n.e("4288").then(n.bind(n,"68143"))),lang:"zh",version:""},{path:"/builder/guide/features",element:r().createElement(eO),filePath:"zh/guide/features.mdx",preload:async()=>(await eO.preload(),n.e("7127").then(n.bind(n,"46867"))),lang:"zh",version:""},{path:"/builder/guide/framework/vue2",element:r().createElement(eM),filePath:"zh/guide/framework/vue2.mdx",preload:async()=>(await eM.preload(),n.e("6241").then(n.bind(n,"42833"))),lang:"zh",version:""},{path:"/builder/guide/framework/vue3",element:r().createElement(eB),filePath:"zh/guide/framework/vue3.mdx",preload:async()=>(await eB.preload(),n.e("2425").then(n.bind(n,"95571"))),lang:"zh",version:""},{path:"/builder/guide/glossary",element:r().createElement(eR),filePath:"zh/guide/glossary.mdx",preload:async()=>(await eR.preload(),n.e("4549").then(n.bind(n,"51297"))),lang:"zh",version:""},{path:"/builder/guide/introduction",element:r().createElement(eD),filePath:"zh/guide/introduction.mdx",preload:async()=>(await eD.preload(),Promise.all([n.e("6212"),n.e("722")]).then(n.bind(n,"83272"))),lang:"zh",version:""},{path:"/builder/guide/optimization/split-chunk",element:r().createElement(eH),filePath:"zh/guide/optimization/split-chunk.md",preload:async()=>(await eH.preload(),n.e("4280").then(n.bind(n,"38599"))),lang:"zh",version:""},{path:"/builder/guide/quick-start",element:r().createElement(eF),filePath:"zh/guide/quick-start.mdx",preload:async()=>(await eF.preload(),Promise.all([n.e("6212"),n.e("7856")]).then(n.bind(n,"90929"))),lang:"zh",version:""},{path:"/builder/",element:r().createElement(e$),filePath:"zh/index.md",preload:async()=>(await e$.preload(),n.e("4187").then(n.bind(n,"28852"))),lang:"zh",version:""},{path:"/builder/plugins/introduction",element:r().createElement(eW),filePath:"zh/plugins/introduction.md",preload:async()=>(await eW.preload(),n.e("585").then(n.bind(n,"11511"))),lang:"zh",version:""},{path:"/builder/plugins/list",element:r().createElement(eK),filePath:"zh/plugins/list.md",preload:async()=>(await eK.preload(),n.e("3914").then(n.bind(n,"85487"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-esbuild",element:r().createElement(eU),filePath:"zh/plugins/plugin-esbuild.mdx",preload:async()=>(await eU.preload(),n.e("5484").then(n.bind(n,"88794"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-image-compress",element:r().createElement(eq),filePath:"zh/plugins/plugin-image-compress.mdx",preload:async()=>(await eq.preload(),n.e("811").then(n.bind(n,"34950"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-node-polyfill",element:r().createElement(eV),filePath:"zh/plugins/plugin-node-polyfill.mdx",preload:async()=>(await eV.preload(),n.e("8845").then(n.bind(n,"61582"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-stylus",element:r().createElement(eG),filePath:"zh/plugins/plugin-stylus.mdx",preload:async()=>(await eG.preload(),n.e("5699").then(n.bind(n,"96155"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-swc",element:r().createElement(eZ),filePath:"zh/plugins/plugin-swc.mdx",preload:async()=>(await eZ.preload(),n.e("8276").then(n.bind(n,"29970"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-vue",element:r().createElement(eY),filePath:"zh/plugins/plugin-vue.mdx",preload:async()=>(await eY.preload(),n.e("6807").then(n.bind(n,"55535"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-vue2",element:r().createElement(eX),filePath:"zh/plugins/plugin-vue2.mdx",preload:async()=>(await eX.preload(),n.e("6654").then(n.bind(n,"30852"))),lang:"zh",version:""}]},51801:function(e,t,n){"use strict";n.r(t),n.d(t,{onSearch:function(){return i}});let i=()=>{}},25756:function(e,t,n){"use strict";n.r(t),t.default={en:"32679cc3",zh:"7fdfa4c7"}},13328:function(e,t,n){"use strict";n.r(t),t.default={title:"Modern.js Builder",description:"",icon:"https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/logo-1x-0104.png",route:{exclude:["**/zh/config/**","**/en/config/**","**/zh/shared/**","**/en/shared/**"]},themeConfig:{footer:{message:"Copyright \xa9 2023 ByteDance."},socialLinks:[{icon:"github",mode:"link",content:"https://github.com/web-infra-dev/modern.js/tree/main/packages/builder"}],locales:[{lang:"zh",label:"\u7B80\u4F53\u4E2D\u6587",nav:[{text:"\u6307\u5357",link:"/guide/introduction",activeMatch:"/guide/"},{text:"API",link:"/api/",activeMatch:"/api/"},{text:"\u63D2\u4EF6",link:"/plugins/introduction",activeMatch:"/plugins/"}],sidebar:{"/guide/":[{collapsed:!1,collapsible:!1,text:"\u5F00\u59CB",items:[{text:"\u4ECB\u7ECD",link:"/guide/introduction",_fileKey:"zh/guide/introduction"},{text:"\u5FEB\u901F\u4E0A\u624B",link:"/guide/quick-start",_fileKey:"zh/guide/quick-start"},{text:"\u540D\u8BCD\u89E3\u91CA",link:"/guide/glossary",_fileKey:"zh/guide/glossary"},{text:"\u529F\u80FD\u5BFC\u822A",link:"/guide/features",_fileKey:"zh/guide/features"}],link:""},{collapsible:!1,text:"\u57FA\u7840",items:[{text:"Builder \u914D\u7F6E\u9879",link:"/guide/basic/builder-config",_fileKey:"zh/guide/basic/builder-config"},{text:"\u6784\u5EFA\u4EA7\u7269\u7C7B\u578B",link:"/guide/basic/build-target",_fileKey:"zh/guide/basic/build-target"},{text:"\u5F15\u7528\u6837\u5F0F\u8D44\u6E90",link:"/guide/basic/css-usage",_fileKey:"zh/guide/basic/css-usage"},{text:"\u914D\u7F6E HTML \u6A21\u677F",link:"/guide/basic/html-template",_fileKey:"zh/guide/basic/html-template"},{text:"\u4F7F\u7528 TypeScript",link:"/guide/basic/typescript",_fileKey:"zh/guide/basic/typescript"},{text:"\u4F7F\u7528 Builder CLI",link:"/guide/basic/builder-cli",_fileKey:"zh/guide/basic/builder-cli"}],link:"",collapsed:!1},{collapsible:!1,text:"\u8FDB\u9636",items:[{text:"\u4F7F\u7528 Rspack",link:"/guide/advanced/rspack-start",_fileKey:"zh/guide/advanced/rspack-start"},{text:"\u73AF\u5883\u53D8\u91CF",link:"/guide/advanced/define",_fileKey:"zh/guide/advanced/define"},{text:"\u6A21\u5757\u70ED\u66F4\u65B0",link:"/guide/advanced/hmr",_fileKey:"zh/guide/advanced/hmr"},{text:"\u5F00\u542F REM \u9002\u914D",link:"/guide/advanced/rem",_fileKey:"zh/guide/advanced/rem"},{text:"\u8BBE\u7F6E\u6D4F\u89C8\u5668\u8303\u56F4",link:"/guide/advanced/browserslist",_fileKey:"zh/guide/advanced/browserslist"},{text:"\u6D4F\u89C8\u5668\u517C\u5BB9\u6027",link:"/guide/advanced/browser-compatibility",_fileKey:"zh/guide/advanced/browser-compatibility"},{text:"\u4FEE\u6539 webpack \u914D\u7F6E",link:"/guide/advanced/custom-webpack-config",_fileKey:"zh/guide/advanced/custom-webpack-config"},{text:"\u4F7F\u7528 Storybook",link:"/guide/advanced/storybook",_fileKey:"zh/guide/advanced/storybook"}],link:"",collapsed:!1},{collapsible:!1,text:"\u6846\u67B6",items:[{text:"\u6784\u5EFA Vue 3 \u5E94\u7528",link:"/guide/framework/vue3",_fileKey:"zh/guide/framework/vue3"},{text:"\u6784\u5EFA Vue 2 \u5E94\u7528",link:"/guide/framework/vue2",_fileKey:"zh/guide/framework/vue2"}],link:"",collapsed:!1},{collapsible:!1,text:"\u4F18\u5316",items:[{text:"\u62C6\u5305\u6700\u4F73\u5B9E\u8DF5",link:"/guide/optimization/split-chunk",_fileKey:"zh/guide/optimization/split-chunk"}],link:"",collapsed:!1},{collapsible:!1,text:"\u8C03\u8BD5",items:[{text:"\u5F00\u542F\u8C03\u8BD5\u6A21\u5F0F",link:"/guide/debug/debug-mode",_fileKey:"zh/guide/debug/debug-mode"}],link:"",collapsed:!1},{collapsible:!1,text:"\u5E38\u89C1\u95EE\u9898",items:[{text:"\u901A\u7528\u7C7B\u95EE\u9898",link:"/guide/faq/general",_fileKey:"zh/guide/faq/general"},{text:"\u529F\u80FD\u7C7B\u95EE\u9898",link:"/guide/faq/features",_fileKey:"zh/guide/faq/features"},{text:"\u5F02\u5E38\u7C7B\u95EE\u9898",link:"/guide/faq/exceptions",_fileKey:"zh/guide/faq/exceptions"},{text:"\u70ED\u66F4\u65B0\u95EE\u9898",link:"/guide/faq/hmr",_fileKey:"zh/guide/faq/hmr"}],link:"",collapsed:!1}],"/api/":[{text:"API \u603B\u89C8",link:"/api/"},{text:"\u914D\u7F6E",collapsible:!1,items:[{text:"Source Config",link:"/api/config-source",_fileKey:"zh/api/config-source"},{text:"Html Config",link:"/api/config-html",_fileKey:"zh/api/config-html"},{text:"Security Config",link:"/api/config-security",_fileKey:"zh/api/config-security"},{text:"Dev Config",link:"/api/config-dev",_fileKey:"zh/api/config-dev"},{text:"Output Config",link:"/api/config-output",_fileKey:"zh/api/config-output"},{text:"Tools Config",link:"/api/config-tools",_fileKey:"zh/api/config-tools"},{text:"Performance Config",link:"/api/config-performance",_fileKey:"zh/api/config-performance"},{text:"Experiments Config",link:"/api/config-experiments",_fileKey:"zh/api/config-experiments"}],link:"",collapsed:!1},{text:"Node API",collapsible:!1,items:[{text:"Builder Core",link:"/api/builder-core",_fileKey:"zh/api/builder-core"},{text:"Builder Instance",link:"/api/builder-instance",_fileKey:"zh/api/builder-instance"},{text:"Builder Types",link:"/api/builder-types",_fileKey:"zh/api/builder-types"}],link:"",collapsed:!1},{text:"Plugin API",collapsible:!1,items:[{text:"Plugin Core",link:"/api/plugin-core",_fileKey:"zh/api/plugin-core"},{text:"Plugin Hooks",link:"/api/plugin-hooks",_fileKey:"zh/api/plugin-hooks"}],link:"",collapsed:!1}],"/plugins":[{collapsible:!1,text:"\u6307\u5357",items:[{text:"\u63D2\u4EF6\u7CFB\u7EDF",link:"/plugins/introduction",_fileKey:"zh/plugins/introduction"}],link:"",collapsed:!1},{collapsible:!1,text:"\u5217\u8868",items:[{text:"\u603B\u89C8",link:"/plugins/list",_fileKey:"zh/plugins/list"},{text:"Vue \u63D2\u4EF6",link:"/plugins/plugin-vue",_fileKey:"zh/plugins/plugin-vue"},{text:"Vue 2 \u63D2\u4EF6",link:"/plugins/plugin-vue2",_fileKey:"zh/plugins/plugin-vue2"},{text:"SWC \u63D2\u4EF6",link:"/plugins/plugin-swc",_fileKey:"zh/plugins/plugin-swc"},{text:"Stylus \u63D2\u4EF6",link:"/plugins/plugin-stylus",_fileKey:"zh/plugins/plugin-stylus"},{text:"Esbuild \u63D2\u4EF6",link:"/plugins/plugin-esbuild",_fileKey:"zh/plugins/plugin-esbuild"},{text:"Node Polyfill \u63D2\u4EF6",link:"/plugins/plugin-node-polyfill",_fileKey:"zh/plugins/plugin-node-polyfill"},{text:"Image Compress \u63D2\u4EF6",link:"/plugins/plugin-image-compress",_fileKey:"zh/plugins/plugin-image-compress"}],link:"",collapsed:!1}]},title:"Modern.js Builder",outlineTitle:"\u76EE\u5F55",prevPageText:"\u4E0A\u4E00\u9875",nextPageText:"\u4E0B\u4E00\u9875",description:"\u57FA\u4E8E Rspack \u7684 Web \u6784\u5EFA\u5DE5\u5177"},{lang:"en",label:"English",nav:[{text:"Guide",link:"/en/guide/introduction",activeMatch:"/guide/"},{text:"API",link:"/en/api/",activeMatch:"/api/"},{text:"Plugins",link:"/en/plugins/introduction",activeMatch:"/plugins/"}],sidebar:{"/en/guide/":[{collapsed:!1,collapsible:!1,text:"Getting Started",items:[{text:"Introduction",link:"/en/guide/introduction",_fileKey:"en/guide/introduction"},{text:"Quick Start",link:"/en/guide/quick-start",_fileKey:"en/guide/quick-start"},{text:"Glossary",link:"/en/guide/glossary",_fileKey:"en/guide/glossary"},{text:"All Features",link:"/en/guide/features",_fileKey:"en/guide/features"}],link:""},{collapsible:!1,text:"Basic",items:[{text:"Builder Config",link:"/en/guide/basic/builder-config",_fileKey:"en/guide/basic/builder-config"},{text:"Build Target",link:"/en/guide/basic/build-target",_fileKey:"en/guide/basic/build-target"},{text:"CSS Usage",link:"/en/guide/basic/css-usage",_fileKey:"en/guide/basic/css-usage"},{text:"HTML Template",link:"/en/guide/basic/html-template",_fileKey:"en/guide/basic/html-template"},{text:"Use TypeScript",link:"/en/guide/basic/typescript",_fileKey:"en/guide/basic/typescript"},{text:"Use Builder CLI",link:"/en/guide/basic/builder-cli",_fileKey:"en/guide/basic/builder-cli"}],link:"",collapsed:!1},{collapsible:!1,text:"Advanced",items:[{text:"Using Rspack",link:"/en/guide/advanced/rspack-start",_fileKey:"en/guide/advanced/rspack-start"},{text:"Environment Variables",link:"/en/guide/advanced/define",_fileKey:"en/guide/advanced/define"},{text:"Hot Module Replacement",link:"/en/guide/advanced/hmr",_fileKey:"en/guide/advanced/hmr"},{text:"REM adaptation",link:"/en/guide/advanced/rem",_fileKey:"en/guide/advanced/rem"},{text:"Browserslist",link:"/en/guide/advanced/browserslist",_fileKey:"en/guide/advanced/browserslist"},{text:"Browser Compatibility",link:"/en/guide/advanced/browser-compatibility",_fileKey:"en/guide/advanced/browser-compatibility"},{text:"Custom webpack config",link:"/en/guide/advanced/custom-webpack-config",_fileKey:"en/guide/advanced/custom-webpack-config"},{text:"Using Storybook",link:"/en/guide/advanced/storybook",_fileKey:"en/guide/advanced/storybook"}],link:"",collapsed:!1},{collapsible:!1,text:"Framework",items:[{text:"Build Vue 3 App",link:"/en/guide/framework/vue3",_fileKey:"en/guide/framework/vue3"},{text:"Build Vue 2 App",link:"/en/guide/framework/vue2",_fileKey:"en/guide/framework/vue2"}],link:"",collapsed:!1},{collapsible:!1,text:"Optimization",items:[{text:"Chunk Splitting Practice",link:"/en/guide/optimization/split-chunk",_fileKey:"en/guide/optimization/split-chunk"}],link:"",collapsed:!1},{collapsible:!1,text:"Debug",items:[{text:"Debug Mode",link:"/en/guide/debug/debug-mode",_fileKey:"en/guide/debug/debug-mode"}],link:"",collapsed:!1},{collapsible:!1,text:"FAQ",items:[{text:"General FAQ",link:"/en/guide/faq/general",_fileKey:"en/guide/faq/general"},{text:"Features FAQ",link:"/en/guide/faq/features",_fileKey:"en/guide/faq/features"},{text:"Exceptions FAQ",link:"/en/guide/faq/exceptions",_fileKey:"en/guide/faq/exceptions"},{text:"HMR FAQ",link:"/en/guide/faq/hmr",_fileKey:"en/guide/faq/hmr"}],link:"",collapsed:!1}],"/en/api/":[{text:"API Reference",link:"/en/api/"},{text:"Config",collapsible:!1,items:[{text:"Source Config",link:"/en/api/config-source",_fileKey:"en/api/config-source"},{text:"Html Config",link:"/en/api/config-html",_fileKey:"en/api/config-html"},{text:"Security Config",link:"/en/api/config-security",_fileKey:"en/api/config-security"},{text:"Dev Config",link:"/en/api/config-dev",_fileKey:"en/api/config-dev"},{text:"Output Config",link:"/en/api/config-output",_fileKey:"en/api/config-output"},{text:"Tools Config",link:"/en/api/config-tools",_fileKey:"en/api/config-tools"},{text:"Performance Config",link:"/en/api/config-performance",_fileKey:"en/api/config-performance"},{text:"Experiments Config",link:"/en/api/config-experiments",_fileKey:"en/api/config-experiments"}],link:"",collapsed:!1},{text:"Node API",collapsible:!1,items:[{text:"Builder Core",link:"/en/api/builder-core",_fileKey:"en/api/builder-core"},{text:"Builder Instance",link:"/en/api/builder-instance",_fileKey:"en/api/builder-instance"},{text:"Builder Types",link:"/en/api/builder-types",_fileKey:"en/api/builder-types"}],link:"",collapsed:!1},{text:"Plugin API",collapsible:!1,items:[{text:"Plugin Core",link:"/en/api/plugin-core",_fileKey:"en/api/plugin-core"},{text:"Plugin Hooks",link:"/en/api/plugin-hooks",_fileKey:"en/api/plugin-hooks"}],link:"",collapsed:!1}],"/en/plugins":[{collapsible:!1,text:"Guide",items:[{text:"Introduce to Plugin",link:"/en/plugins/introduction",_fileKey:"en/plugins/introduction"}],link:"",collapsed:!1},{collapsible:!1,text:"List",items:[{text:"Overview",link:"/en/plugins/list",_fileKey:"en/plugins/list"},{text:"Vue Plugin",link:"/en/plugins/plugin-vue",_fileKey:"en/plugins/plugin-vue"},{text:"Vue 2 Plugin",link:"/en/plugins/plugin-vue2",_fileKey:"en/plugins/plugin-vue2"},{text:"SWC Plugin",link:"/en/plugins/plugin-swc",_fileKey:"en/plugins/plugin-swc"},{text:"Stylus Plugin",link:"/en/plugins/plugin-stylus",_fileKey:"en/plugins/plugin-stylus"},{text:"Esbuild Plugin",link:"/en/plugins/plugin-esbuild",_fileKey:"en/plugins/plugin-esbuild"},{text:"Node Polyfill Plugin",link:"/en/plugins/plugin-node-polyfill",_fileKey:"en/plugins/plugin-node-polyfill"},{text:"Image Compress Plugin",link:"/en/plugins/plugin-image-compress",_fileKey:"en/plugins/plugin-image-compress"}],link:"",collapsed:!1}]},title:"Modern.js Builder",description:"An Rspack-based build tool for web development."}],editLink:{docRepoBaseUrl:"https://github.com/web-infra-dev/modern.js/tree/main/packages/document/builder-doc/docs",text:"Edit this page on GitHub"}},base:"/builder/",lang:"zh",locales:[{lang:"zh",label:"\u7B80\u4F53\u4E2D\u6587",nav:[{text:"\u6307\u5357",link:"/guide/introduction",activeMatch:"/guide/"},{text:"API",link:"/api/",activeMatch:"/api/"},{text:"\u63D2\u4EF6",link:"/plugins/introduction",activeMatch:"/plugins/"}],sidebar:{"/guide/":[{collapsed:!1,collapsible:!1,text:"\u5F00\u59CB",items:[{text:"\u4ECB\u7ECD",link:"/guide/introduction",_fileKey:"zh/guide/introduction"},{text:"\u5FEB\u901F\u4E0A\u624B",link:"/guide/quick-start",_fileKey:"zh/guide/quick-start"},{text:"\u540D\u8BCD\u89E3\u91CA",link:"/guide/glossary",_fileKey:"zh/guide/glossary"},{text:"\u529F\u80FD\u5BFC\u822A",link:"/guide/features",_fileKey:"zh/guide/features"}],link:""},{collapsible:!1,text:"\u57FA\u7840",items:[{text:"Builder \u914D\u7F6E\u9879",link:"/guide/basic/builder-config",_fileKey:"zh/guide/basic/builder-config"},{text:"\u6784\u5EFA\u4EA7\u7269\u7C7B\u578B",link:"/guide/basic/build-target",_fileKey:"zh/guide/basic/build-target"},{text:"\u5F15\u7528\u6837\u5F0F\u8D44\u6E90",link:"/guide/basic/css-usage",_fileKey:"zh/guide/basic/css-usage"},{text:"\u914D\u7F6E HTML \u6A21\u677F",link:"/guide/basic/html-template",_fileKey:"zh/guide/basic/html-template"},{text:"\u4F7F\u7528 TypeScript",link:"/guide/basic/typescript",_fileKey:"zh/guide/basic/typescript"},{text:"\u4F7F\u7528 Builder CLI",link:"/guide/basic/builder-cli",_fileKey:"zh/guide/basic/builder-cli"}],link:"",collapsed:!1},{collapsible:!1,text:"\u8FDB\u9636",items:[{text:"\u4F7F\u7528 Rspack",link:"/guide/advanced/rspack-start",_fileKey:"zh/guide/advanced/rspack-start"},{text:"\u73AF\u5883\u53D8\u91CF",link:"/guide/advanced/define",_fileKey:"zh/guide/advanced/define"},{text:"\u6A21\u5757\u70ED\u66F4\u65B0",link:"/guide/advanced/hmr",_fileKey:"zh/guide/advanced/hmr"},{text:"\u5F00\u542F REM \u9002\u914D",link:"/guide/advanced/rem",_fileKey:"zh/guide/advanced/rem"},{text:"\u8BBE\u7F6E\u6D4F\u89C8\u5668\u8303\u56F4",link:"/guide/advanced/browserslist",_fileKey:"zh/guide/advanced/browserslist"},{text:"\u6D4F\u89C8\u5668\u517C\u5BB9\u6027",link:"/guide/advanced/browser-compatibility",_fileKey:"zh/guide/advanced/browser-compatibility"},{text:"\u4FEE\u6539 webpack \u914D\u7F6E",link:"/guide/advanced/custom-webpack-config",_fileKey:"zh/guide/advanced/custom-webpack-config"},{text:"\u4F7F\u7528 Storybook",link:"/guide/advanced/storybook",_fileKey:"zh/guide/advanced/storybook"}],link:"",collapsed:!1},{collapsible:!1,text:"\u6846\u67B6",items:[{text:"\u6784\u5EFA Vue 3 \u5E94\u7528",link:"/guide/framework/vue3",_fileKey:"zh/guide/framework/vue3"},{text:"\u6784\u5EFA Vue 2 \u5E94\u7528",link:"/guide/framework/vue2",_fileKey:"zh/guide/framework/vue2"}],link:"",collapsed:!1},{collapsible:!1,text:"\u4F18\u5316",items:[{text:"\u62C6\u5305\u6700\u4F73\u5B9E\u8DF5",link:"/guide/optimization/split-chunk",_fileKey:"zh/guide/optimization/split-chunk"}],link:"",collapsed:!1},{collapsible:!1,text:"\u8C03\u8BD5",items:[{text:"\u5F00\u542F\u8C03\u8BD5\u6A21\u5F0F",link:"/guide/debug/debug-mode",_fileKey:"zh/guide/debug/debug-mode"}],link:"",collapsed:!1},{collapsible:!1,text:"\u5E38\u89C1\u95EE\u9898",items:[{text:"\u901A\u7528\u7C7B\u95EE\u9898",link:"/guide/faq/general",_fileKey:"zh/guide/faq/general"},{text:"\u529F\u80FD\u7C7B\u95EE\u9898",link:"/guide/faq/features",_fileKey:"zh/guide/faq/features"},{text:"\u5F02\u5E38\u7C7B\u95EE\u9898",link:"/guide/faq/exceptions",_fileKey:"zh/guide/faq/exceptions"},{text:"\u70ED\u66F4\u65B0\u95EE\u9898",link:"/guide/faq/hmr",_fileKey:"zh/guide/faq/hmr"}],link:"",collapsed:!1}],"/api/":[{text:"API \u603B\u89C8",link:"/api/"},{text:"\u914D\u7F6E",collapsible:!1,items:[{text:"Source Config",link:"/api/config-source",_fileKey:"zh/api/config-source"},{text:"Html Config",link:"/api/config-html",_fileKey:"zh/api/config-html"},{text:"Security Config",link:"/api/config-security",_fileKey:"zh/api/config-security"},{text:"Dev Config",link:"/api/config-dev",_fileKey:"zh/api/config-dev"},{text:"Output Config",link:"/api/config-output",_fileKey:"zh/api/config-output"},{text:"Tools Config",link:"/api/config-tools",_fileKey:"zh/api/config-tools"},{text:"Performance Config",link:"/api/config-performance",_fileKey:"zh/api/config-performance"},{text:"Experiments Config",link:"/api/config-experiments",_fileKey:"zh/api/config-experiments"}],link:"",collapsed:!1},{text:"Node API",collapsible:!1,items:[{text:"Builder Core",link:"/api/builder-core",_fileKey:"zh/api/builder-core"},{text:"Builder Instance",link:"/api/builder-instance",_fileKey:"zh/api/builder-instance"},{text:"Builder Types",link:"/api/builder-types",_fileKey:"zh/api/builder-types"}],link:"",collapsed:!1},{text:"Plugin API",collapsible:!1,items:[{text:"Plugin Core",link:"/api/plugin-core",_fileKey:"zh/api/plugin-core"},{text:"Plugin Hooks",link:"/api/plugin-hooks",_fileKey:"zh/api/plugin-hooks"}],link:"",collapsed:!1}],"/plugins":[{collapsible:!1,text:"\u6307\u5357",items:[{text:"\u63D2\u4EF6\u7CFB\u7EDF",link:"/plugins/introduction",_fileKey:"zh/plugins/introduction"}],link:"",collapsed:!1},{collapsible:!1,text:"\u5217\u8868",items:[{text:"\u603B\u89C8",link:"/plugins/list",_fileKey:"zh/plugins/list"},{text:"Vue \u63D2\u4EF6",link:"/plugins/plugin-vue",_fileKey:"zh/plugins/plugin-vue"},{text:"Vue 2 \u63D2\u4EF6",link:"/plugins/plugin-vue2",_fileKey:"zh/plugins/plugin-vue2"},{text:"SWC \u63D2\u4EF6",link:"/plugins/plugin-swc",_fileKey:"zh/plugins/plugin-swc"},{text:"Stylus \u63D2\u4EF6",link:"/plugins/plugin-stylus",_fileKey:"zh/plugins/plugin-stylus"},{text:"Esbuild \u63D2\u4EF6",link:"/plugins/plugin-esbuild",_fileKey:"zh/plugins/plugin-esbuild"},{text:"Node Polyfill \u63D2\u4EF6",link:"/plugins/plugin-node-polyfill",_fileKey:"zh/plugins/plugin-node-polyfill"},{text:"Image Compress \u63D2\u4EF6",link:"/plugins/plugin-image-compress",_fileKey:"zh/plugins/plugin-image-compress"}],link:"",collapsed:!1}]},title:"Modern.js Builder",outlineTitle:"\u76EE\u5F55",prevPageText:"\u4E0A\u4E00\u9875",nextPageText:"\u4E0B\u4E00\u9875",description:"\u57FA\u4E8E Rspack \u7684 Web \u6784\u5EFA\u5DE5\u5177"},{lang:"en",label:"English",nav:[{text:"Guide",link:"/en/guide/introduction",activeMatch:"/guide/"},{text:"API",link:"/en/api/",activeMatch:"/api/"},{text:"Plugins",link:"/en/plugins/introduction",activeMatch:"/plugins/"}],sidebar:{"/en/guide/":[{collapsed:!1,collapsible:!1,text:"Getting Started",items:[{text:"Introduction",link:"/en/guide/introduction",_fileKey:"en/guide/introduction"},{text:"Quick Start",link:"/en/guide/quick-start",_fileKey:"en/guide/quick-start"},{text:"Glossary",link:"/en/guide/glossary",_fileKey:"en/guide/glossary"},{text:"All Features",link:"/en/guide/features",_fileKey:"en/guide/features"}],link:""},{collapsible:!1,text:"Basic",items:[{text:"Builder Config",link:"/en/guide/basic/builder-config",_fileKey:"en/guide/basic/builder-config"},{text:"Build Target",link:"/en/guide/basic/build-target",_fileKey:"en/guide/basic/build-target"},{text:"CSS Usage",link:"/en/guide/basic/css-usage",_fileKey:"en/guide/basic/css-usage"},{text:"HTML Template",link:"/en/guide/basic/html-template",_fileKey:"en/guide/basic/html-template"},{text:"Use TypeScript",link:"/en/guide/basic/typescript",_fileKey:"en/guide/basic/typescript"},{text:"Use Builder CLI",link:"/en/guide/basic/builder-cli",_fileKey:"en/guide/basic/builder-cli"}],link:"",collapsed:!1},{collapsible:!1,text:"Advanced",items:[{text:"Using Rspack",link:"/en/guide/advanced/rspack-start",_fileKey:"en/guide/advanced/rspack-start"},{text:"Environment Variables",link:"/en/guide/advanced/define",_fileKey:"en/guide/advanced/define"},{text:"Hot Module Replacement",link:"/en/guide/advanced/hmr",_fileKey:"en/guide/advanced/hmr"},{text:"REM adaptation",link:"/en/guide/advanced/rem",_fileKey:"en/guide/advanced/rem"},{text:"Browserslist",link:"/en/guide/advanced/browserslist",_fileKey:"en/guide/advanced/browserslist"},{text:"Browser Compatibility",link:"/en/guide/advanced/browser-compatibility",_fileKey:"en/guide/advanced/browser-compatibility"},{text:"Custom webpack config",link:"/en/guide/advanced/custom-webpack-config",_fileKey:"en/guide/advanced/custom-webpack-config"},{text:"Using Storybook",link:"/en/guide/advanced/storybook",_fileKey:"en/guide/advanced/storybook"}],link:"",collapsed:!1},{collapsible:!1,text:"Framework",items:[{text:"Build Vue 3 App",link:"/en/guide/framework/vue3",_fileKey:"en/guide/framework/vue3"},{text:"Build Vue 2 App",link:"/en/guide/framework/vue2",_fileKey:"en/guide/framework/vue2"}],link:"",collapsed:!1},{collapsible:!1,text:"Optimization",items:[{text:"Chunk Splitting Practice",link:"/en/guide/optimization/split-chunk",_fileKey:"en/guide/optimization/split-chunk"}],link:"",collapsed:!1},{collapsible:!1,text:"Debug",items:[{text:"Debug Mode",link:"/en/guide/debug/debug-mode",_fileKey:"en/guide/debug/debug-mode"}],link:"",collapsed:!1},{collapsible:!1,text:"FAQ",items:[{text:"General FAQ",link:"/en/guide/faq/general",_fileKey:"en/guide/faq/general"},{text:"Features FAQ",link:"/en/guide/faq/features",_fileKey:"en/guide/faq/features"},{text:"Exceptions FAQ",link:"/en/guide/faq/exceptions",_fileKey:"en/guide/faq/exceptions"},{text:"HMR FAQ",link:"/en/guide/faq/hmr",_fileKey:"en/guide/faq/hmr"}],link:"",collapsed:!1}],"/en/api/":[{text:"API Reference",link:"/en/api/"},{text:"Config",collapsible:!1,items:[{text:"Source Config",link:"/en/api/config-source",_fileKey:"en/api/config-source"},{text:"Html Config",link:"/en/api/config-html",_fileKey:"en/api/config-html"},{text:"Security Config",link:"/en/api/config-security",_fileKey:"en/api/config-security"},{text:"Dev Config",link:"/en/api/config-dev",_fileKey:"en/api/config-dev"},{text:"Output Config",link:"/en/api/config-output",_fileKey:"en/api/config-output"},{text:"Tools Config",link:"/en/api/config-tools",_fileKey:"en/api/config-tools"},{text:"Performance Config",link:"/en/api/config-performance",_fileKey:"en/api/config-performance"},{text:"Experiments Config",link:"/en/api/config-experiments",_fileKey:"en/api/config-experiments"}],link:"",collapsed:!1},{text:"Node API",collapsible:!1,items:[{text:"Builder Core",link:"/en/api/builder-core",_fileKey:"en/api/builder-core"},{text:"Builder Instance",link:"/en/api/builder-instance",_fileKey:"en/api/builder-instance"},{text:"Builder Types",link:"/en/api/builder-types",_fileKey:"en/api/builder-types"}],link:"",collapsed:!1},{text:"Plugin API",collapsible:!1,items:[{text:"Plugin Core",link:"/en/api/plugin-core",_fileKey:"en/api/plugin-core"},{text:"Plugin Hooks",link:"/en/api/plugin-hooks",_fileKey:"en/api/plugin-hooks"}],link:"",collapsed:!1}],"/en/plugins":[{collapsible:!1,text:"Guide",items:[{text:"Introduce to Plugin",link:"/en/plugins/introduction",_fileKey:"en/plugins/introduction"}],link:"",collapsed:!1},{collapsible:!1,text:"List",items:[{text:"Overview",link:"/en/plugins/list",_fileKey:"en/plugins/list"},{text:"Vue Plugin",link:"/en/plugins/plugin-vue",_fileKey:"en/plugins/plugin-vue"},{text:"Vue 2 Plugin",link:"/en/plugins/plugin-vue2",_fileKey:"en/plugins/plugin-vue2"},{text:"SWC Plugin",link:"/en/plugins/plugin-swc",_fileKey:"en/plugins/plugin-swc"},{text:"Stylus Plugin",link:"/en/plugins/plugin-stylus",_fileKey:"en/plugins/plugin-stylus"},{text:"Esbuild Plugin",link:"/en/plugins/plugin-esbuild",_fileKey:"en/plugins/plugin-esbuild"},{text:"Node Polyfill Plugin",link:"/en/plugins/plugin-node-polyfill",_fileKey:"en/plugins/plugin-node-polyfill"},{text:"Image Compress Plugin",link:"/en/plugins/plugin-image-compress",_fileKey:"en/plugins/plugin-image-compress"}],link:"",collapsed:!1}]},title:"Modern.js Builder",description:"An Rspack-based build tool for web development."}],logo:"",ssg:!0,multiVersion:{default:"",versions:[]},search:{mode:"local"},pages:[{title:"Builder Core",routePath:"/builder/en/api/builder-core",lang:"en",toc:[{text:"createBuilder",id:"createbuilder",depth:2,charIndex:73},{text:"builderWebpackProvider",id:"builderwebpackprovider",depth:3,charIndex:331},{text:"builderRspackProvider",id:"builderrspackprovider",depth:3,charIndex:457},{text:"options",id:"options",depth:3,charIndex:580},{text:"mergeBuilderConfig",id:"mergebuilderconfig",depth:2,charIndex:1137},{text:"webpack",id:"webpack",depth:2,charIndex:1316},{text:"HtmlWebpackPlugin",id:"htmlwebpackplugin",depth:2,charIndex:1589}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/builder-core.mdx"},{title:"Builder Instance",routePath:"/builder/en/api/builder-instance",lang:"en",toc:[{text:"builder.context",id:"buildercontext",depth:2,charIndex:90},{text:"builder.context.entry",id:"buildercontextentry",depth:3,charIndex:182},{text:"builder.context.target",id:"buildercontexttarget",depth:3,charIndex:296},{text:"builder.context.rootPath",id:"buildercontextrootpath",depth:3,charIndex:413},{text:"builder.context.srcPath",id:"buildercontextsrcpath",depth:3,charIndex:542},{text:"builder.context.distPath",id:"buildercontextdistpath",depth:3,charIndex:621},{text:"builder.context.cachePath",id:"buildercontextcachepath",depth:3,charIndex:771},{text:"builder.context.configPath",id:"buildercontextconfigpath",depth:3,charIndex:856},{text:"builder.context.tsconfigPath",id:"buildercontexttsconfigpath",depth:3,charIndex:1010},{text:"builder.context.framework",id:"buildercontextframework",depth:3,charIndex:1173},{text:"builder.context.devServer",id:"buildercontextdevserver",depth:3,charIndex:1296},{text:"builder.context.bundlerType",id:"buildercontextbundlertype",depth:3,charIndex:1420},{text:"builder.build",id:"builderbuild",depth:2,charIndex:1498},{text:"Development environment build",id:"development-environment-build",depth:3,charIndex:1569},{text:"Monitor file changes",id:"monitor-file-changes",depth:3,charIndex:1695},{text:"Custom Compiler",id:"custom-compiler",depth:3,charIndex:1808},{text:"builder.startDevServer",id:"builderstartdevserver",depth:2,charIndex:1884},{text:"Disable Print URLs",id:"disable-print-urls",depth:3,charIndex:2260},{text:"Strict Port",id:"strict-port",depth:3,charIndex:2488},{text:"Custom Compiler",id:"custom-compiler-1",depth:3,charIndex:2705},{text:"Get Port Silently",id:"get-port-silently",depth:3,charIndex:2781},{text:"Custom Logger",id:"custom-logger",depth:3,charIndex:3083},{text:"builder.serve",id:"builderserve",depth:2,charIndex:3295},{text:"builder.createCompiler",id:"buildercreatecompiler",depth:2,charIndex:3619},{text:"builder.addPlugins",id:"builderaddplugins",depth:2,charIndex:3992},{text:"builder.removePlugins",id:"builderremoveplugins",depth:2,charIndex:4240},{text:"builder.isPluginExists",id:"builderispluginexists",depth:2,charIndex:4490},{text:"builder.inspectConfig",id:"builderinspectconfig",depth:2,charIndex:4591},{text:"builder.onBeforeCreateCompiler",id:"builderonbeforecreatecompiler",depth:2,charIndex:5091},{text:"builder.onAfterCreateCompiler",id:"builderonaftercreatecompiler",depth:2,charIndex:5634},{text:"builder.onBeforeBuild",id:"builderonbeforebuild",depth:2,charIndex:6168},{text:"builder.onAfterBuild",id:"builderonafterbuild",depth:2,charIndex:6716},{text:"builder.onBeforeStartDevServer",id:"builderonbeforestartdevserver",depth:2,charIndex:7059},{text:"builder.onAfterStartDevServer",id:"builderonafterstartdevserver",depth:2,charIndex:7166},{text:"builder.onDevCompileDone",id:"builderondevcompiledone",depth:2,charIndex:7327},{text:"builder.onExit",id:"builderonexit",depth:2,charIndex:7501},{text:"builder.getBuilderConfig",id:"buildergetbuilderconfig",depth:2,charIndex:7632},{text:"builder.getNormalizedConfig",id:"buildergetnormalizedconfig",depth:2,charIndex:7785},{text:"builder.getHTMLPaths",id:"buildergethtmlpaths",depth:2,charIndex:8241}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/builder-instance.mdx"},{title:"Builder Types",routePath:"/builder/en/api/builder-types",lang:"en",toc:[{text:"BuilderInstance",id:"builderinstance",depth:2,charIndex:81},{text:"BuilderContext",id:"buildercontext",depth:2,charIndex:258},{text:"BuilderPlugin",id:"builderplugin",depth:2,charIndex:337},{text:"BuilderTarget",id:"buildertarget",depth:2,charIndex:459},{text:"BuilderEntry",id:"builderentry",depth:2,charIndex:505},{text:"CreateBuilderOptions",id:"createbuilderoptions",depth:2,charIndex:582}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/builder-types.mdx"},{title:"Dev Config",routePath:"/builder/en/api/config-dev",lang:"en",toc:[{text:"dev.assetPrefix",id:"devassetprefix",depth:2,charIndex:73},{text:"Boolean Type",id:"boolean-type",depth:3,charIndex:567},{text:"String type",id:"string-type",depth:3,charIndex:767},{text:"Differences from Native Configuration",id:"differences-from-native-configuration",depth:3,charIndex:901},{text:"dev.beforeStartUrl",id:"devbeforestarturl",depth:2,charIndex:1406},{text:"dev.hmr",id:"devhmr",depth:2,charIndex:1628},{text:"dev.host",id:"devhost",depth:2,charIndex:1791},{text:"dev.https",id:"devhttps",depth:2,charIndex:2119},{text:"Automatically generate certificates",id:"automatically-generate-certificates",depth:4,charIndex:2318},{text:"Manually set the certificate",id:"manually-set-the-certificate",depth:4,charIndex:2919},{text:"dev.port",id:"devport",depth:2,charIndex:3202},{text:"Example",id:"example",depth:3,charIndex:3414},{text:"dev.progressBar",id:"devprogressbar",depth:2,charIndex:3450},{text:"dev.startUrl",id:"devstarturl",depth:2,charIndex:3663},{text:"Port placeholder",id:"port-placeholder",depth:3,charIndex:3944},{text:"Open the specified browser",id:"open-the-specified-browser",depth:3,charIndex:4160}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-dev.mdx"},{title:"Experiments Config",routePath:"/builder/en/api/config-experiments",lang:"en",toc:[{text:"experiments.lazyCompilation",id:"experimentslazycompilation",depth:2,charIndex:230},{text:"Lazy Compilation for Dynamic Imports",id:"lazy-compilation-for-dynamic-imports",depth:3,charIndex:612},{text:"Lazy Compilation for Entires",id:"lazy-compilation-for-entires",depth:3,charIndex:955},{text:"Limitations",id:"limitations",depth:3,charIndex:1603},{text:"Disable split chunks",id:"disable-split-chunks",depth:4,charIndex:1617},{text:"Use proxy",id:"use-proxy",depth:4,charIndex:1920},{text:"Other Potential Issues",id:"other-potential-issues",depth:4,charIndex:2164},{text:"experiments.sourceBuild",id:"experimentssourcebuild",depth:2,charIndex:2540},{text:"Options",id:"options",depth:3,charIndex:2933}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-experiments.mdx"},{title:"Html Config",routePath:"/builder/en/api/config-html",lang:"en",toc:[{text:"html.appIcon",id:"htmlappicon",depth:2,charIndex:74},{text:"Example",id:"example",depth:3,charIndex:524},{text:"html.crossorigin",id:"htmlcrossorigin",depth:2,charIndex:672},{text:"Example",id:"example-1",depth:3,charIndex:-1},{text:"Optional Values",id:"optional-values",depth:3,charIndex:-1},{text:"html.disableHtmlFolder",id:"htmldisablehtmlfolder",depth:2,charIndex:-1},{text:"Example",id:"example-2",depth:3,charIndex:524},{text:"html.favicon",id:"htmlfavicon",depth:2,charIndex:-1},{text:"Example",id:"example-3",depth:3,charIndex:-1},{text:"html.faviconByEntries",id:"htmlfaviconbyentries",depth:2,charIndex:-1},{text:"Example",id:"example-4",depth:3,charIndex:524},{text:"html.inject",id:"htmlinject",depth:2,charIndex:-1},{text:"Default inject position",id:"default-inject-position",depth:4,charIndex:-1},{text:"Inject into body",id:"inject-into-body",depth:4,charIndex:-1},{text:"html.injectByEntries",id:"htmlinjectbyentries",depth:2,charIndex:-1},{text:"Example",id:"example-5",depth:3,charIndex:-1},{text:"html.meta",id:"htmlmeta",depth:2,charIndex:-1},{text:"Example",id:"example-6",depth:3,charIndex:524},{text:"html.metaByEntries",id:"htmlmetabyentries",depth:2,charIndex:-1},{text:"Example",id:"example-7",depth:3,charIndex:-1},{text:"html.mountId",id:"htmlmountid",depth:2,charIndex:-1},{text:"Example",id:"example-8",depth:3,charIndex:524},{text:"Notes",id:"notes",depth:3,charIndex:-1},{text:"Update Relevant Code",id:"update-relevant-code",depth:4,charIndex:-1},{text:"Custom Templates",id:"custom-templates",depth:4,charIndex:-1},{text:"html.scriptLoading",id:"htmlscriptloading",depth:2,charIndex:-1},{text:"defer",id:"defer",depth:3,charIndex:-1},{text:"blocking",id:"blocking",depth:3,charIndex:-1},{text:"module",id:"module",depth:3,charIndex:-1},{text:"html.tags",id:"htmltags",depth:2,charIndex:-1},{text:"Tag Object",id:"tag-object",depth:4,charIndex:-1},{text:"Tags Handler",id:"tags-handler",depth:4,charIndex:-1},{text:"Limitation",id:"limitation",depth:4,charIndex:-1},{text:"html.tagsByEntries",id:"htmltagsbyentries",depth:2,charIndex:-1},{text:"Example",id:"example-9",depth:3,charIndex:-1},{text:"html.template",id:"htmltemplate",depth:2,charIndex:-1},{text:"Example",id:"example-10",depth:3,charIndex:524},{text:"html.templateByEntries",id:"htmltemplatebyentries",depth:2,charIndex:-1},{text:"Example",id:"example-11",depth:3,charIndex:-1},{text:"html.templateParameters",id:"htmltemplateparameters",depth:2,charIndex:-1},{text:"html.templateParametersByEntries",id:"htmltemplateparametersbyentries",depth:2,charIndex:-1},{text:"Example",id:"example-12",depth:3,charIndex:524},{text:"html.title",id:"htmltitle",depth:2,charIndex:-1},{text:"html.titleByEntries",id:"htmltitlebyentries",depth:2,charIndex:-1},{text:"Example",id:"example-13",depth:3,charIndex:-1}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-html.mdx"},{title:"Output Config",routePath:"/builder/en/api/config-output",lang:"en",toc:[{text:"output.assetPrefix",id:"outputassetprefix",depth:2,charIndex:-1},{text:"Example",id:"example",depth:3,charIndex:-1},{text:"Differences from Native Configuration",id:"differences-from-native-configuration",depth:3,charIndex:-1},{text:"output.assetsRetry",id:"outputassetsretry",depth:2,charIndex:-1},{text:"assetsRetry.domain",id:"assetsretrydomain",depth:3,charIndex:-1},{text:"assetsRetry.type",id:"assetsretrytype",depth:3,charIndex:-1},{text:"assetsRetry.max",id:"assetsretrymax",depth:3,charIndex:-1},{text:"assetsRetry.test",id:"assetsretrytest",depth:3,charIndex:-1},{text:"assetsRetry.crossOrigin",id:"assetsretrycrossorigin",depth:3,charIndex:-1},{text:"assetsRetry.onRetry",id:"assetsretryonretry",depth:3,charIndex:-1},{text:"assetsRetry.onSuccess",id:"assetsretryonsuccess",depth:3,charIndex:-1},{text:"assetsRetry.onFail",id:"assetsretryonfail",depth:3,charIndex:-1},{text:"assetsRetry.inlineScript",id:"assetsretryinlinescript",depth:3,charIndex:-1},{text:"Notes",id:"notes",depth:3,charIndex:-1},{text:"Limitation",id:"limitation",depth:3,charIndex:-1},{text:"Micro-frontend application",id:"micro-frontend-application",depth:4,charIndex:-1},{text:"Dynamic import resources",id:"dynamic-import-resources",depth:4,charIndex:-1},{text:"Resources in custom templates",id:"resources-in-custom-templates",depth:4,charIndex:-1},{text:"output.charset",id:"outputcharset",depth:2,charIndex:-1},{text:"output.cleanDistPath",id:"outputcleandistpath",depth:2,charIndex:-1},{text:"output.convertToRem",id:"outputconverttorem",depth:2,charIndex:-1},{text:"Boolean Type",id:"boolean-type",depth:3,charIndex:-1},{text:"Object Type",id:"object-type",depth:3,charIndex:-1},{text:"Example",id:"example-1",depth:3,charIndex:-1},{text:"output.copy",id:"outputcopy",depth:2,charIndex:-1},{text:"output.cssModules",id:"outputcssmodules",depth:2,charIndex:-1},{text:"cssModules.auto",id:"cssmodulesauto",depth:3,charIndex:-1},{text:"cssModules.exportLocalsConvention",id:"cssmodulesexportlocalsconvention",depth:3,charIndex:-1},{text:"output.cssModuleLocalIdentName",id:"outputcssmodulelocalidentname",depth:2,charIndex:-1},{text:"Default Value",id:"default-value",depth:3,charIndex:-1},{text:"Template String",id:"template-string",depth:3,charIndex:-1},{text:"Example",id:"example-2",depth:3,charIndex:-1},{text:"output.dataUriLimit",id:"outputdataurilimit",depth:2,charIndex:-1},{text:"Example",id:"example-3",depth:3,charIndex:-1},{text:"output.disableCssExtract",id:"outputdisablecssextract",depth:2,charIndex:-1},{text:"Example",id:"example-4",depth:3,charIndex:-1},{text:"output.disableCssModuleExtension",id:"outputdisablecssmoduleextension",depth:2,charIndex:-1},{text:"Example",id:"example-5",depth:3,charIndex:-1},{text:"Detailed",id:"detailed",depth:3,charIndex:-1},{text:"disableCssModuleExtension is false (default)",id:"disablecssmoduleextension-is-false-default",depth:4,charIndex:-1},{text:"disableCssModuleExtension is true",id:"disablecssmoduleextension-is-true",depth:4,charIndex:-1},{text:"output.distPath",id:"outputdistpath",depth:2,charIndex:-1},{text:"Root Directory",id:"root-directory",depth:3,charIndex:-1},{text:"Example",id:"example-6",depth:3,charIndex:-1},{text:"output.disableMinimize",id:"outputdisableminimize",depth:2,charIndex:-1},{text:"output.disableSourceMap",id:"outputdisablesourcemap",depth:2,charIndex:-1},{text:"output.disableSvgr",id:"outputdisablesvgr",depth:2,charIndex:-1},{text:"output.disableTsChecker",id:"outputdisabletschecker",depth:2,charIndex:-1},{text:"Blocking Compilation",id:"blocking-compilation",depth:3,charIndex:-1},{text:"Example",id:"example-7",depth:3,charIndex:-1},{text:"output.disableFilenameHash",id:"outputdisablefilenamehash",depth:2,charIndex:-1},{text:"Example",id:"example-8",depth:3,charIndex:-1},{text:"output.disableInlineRuntimeChunk",id:"outputdisableinlineruntimechunk",depth:2,charIndex:-1},{text:"Disable Inlining",id:"disable-inlining",depth:3,charIndex:-1},{text:"Merge Into Page Chunk",id:"merge-into-page-chunk",depth:3,charIndex:-1},{text:"output.enableAssetManifest",id:"outputenableassetmanifest",depth:2,charIndex:-1},{text:"Example",id:"example-9",depth:3,charIndex:-1},{text:"output.enableAssetFallback",id:"outputenableassetfallback",depth:2,charIndex:-1},{text:"Example",id:"example-10",depth:3,charIndex:-1},{text:"output.enableLatestDecorators",id:"outputenablelatestdecorators",depth:2,charIndex:-1},{text:"output.enableCssModuleTSDeclaration",id:"outputenablecssmoduletsdeclaration",depth:2,charIndex:-1},{text:"Example",id:"example-11",depth:3,charIndex:-1},{text:"output.enableInlineScripts",id:"outputenableinlinescripts",depth:2,charIndex:-1},{text:"Example",id:"example-12",depth:3,charIndex:-1},{text:"Using RegExp",id:"using-regexp",depth:3,charIndex:-1},{text:"Using Function",id:"using-function",depth:3,charIndex:-1},{text:"output.enableInlineStyles",id:"outputenableinlinestyles",depth:2,charIndex:-1},{text:"Example",id:"example-13",depth:3,charIndex:-1},{text:"Using RegExp",id:"using-regexp-1",depth:3,charIndex:-1},{text:"Using Function",id:"using-function-1",depth:3,charIndex:-1},{text:"output.externals",id:"outputexternals",depth:2,charIndex:-1},{text:"Example",id:"example-14",depth:3,charIndex:-1},{text:"output.filename",id:"outputfilename",depth:2,charIndex:-1},{text:"Example",id:"example-15",depth:3,charIndex:-1},{text:"Filename of Async Modules",id:"filename-of-async-modules",depth:3,charIndex:-1},{text:"output.legalComments",id:"outputlegalcomments",depth:2,charIndex:-1},{text:"Example",id:"example-16",depth:3,charIndex:-1},{text:"output.overrideBrowserslist",id:"outputoverridebrowserslist",depth:2,charIndex:-1},{text:"Priority",id:"priority",depth:4,charIndex:-1},{text:"Default Value",id:"default-value-1",depth:4,charIndex:-1},{text:"Example",id:"example-17",depth:3,charIndex:-1},{text:"Set according to Targets",id:"set-according-to-targets",depth:4,charIndex:-1},{text:"output.polyfill",id:"outputpolyfill",depth:2,charIndex:-1},{text:"Config",id:"config",depth:3,charIndex:-1},{text:"entry",id:"entry",depth:4,charIndex:-1},{text:"usage",id:"usage",depth:4,charIndex:-1},{text:"ua",id:"ua",depth:4,charIndex:-1},{text:"off",id:"off",depth:4,charIndex:-1},{text:"output.svgDefaultExport",id:"outputsvgdefaultexport",depth:2,charIndex:-1}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-output.mdx"},{title:"Performance Config",routePath:"/builder/en/api/config-performance",lang:"en",toc:[{text:"performance.buildCache",id:"performancebuildcache",depth:2,charIndex:89},{text:"cacheDigest",id:"cachedigest",depth:3,charIndex:534},{text:"Example",id:"example",depth:4,charIndex:799},{text:"performance.bundleAnalyze",id:"performancebundleanalyze",depth:2,charIndex:1195},{text:"Enable Bundle Analyze",id:"enable-bundle-analyze",depth:3,charIndex:1474},{text:"Override Default Configuration",id:"override-default-configuration",depth:3,charIndex:2048},{text:"Size Types",id:"size-types",depth:3,charIndex:2197},{text:"Generate stats.json",id:"generate-statsjson",depth:3,charIndex:2666},{text:"Notes",id:"notes",depth:3,charIndex:2792},{text:"performance.chunkSplit",id:"performancechunksplit",depth:2,charIndex:3326},{text:"chunkSplit.strategy",id:"chunksplitstrategy",depth:3,charIndex:3532},{text:"Default Strategy",id:"default-strategy",depth:3,charIndex:4081},{text:"chunkSplit.minSize",id:"chunksplitminsize",depth:3,charIndex:5041},{text:"chunkSplit.maxSize",id:"chunksplitmaxsize",depth:3,charIndex:5296},{text:"chunkSplit.forceSplitting",id:"chunksplitforcesplitting",depth:3,charIndex:5557},{text:"chunkSplit.splitChunks",id:"chunksplitsplitchunks",depth:3,charIndex:-1},{text:"chunkSplit.override",id:"chunksplitoverride",depth:3,charIndex:-1},{text:"performance.dnsPrefetch",id:"performancednsprefetch",depth:2,charIndex:-1},{text:"Example",id:"example-1",depth:3,charIndex:-1},{text:"performance.preconnect",id:"performancepreconnect",depth:2,charIndex:-1},{text:"Example",id:"example-2",depth:3,charIndex:799},{text:"performance.prefetch",id:"performanceprefetch",depth:2,charIndex:-1},{text:"Boolean Type",id:"boolean-type",depth:3,charIndex:-1},{text:"Object Type",id:"object-type",depth:3,charIndex:-1},{text:"prefetch.type",id:"prefetchtype",depth:4,charIndex:-1},{text:"Example",id:"example-3",depth:4,charIndex:-1},{text:"performance.preload",id:"performancepreload",depth:2,charIndex:-1},{text:"Boolean Type",id:"boolean-type-1",depth:3,charIndex:-1},{text:"Object Type",id:"object-type-1",depth:3,charIndex:-1},{text:"preload.type",id:"preloadtype",depth:4,charIndex:-1},{text:"Example",id:"example-4",depth:4,charIndex:799},{text:"performance.printFileSize",id:"performanceprintfilesize",depth:2,charIndex:-1},{text:"Example",id:"example-5",depth:3,charIndex:-1},{text:"performance.profile",id:"performanceprofile",depth:2,charIndex:-1},{text:"Example",id:"example-6",depth:3,charIndex:799},{text:"performance.removeConsole",id:"performanceremoveconsole",depth:2,charIndex:-1},{text:"Remove all consoles",id:"remove-all-consoles",depth:4,charIndex:-1},{text:"Remove specific console",id:"remove-specific-console",depth:4,charIndex:-1},{text:"performance.removeMomentLocale",id:"performanceremovemomentlocale",depth:2,charIndex:-1},{text:"performance.transformLodash",id:"performancetransformlodash",depth:2,charIndex:-1},{text:"Example",id:"example-7",depth:3,charIndex:-1},{text:"Disabling the Transformation",id:"disabling-the-transformation",depth:3,charIndex:-1}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-performance.mdx"},{title:"Security Config",routePath:"/builder/en/api/config-security",lang:"en",toc:[{text:"security.sri",id:"securitysri",depth:2,charIndex:86},{text:"Introduce SRI",id:"introduce-sri",depth:4,charIndex:479},{text:"Example",id:"example",depth:4,charIndex:955},{text:"security.checkSyntax",id:"securitychecksyntax",depth:2,charIndex:1136},{text:"Enable Detection",id:"enable-detection",depth:3,charIndex:1401},{text:"Error Logs",id:"error-logs",depth:3,charIndex:1740},{text:"Solutions",id:"solutions",depth:3,charIndex:2287},{text:"Options",id:"options",depth:3,charIndex:2792},{text:"checkSyntax.targets",id:"checksyntaxtargets",depth:4,charIndex:2802},{text:"checkSyntax.ecmaVersion",id:"checksyntaxecmaversion",depth:4,charIndex:3845},{text:"checkSyntax.exclude",id:"checksyntaxexclude",depth:4,charIndex:4435}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-security.mdx"},{title:"Source Config",routePath:"/builder/en/api/config-source",lang:"en",toc:[{text:"source.alias",id:"sourcealias",depth:2,charIndex:104},{text:"Object Type",id:"object-type",depth:3,charIndex:549},{text:"Function Type",id:"function-type",depth:3,charIndex:787},{text:"Exact Matching",id:"exact-matching",depth:3,charIndex:1020},{text:"Handling npm packages",id:"handling-npm-packages",depth:3,charIndex:1307},{text:"source.aliasStrategy",id:"sourcealiasstrategy",depth:2,charIndex:1962},{text:"prefer-tsconfig",id:"prefer-tsconfig",depth:3,charIndex:2194},{text:"prefer-alias",id:"prefer-alias",depth:3,charIndex:2796},{text:"source.include",id:"sourceinclude",depth:2,charIndex:3561},{text:"Compile Npm Packages",id:"compile-npm-packages",depth:3,charIndex:4212},{text:"Compile Sub Dependencies",id:"compile-sub-dependencies",depth:3,charIndex:4927},{text:"Compile Libraries in Monorepo",id:"compile-libraries-in-monorepo",depth:3,charIndex:5293},{text:"Compile CommonJS Module",id:"compile-commonjs-module",depth:3,charIndex:5487},{text:"Matching Symlink",id:"matching-symlink",depth:3,charIndex:5902},{text:"Precautions",id:"precautions",depth:3,charIndex:6323},{text:"source.exclude",id:"sourceexclude",depth:2,charIndex:6809},{text:"source.define",id:"sourcedefine",depth:2,charIndex:7083},{text:"Example",id:"example",depth:3,charIndex:7840},{text:"source.globalVars",id:"sourceglobalvars",depth:2,charIndex:7924},{text:"Example",id:"example-1",depth:3,charIndex:8108},{text:"Function Usage",id:"function-usage",depth:3,charIndex:8255},{text:"Difference with define",id:"difference-with-define",depth:3,charIndex:8444},{text:"Precautions",id:"precautions-1",depth:3,charIndex:8765},{text:"source.moduleScopes",id:"sourcemodulescopes",depth:2,charIndex:9139},{text:"Example",id:"example-2",depth:3,charIndex:9414},{text:"Array Type",id:"array-type",depth:3,charIndex:9715},{text:"Function Type",id:"function-type-1",depth:3,charIndex:9778},{text:"source.transformImport",id:"sourcetransformimport",depth:2,charIndex:9911},{text:"Example",id:"example-3",depth:3,charIndex:10781},{text:"Disable Default Config",id:"disable-default-config",depth:3,charIndex:10910},{text:"Configuration",id:"configuration",depth:3,charIndex:11277},{text:"libraryName",id:"libraryname",depth:4,charIndex:11293},{text:"libraryDirectory",id:"librarydirectory",depth:4,charIndex:11380},{text:"style",id:"style",depth:4,charIndex:11596},{text:"styleLibraryDirectory",id:"stylelibrarydirectory",depth:4,charIndex:11879},{text:"camelToDashComponentName",id:"cameltodashcomponentname",depth:4,charIndex:12218},{text:"transformToDefaultImport",id:"transformtodefaultimport",depth:4,charIndex:12353},{text:"customName",id:"customname",depth:4,charIndex:12493},{text:"customStyleName",id:"customstylename",depth:4,charIndex:13366},{text:"source.preEntry",id:"sourcepreentry",depth:2,charIndex:14251},{text:"Add a single script",id:"add-a-single-script",depth:4,charIndex:14518},{text:"Add global style",id:"add-global-style",depth:4,charIndex:14792},{text:"Add multiple scripts",id:"add-multiple-scripts",depth:4,charIndex:14978},{text:"source.resolveExtensionPrefix",id:"sourceresolveextensionprefix",depth:2,charIndex:15109},{text:"Example",id:"example-4",depth:3,charIndex:15390},{text:"Set according to Targets",id:"set-according-to-targets",depth:4,charIndex:15569},{text:"source.resolveMainFields",id:"sourceresolvemainfields",depth:2,charIndex:16035},{text:"Example",id:"example-5",depth:3,charIndex:16238},{text:"Set according to Targets",id:"set-according-to-targets-1",depth:4,charIndex:16250}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-source.mdx"},{title:"Tools Config",routePath:"/builder/en/api/config-tools",lang:"en",toc:[{text:"tools.autoprefixer",id:"toolsautoprefixer",depth:2,charIndex:85},{text:"Object Type",id:"object-type",depth:3,charIndex:215},{text:"Function Type",id:"function-type",depth:3,charIndex:360},{text:"tools.babel",id:"toolsbabel",depth:2,charIndex:546},{text:"Usage Scenarios",id:"usage-scenarios",depth:3,charIndex:673},{text:"Function Type",id:"function-type-1",depth:3,charIndex:1260},{text:"Object Type",id:"object-type-1",depth:3,charIndex:1850},{text:"Util Functions",id:"util-functions",depth:3,charIndex:2124},{text:"addPlugins",id:"addplugins",depth:4,charIndex:2244},{text:"addPresets",id:"addpresets",depth:4,charIndex:2340},{text:"removePlugins",id:"removeplugins",depth:4,charIndex:2470},{text:"removePresets",id:"removepresets",depth:4,charIndex:2671},{text:"modifyPresetEnvOptions",id:"modifypresetenvoptions",depth:4,charIndex:2881},{text:"modifyPresetReactOptions",id:"modifypresetreactoptions",depth:4,charIndex:3091},{text:"addIncludes",id:"addincludes",depth:4,charIndex:3307},{text:"addExcludes",id:"addexcludes",depth:4,charIndex:3403},{text:"Debugging Babel Configuration",id:"debugging-babel-configuration",depth:3,charIndex:3500},{text:"tools.bundlerChain",id:"toolsbundlerchain",depth:2,charIndex:3887},{text:"tools.cssExtract",id:"toolscssextract",depth:2,charIndex:4986},{text:"Object Type",id:"object-type-2",depth:3,charIndex:5163},{text:"Function Type",id:"function-type-2",depth:3,charIndex:5280},{text:"tools.cssLoader",id:"toolscssloader",depth:2,charIndex:5547},{text:"Object Type",id:"object-type-3",depth:3,charIndex:5932},{text:"Function Type",id:"function-type-3",depth:3,charIndex:6046},{text:"tools.devServer",id:"toolsdevserver",depth:2,charIndex:6249},{text:"Options",id:"options",depth:3,charIndex:6503},{text:"after",id:"after",depth:4,charIndex:6513},{text:"before",id:"before",depth:4,charIndex:7087},{text:"client",id:"client",depth:4,charIndex:7240},{text:"compress",id:"compress",depth:4,charIndex:7359},{text:"devMiddleware",id:"devmiddleware",depth:4,charIndex:7546},{text:"headers",id:"headers",depth:4,charIndex:7676},{text:"historyApiFallback",id:"historyapifallback",depth:4,charIndex:7759},{text:"hot",id:"hot",depth:4,charIndex:8081},{text:"https",id:"https",depth:4,charIndex:8162},{text:"liveReload",id:"livereload",depth:4,charIndex:8505},{text:"setupMiddlewares",id:"setupmiddlewares",depth:4,charIndex:8773},{text:"proxy",id:"proxy",depth:4,charIndex:9335},{text:"watch",id:"watch",depth:4,charIndex:10292},{text:"tools.htmlPlugin",id:"toolshtmlplugin",depth:2,charIndex:10412},{text:"Object Type",id:"object-type-4",depth:3,charIndex:10583},{text:"Function Type",id:"function-type-4",depth:3,charIndex:10707},{text:"Boolean Type",id:"boolean-type",depth:3,charIndex:10997},{text:"Disable JS/CSS minify",id:"disable-jscss-minify",depth:3,charIndex:11107},{text:"tools.less",id:"toolsless",depth:2,charIndex:11648},{text:"Object Type",id:"object-type-5",depth:3,charIndex:11762},{text:"Function Type",id:"function-type-5",depth:3,charIndex:11995},{text:"Modifying Less Version",id:"modifying-less-version",depth:3,charIndex:12258},{text:"Util Function",id:"util-function",depth:3,charIndex:12519},{text:"addExcludes",id:"addexcludes-1",depth:4,charIndex:12535},{text:"tools.minifyCss",id:"toolsminifycss",depth:2,charIndex:12753},{text:"Object Type",id:"object-type-6",depth:3,charIndex:13010},{text:"Function Type",id:"function-type-6",depth:3,charIndex:13177},{text:"tools.postcss",id:"toolspostcss",depth:2,charIndex:13384},{text:"Function Type",id:"function-type-7",depth:3,charIndex:13539},{text:"Object Type",id:"object-type-7",depth:3,charIndex:14190},{text:"Util Functions",id:"util-functions-1",depth:3,charIndex:14433},{text:"addPlugins",id:"addplugins-1",depth:4,charIndex:14450},{text:"tools.pug",id:"toolspug",depth:2,charIndex:14840},{text:"Boolean Type",id:"boolean-type-1",depth:3,charIndex:14954},{text:"Object Type",id:"object-type-8",depth:3,charIndex:15151},{text:"Function Type",id:"function-type-8",depth:3,charIndex:15294},{text:"tools.sass",id:"toolssass",depth:2,charIndex:15509},{text:"Object Type",id:"object-type-9",depth:3,charIndex:15623},{text:"Function Type",id:"function-type-9",depth:3,charIndex:15826},{text:"Modifying Sass Version",id:"modifying-sass-version",depth:3,charIndex:16089},{text:"Utility Function",id:"utility-function",depth:3,charIndex:16355},{text:"addExcludes",id:"addexcludes-2",depth:4,charIndex:16374},{text:"tools.styleLoader",id:"toolsstyleloader",depth:2,charIndex:16592},{text:"Object Type",id:"object-type-10",depth:3,charIndex:16854},{text:"Function Type",id:"function-type-10",depth:3,charIndex:16971},{text:"tools.styledComponents",id:"toolsstyledcomponents",depth:2,charIndex:17174},{text:"tools.terser",id:"toolsterser",depth:2,charIndex:17816},{text:"Object Type",id:"object-type-11",depth:3,charIndex:18094},{text:"Function Type",id:"function-type-11",depth:3,charIndex:18262},{text:"tools.tsLoader",id:"toolstsloader",depth:2,charIndex:18590},{text:"Object Type",id:"object-type-12",depth:3,charIndex:19161},{text:"Function Type",id:"function-type-12",depth:3,charIndex:19405},{text:"Util Functions",id:"util-functions-2",depth:3,charIndex:19721},{text:"addIncludes",id:"addincludes-1",depth:4,charIndex:19738},{text:"addExcludes",id:"addexcludes-3",depth:4,charIndex:19834},{text:"tools.tsChecker",id:"toolstschecker",depth:2,charIndex:19931},{text:"Object Type",id:"object-type-13",depth:3,charIndex:20128},{text:"Function Type",id:"function-type-13",depth:3,charIndex:20250},{text:"tools.webpack",id:"toolswebpack",depth:2,charIndex:20480},{text:"Object Type",id:"object-type-14",depth:3,charIndex:20797},{text:"Function Type",id:"function-type-14",depth:3,charIndex:20988},{text:"Utils",id:"utils",depth:3,charIndex:21366},{text:"env",id:"env",depth:4,charIndex:21493},{text:"isProd",id:"isprod",depth:4,charIndex:21674},{text:"target",id:"target",depth:4,charIndex:21810},{text:"isServer",id:"isserver",depth:4,charIndex:21956},{text:"isWebWorker",id:"iswebworker",depth:4,charIndex:22072},{text:"webpack",id:"webpack",depth:4,charIndex:22203},{text:"HtmlWebpackPlugin",id:"htmlwebpackplugin",depth:4,charIndex:22286},{text:"addRules",id:"addrules",depth:4,charIndex:22388},{text:"prependPlugins",id:"prependplugins",depth:4,charIndex:22501},{text:"appendPlugins",id:"appendplugins",depth:4,charIndex:22711},{text:"removePlugin",id:"removeplugin",depth:4,charIndex:22914},{text:"mergeConfig",id:"mergeconfig",depth:4,charIndex:23120},{text:"getCompiledPath",id:"getcompiledpath",depth:4,charIndex:23257},{text:"tools.webpackChain",id:"toolswebpackchain",depth:2,charIndex:23401},{text:"Utils",id:"utils-1",depth:3,charIndex:24118},{text:"env",id:"env-1",depth:4,charIndex:24126},{text:"isProd",id:"isprod-1",depth:4,charIndex:24307},{text:"target",id:"target-1",depth:4,charIndex:24443},{text:"isServer",id:"isserver-1",depth:4,charIndex:24594},{text:"isWebWorker",id:"iswebworker-1",depth:4,charIndex:24710},{text:"webpack",id:"webpack-1",depth:4,charIndex:24841},{text:"HtmlWebpackPlugin",id:"htmlwebpackplugin-1",depth:4,charIndex:24924},{text:"getCompiledPath",id:"getcompiledpath-1",depth:4,charIndex:25026},{text:"CHAIN_ID",id:"chain_id",depth:4,charIndex:25478},{text:"CHAIN_ID.RULE",id:"chain_idrule",depth:4,charIndex:25906},{text:"CHAIN_ID.ONE_OF",id:"chain_idone_of",depth:4,charIndex:26390},{text:"CHAIN_ID.USE",id:"chain_iduse",depth:4,charIndex:26849},{text:"CHAIN_ID.PLUGIN",id:"chain_idplugin",depth:4,charIndex:28075},{text:"CHAIN_ID.MINIMIZER",id:"chain_idminimizer",depth:4,charIndex:29616},{text:"Examples",id:"examples",depth:3,charIndex:29930},{text:"tools.rspack",id:"toolsrspack",depth:2,charIndex:30009},{text:"Object Type",id:"object-type-15",depth:3,charIndex:30162},{text:"Function Type",id:"function-type-15",depth:3,charIndex:30351},{text:"Utils",id:"utils-2",depth:3,charIndex:30843},{text:"env",id:"env-2",depth:4,charIndex:30851},{text:"isProd",id:"isprod-2",depth:4,charIndex:31032},{text:"target",id:"target-2",depth:4,charIndex:31168},{text:"isServer",id:"isserver-2",depth:4,charIndex:31314},{text:"isWebWorker",id:"iswebworker-2",depth:4,charIndex:31430},{text:"rspack",id:"rspack",depth:4,charIndex:31561},{text:"addRules",id:"addrules-1",depth:4,charIndex:31647},{text:"prependPlugins",id:"prependplugins-1",depth:4,charIndex:31759},{text:"appendPlugins",id:"appendplugins-1",depth:4,charIndex:31966},{text:"removePlugin",id:"removeplugin-1",depth:4,charIndex:32166},{text:"mergeConfig",id:"mergeconfig-1",depth:4,charIndex:32364},{text:"getCompiledPath",id:"getcompiledpath-2",depth:4,charIndex:32498}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-tools.mdx"},{title:"API",routePath:"/builder/en/api/",lang:"en",toc:[],frontmatter:{overview:!0},version:"",_relativePath:"en/api/index.mdx"},{title:"Plugin Core",routePath:"/builder/en/api/plugin-core",lang:"en",toc:[{text:"BuilderPlugin",id:"builderplugin",depth:2,charIndex:59},{text:"Pre-Plugins",id:"pre-plugins",depth:3,charIndex:974},{text:"Post-Plugins",id:"post-plugins",depth:3,charIndex:1296},{text:"Removing Plugins",id:"removing-plugins",depth:3,charIndex:1520},{text:"BuilderPluginAPI",id:"builderpluginapi",depth:2,charIndex:1787},{text:"Plugin for webpack-provider",id:"plugin-for-webpack-provider",depth:3,charIndex:2204},{text:"Plugins for rspack-provider",id:"plugins-for-rspack-provider",depth:3,charIndex:2357},{text:"Plugins for both webpack-provider and rspack-provider",id:"plugins-for-both-webpack-provider-and-rspack-provider",depth:3,charIndex:2508},{text:"api.context",id:"apicontext",depth:2,charIndex:3016},{text:"api.getBuilderConfig",id:"apigetbuilderconfig",depth:2,charIndex:3221},{text:"api.getNormalizedConfig",id:"apigetnormalizedconfig",depth:2,charIndex:3370},{text:"api.isPluginExists",id:"apiispluginexists",depth:2,charIndex:3822},{text:"api.getHTMLPaths",id:"apigethtmlpaths",depth:2,charIndex:3919}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/plugin-core.mdx"},{title:"Plugin Hooks",routePath:"/builder/en/api/plugin-hooks",lang:"en",toc:[{text:"Overview",id:"overview",depth:2,charIndex:74},{text:"Common Hooks",id:"common-hooks",depth:2,charIndex:1219},{text:"modifyBuilderConfig",id:"modifybuilderconfig",depth:3,charIndex:1235},{text:"modifyBundlerChain `experimental`",id:"modifybundlerchain-experimental",depth:3,charIndex:-1},{text:"modifyWebpackChain",id:"modifywebpackchain",depth:3,charIndex:2084},{text:"modifyWebpackConfig",id:"modifywebpackconfig",depth:3,charIndex:2241},{text:"modifyRspackConfig",id:"modifyrspackconfig",depth:3,charIndex:2550},{text:"onBeforeCreateCompiler",id:"onbeforecreatecompiler",depth:3,charIndex:2793},{text:"onAfterCreateCompiler",id:"onaftercreatecompiler",depth:3,charIndex:3328},{text:"Build Hooks",id:"build-hooks",depth:2,charIndex:3854},{text:"onBeforeBuild",id:"onbeforebuild",depth:3,charIndex:3869},{text:"onAfterBuild",id:"onafterbuild",depth:3,charIndex:4409},{text:"Dev Server Hooks",id:"dev-server-hooks",depth:2,charIndex:4744},{text:"onBeforeStartDevServer",id:"onbeforestartdevserver",depth:3,charIndex:4764},{text:"onAfterStartDevServer",id:"onafterstartdevserver",depth:3,charIndex:4863},{text:"onDevCompileDone",id:"ondevcompiledone",depth:3,charIndex:5016},{text:"Other Hooks",id:"other-hooks",depth:2,charIndex:5182},{text:"onExit",id:"onexit",depth:3,charIndex:5197}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/plugin-hooks.mdx"},{title:"Browser Compatibility",routePath:"/builder/en/guide/advanced/browser-compatibility",lang:"en",toc:[{text:"Set browserslist",id:"set-browserslist",depth:2,charIndex:119},{text:"Background knowledge",id:"background-knowledge",depth:2,charIndex:826},{text:"Syntax downgrade and API downgrade",id:"syntax-downgrade-and-api-downgrade",depth:3,charIndex:999},{text:"Syntax transpilation",id:"syntax-transpilation",depth:3,charIndex:1742},{text:"API Polyfill",id:"api-polyfill",depth:3,charIndex:3838},{text:"Downgrade method",id:"downgrade-method",depth:2,charIndex:5123},{text:"Downgrade the current project code",id:"downgrade-the-current-project-code",depth:3,charIndex:5967},{text:"Downgrade third-party dependencies",id:"downgrade-third-party-dependencies",depth:3,charIndex:6175},{text:"Downgrade the code out of the current project",id:"downgrade-the-code-out-of-the-current-project",depth:3,charIndex:6563},{text:"Polyfill mode",id:"polyfill-mode",depth:2,charIndex:6896},{text:"entry mode",id:"entry-mode",depth:3,charIndex:7205},{text:"usage mode",id:"usage-mode",depth:3,charIndex:7764},{text:"Disable Polyfill",id:"disable-polyfill",depth:3,charIndex:8640}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/browser-compatibility.md"},{title:"Browserslist",routePath:"/builder/en/guide/advanced/browserslist",lang:"en",toc:[{text:"What is Browserslist",id:"what-is-browserslist",depth:2,charIndex:111},{text:"Set Browserslist",id:"set-browserslist",depth:2,charIndex:1740},{text:"Example",id:"example",depth:3,charIndex:1886},{text:"Effective Scope",id:"effective-scope",depth:3,charIndex:1982},{text:"Use output.overrideBrowserslist config",id:"use-outputoverridebrowserslist-config",depth:3,charIndex:2424},{text:"Commonly used Browserslist",id:"commonly-used-browserslist",depth:2,charIndex:3403},{text:"Desktop PC scenario",id:"desktop-pc-scenario",depth:3,charIndex:3532},{text:"Mobile H5 scenario",id:"mobile-h5-scenario",depth:3,charIndex:4035},{text:"Default Browserslist",id:"default-browserslist",depth:2,charIndex:4532},{text:"Web Target",id:"web-target",depth:3,charIndex:4777},{text:"Node Target",id:"node-target",depth:3,charIndex:4918},{text:"Web Worker Target",id:"web-worker-target",depth:3,charIndex:4997},{text:"Modern Web Target",id:"modern-web-target",depth:3,charIndex:5106},{text:"Query browser support",id:"query-browser-support",depth:2,charIndex:5224}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/browserslist.md"},{title:"Custom webpack config",routePath:"/builder/en/guide/advanced/custom-webpack-config",lang:"en",toc:[{text:"Modify the webpack configuration object",id:"modify-the-webpack-configuration-object",depth:2,charIndex:156},{text:"Using webpack-chain",id:"using-webpack-chain",depth:2,charIndex:502},{text:"tools.webpackChain config",id:"toolswebpackchain-config",depth:3,charIndex:799},{text:"webpack-chain Basics",id:"webpack-chain-basics",depth:2,charIndex:1216},{text:"How does webpack-chain locate",id:"how-does-webpack-chain-locate",depth:3,charIndex:1367},{text:"webpack-chain id type",id:"webpack-chain-id-type",depth:3,charIndex:1937},{text:"webpack-chain Demo",id:"webpack-chain-demo",depth:2,charIndex:2659},{text:"Add/Modify/Delete loader",id:"addmodifydelete-loader",depth:3,charIndex:2681},{text:"Add/Modify/Delete plugin",id:"addmodifydelete-plugin",depth:3,charIndex:2711},{text:"Modify the config according to environment",id:"modify-the-config-according-to-environment",depth:3,charIndex:2741}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/custom-webpack-config.md"},{title:"Environment Variables",routePath:"/builder/en/guide/advanced/define",lang:"en",toc:[{text:"Default Variables",id:"default-variables",depth:2,charIndex:250},{text:"process.env.NODE_ENV",id:"processenvnode_env",depth:3,charIndex:271},{text:"process.env.ASSET_PREFIX",id:"processenvasset_prefix",depth:3,charIndex:788},{text:"Using define config",id:"using-define-config",depth:2,charIndex:1484},{text:"Replace Expressions",id:"replace-expressions",depth:3,charIndex:1963},{text:"process.env Injection",id:"processenv-injection",depth:3,charIndex:2811},{text:"Setup Environment Variables",id:"setup-environment-variables",depth:2,charIndex:3499},{text:"Declare type of environment variable",id:"declare-type-of-environment-variable",depth:2,charIndex:4075},{text:"Tree Shaking",id:"tree-shaking",depth:2,charIndex:4508},{text:"In-source testing",id:"in-source-testing",depth:2,charIndex:5057}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/define.md"},{title:"Hot Module Replacement",routePath:"/builder/en/guide/advanced/hmr",lang:"en",toc:[{text:"Enabling HMR",id:"enabling-hmr",depth:2,charIndex:495},{text:"Specify HMR URL",id:"specify-hmr-url",depth:2,charIndex:699},{text:"Default Config",id:"default-config",depth:3,charIndex:938},{text:"Proxy",id:"proxy",depth:3,charIndex:1096},{text:"Live reloading vs Hot reloading",id:"live-reloading-vs-hot-reloading",depth:2,charIndex:1324},{text:"FAQ",id:"faq",depth:2,charIndex:2010}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/hmr.md"},{title:"REM adaptation",routePath:"/builder/en/guide/advanced/rem",lang:"en",toc:[{text:"Enabling REM adaptability",id:"enabling-rem-adaptability",depth:2,charIndex:207},{text:"CSS conversion properties",id:"css-conversion-properties",depth:2,charIndex:395},{text:"Setting the page rootFontSize",id:"setting-the-page-rootfontsize",depth:2,charIndex:706},{text:"Customize maxRootFontSize",id:"customize-maxrootfontsize",depth:2,charIndex:1135},{text:"How to determine if REM is in effect\uFF1F",id:"how-to-determine-if-rem-is-in-effect",depth:2,charIndex:1575},{text:"How to get the rootFontSize value that is actually in effect on the page?",id:"how-to-get-the-rootfontsize-value-that-is-actually-in-effect-on-the-page",depth:2,charIndex:1851}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/rem.md"},{title:"Using Rspack",routePath:"/builder/en/guide/advanced/rspack-start",lang:"en",toc:[{text:"Enable Rspack",id:"enable-rspack",depth:2,charIndex:618},{text:"Enable in Modern.js framework",id:"enable-in-modernjs-framework",depth:3,charIndex:635},{text:"Use Builder in a front-end framework",id:"use-builder-in-a-front-end-framework",depth:3,charIndex:800},{text:"Precautions",id:"precautions",depth:2,charIndex:1062},{text:"Migrating from webpack to Rspack",id:"migrating-from-webpack-to-rspack",depth:2,charIndex:2693},{text:"1. Builder configuration differences",id:"1-builder-configuration-differences",depth:3,charIndex:3146},{text:"Source Config",id:"source-config",depth:4,charIndex:3352},{text:"Html Config",id:"html-config",depth:4,charIndex:3598},{text:"Security Config",id:"security-config",depth:4,charIndex:3732},{text:"Dev Config",id:"dev-config",depth:4,charIndex:3882},{text:"Output Config",id:"output-config",depth:4,charIndex:4013},{text:"Experiments Config",id:"experiments-config",depth:4,charIndex:4198},{text:"Performance Config",id:"performance-config",depth:4,charIndex:4359},{text:"Tools Config",id:"tools-config",depth:4,charIndex:4555},{text:"2. Migrating from webpackChain to bundlerChain",id:"2-migrating-from-webpackchain-to-bundlerchain",depth:3,charIndex:5150},{text:"CHAIN_ID differences",id:"chain_id-differences",depth:4,charIndex:5544},{text:"3. Migrating from tools.webpack to tools.rspack",id:"3-migrating-from-toolswebpack-to-toolsrspack",depth:3,charIndex:5799},{text:"4. Babel Configuration Migration",id:"4-babel-configuration-migration",depth:3,charIndex:6181},{text:"5. SWC Configuration Support",id:"5-swc-configuration-support",depth:3,charIndex:7485},{text:"6. Webpack Plugin Migration",id:"6-webpack-plugin-migration",depth:3,charIndex:7796},{text:"7. CSS Modules Configuration Migration",id:"7-css-modules-configuration-migration",depth:3,charIndex:8476},{text:"Build performance profile",id:"build-performance-profile",depth:2,charIndex:8729},{text:"Compare with Rspack CLI",id:"compare-with-rspack-cli",depth:2,charIndex:9475},{text:"FAQ",id:"faq",depth:2,charIndex:11607},{text:"After enabling Rspack, the performance is not as fast as expected?",id:"after-enabling-rspack-the-performance-is-not-as-fast-as-expected",depth:3,charIndex:11614}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/rspack-start.mdx"},{title:"Using Storybook",routePath:"/builder/en/guide/advanced/storybook",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:713},{text:"Using in Modern.js projects, Not using legacy Storybook plugin(@modern-js/plugin-storybook)",id:"using-in-modernjs-projects-not-using-legacy-storybook-pluginmodern-jsplugin-storybook",depth:3,charIndex:-1},{text:"Migrate from @modern-js/plugin-storybook",id:"migrate-from-modern-jsplugin-storybook",depth:3,charIndex:1793},{text:"Native Storybook users",id:"native-storybook-users",depth:3,charIndex:2674},{text:"Enable Rspack build",id:"enable-rspack-build",depth:2,charIndex:3186},{text:"Configurations",id:"configurations",depth:2,charIndex:3611},{text:"configPath",id:"configpath",depth:3,charIndex:3683},{text:"bundler",id:"bundler",depth:3,charIndex:3813},{text:"builderConfig",id:"builderconfig",depth:3,charIndex:4131},{text:"Command Line Interface",id:"command-line-interface",depth:2,charIndex:4424},{text:"storybook dev",id:"storybook-dev",depth:3,charIndex:4516},{text:"storybook build",id:"storybook-build",depth:3,charIndex:4624},{text:"ConfigFile",id:"configfile",depth:2,charIndex:4751},{text:"Storybook addon compatibility",id:"storybook-addon-compatibility",depth:2,charIndex:4969},{text:"Benefits",id:"benefits",depth:2,charIndex:5435},{text:"Trouble Shooting",id:"trouble-shooting",depth:2,charIndex:5864}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/storybook.mdx"},{title:"Build Target",routePath:"/builder/en/guide/basic/build-target",lang:"en",toc:[{text:"Default Target",id:"default-target",depth:2,charIndex:363},{text:"Optional Targets",id:"optional-targets",depth:2,charIndex:574},{text:"Multiple Targets",id:"multiple-targets",depth:2,charIndex:879},{text:"Node Target",id:"node-target",depth:2,charIndex:1090},{text:"Web Worker Target",id:"web-worker-target",depth:2,charIndex:1922},{text:"Modern Web Target",id:"modern-web-target",depth:2,charIndex:2957}],frontmatter:{},version:"",_relativePath:"en/guide/basic/build-target.md"},{title:"Use Builder CLI",routePath:"/builder/en/guide/basic/builder-cli",lang:"en",toc:[{text:"Install",id:"install",depth:2,charIndex:422},{text:"Commands",id:"commands",depth:2,charIndex:871},{text:"builder dev",id:"builder-dev",depth:3,charIndex:1015},{text:"builder build",id:"builder-build",depth:3,charIndex:1161},{text:"builder serve",id:"builder-serve",depth:3,charIndex:1280},{text:"Configuration",id:"configuration",depth:2,charIndex:1489},{text:"Build Entry",id:"build-entry",depth:2,charIndex:1906},{text:"Registering Plugins",id:"registering-plugins",depth:2,charIndex:2117}],frontmatter:{},version:"",_relativePath:"en/guide/basic/builder-cli.mdx"},{title:"Builder Config",routePath:"/builder/en/guide/basic/builder-config",lang:"en",toc:[{text:"Config Categories",id:"config-categories",depth:2,charIndex:85},{text:"Default Values",id:"default-values",depth:2,charIndex:612},{text:"Use Config",id:"use-config",depth:2,charIndex:972},{text:"In the Upper Framework",id:"in-the-upper-framework",depth:3,charIndex:986},{text:"Using the Node API",id:"using-the-node-api",depth:3,charIndex:1331},{text:"Relationship with Framework Config",id:"relationship-with-framework-config",depth:2,charIndex:1534},{text:"Debug the config",id:"debug-the-config",depth:2,charIndex:1849}],frontmatter:{},version:"",_relativePath:"en/guide/basic/builder-config.mdx"},{title:"CSS Usage",routePath:"/builder/en/guide/basic/css-usage",lang:"en",toc:[{text:"Using Less, Sass and Stylus",id:"using-less-sass-and-stylus",depth:2,charIndex:268},{text:"Using PostCSS",id:"using-postcss",depth:2,charIndex:675},{text:"Builtin PostCSS plugins",id:"builtin-postcss-plugins",depth:3,charIndex:807},{text:"CSS Minify",id:"css-minify",depth:2,charIndex:2025},{text:"Inline CSS Files",id:"inline-css-files",depth:2,charIndex:2669},{text:"Import CSS in node_modules",id:"import-css-in-node_modules",depth:2,charIndex:-1}],frontmatter:{},version:"",_relativePath:"en/guide/basic/css-usage.md"},{title:"HTML Template",routePath:"/builder/en/guide/basic/html-template",lang:"en",toc:[{text:"Set Template",id:"set-template",depth:2,charIndex:261},{text:"Set Page Title",id:"set-page-title",depth:2,charIndex:676},{text:"Set Page Icon",id:"set-page-icon",depth:2,charIndex:-1},{text:"Set Meta Tags",id:"set-meta-tags",depth:2,charIndex:-1},{text:"Set Template Parameters",id:"set-template-parameters",depth:2,charIndex:-1},{text:"Template Engine",id:"template-engine",depth:2,charIndex:-1},{text:"Lodash Template",id:"lodash-template",depth:3,charIndex:-1},{text:"EJS",id:"ejs",depth:3,charIndex:-1},{text:"Pug",id:"pug",depth:3,charIndex:-1},{text:"Injecting Tags",id:"injecting-tags",depth:2,charIndex:-1},{text:"Tag Object",id:"tag-object",depth:3,charIndex:-1},{text:"Tags Handler",id:"tags-handler",depth:3,charIndex:-1}],frontmatter:{},version:"",_relativePath:"en/guide/basic/html-template.md"},{title:"Use TypeScript",routePath:"/builder/en/guide/basic/typescript",lang:"en",toc:[{text:"TypeScript compilation",id:"typescript-compilation",depth:2,charIndex:151},{text:"Why Babel is the default option",id:"why-babel-is-the-default-option",depth:3,charIndex:1271},{text:"Type checking",id:"type-checking",depth:2,charIndex:1758}],frontmatter:{},version:"",_relativePath:"en/guide/basic/typescript.md"},{title:"Debug Mode",routePath:"/builder/en/guide/debug/debug-mode",lang:"en",toc:[{text:"Log Information",id:"log-information",depth:2,charIndex:362},{text:"Builder Config File",id:"builder-config-file",depth:2,charIndex:802},{text:"Webpack Config File",id:"webpack-config-file",depth:2,charIndex:1220},{text:"Rspack Config File",id:"rspack-config-file",depth:2,charIndex:1976}],frontmatter:{},version:"",_relativePath:"en/guide/debug/debug-mode.md"},{title:"Exceptions FAQ",routePath:"/builder/en/guide/faq/exceptions",lang:"en",toc:[],frontmatter:{},version:"",_relativePath:"en/guide/faq/exceptions.md"},{title:"Features FAQ",routePath:"/builder/en/guide/faq/features",lang:"en",toc:[],frontmatter:{},version:"",_relativePath:"en/guide/faq/features.md"},{title:"General FAQ",routePath:"/builder/en/guide/faq/general",lang:"en",toc:[{text:"The relationship between Modern.js Builder and Modern.js?",id:"the-relationship-between-modernjs-builder-and-modernjs",depth:3,charIndex:3},{text:"Can Builder be used to build libraries or UI components?",id:"can-builder-be-used-to-build-libraries-or-ui-components",depth:3,charIndex:477},{text:"Will Builder support Turbopack?",id:"will-builder-support-turbopack",depth:3,charIndex:858},{text:"Will Builder support Vite?",id:"will-builder-support-vite",depth:3,charIndex:1205}],frontmatter:{},version:"",_relativePath:"en/guide/faq/general.md"},{title:"HMR FAQ",routePath:"/builder/en/guide/faq/hmr",lang:"en",toc:[],frontmatter:{},version:"",_relativePath:"en/guide/faq/hmr.md"},{title:"All Features",routePath:"/builder/en/guide/features",lang:"en",toc:[{text:"JavaScript",id:"javascript",depth:2,charIndex:434},{text:"CSS",id:"css",depth:2,charIndex:2790},{text:"HTML",id:"html",depth:2,charIndex:3978},{text:"Development and Debugging",id:"development-and-debugging",depth:2,charIndex:4658},{text:"Frontend Framework",id:"frontend-framework",depth:2,charIndex:5002},{text:"Static Assets",id:"static-assets",depth:2,charIndex:5508},{text:"Performance",id:"performance",depth:2,charIndex:6488}],frontmatter:{},version:"",_relativePath:"en/guide/features.mdx"},{title:"Build Vue 2 App",routePath:"/builder/en/guide/framework/vue2",lang:"en",toc:[{text:"Example Project",id:"example-project",depth:2,charIndex:349},{text:"CLI Tool",id:"cli-tool",depth:2,charIndex:686},{text:"Using Vue Plugin",id:"using-vue-plugin",depth:2,charIndex:898},{text:"Type Definitions",id:"type-definitions",depth:2,charIndex:1204}],frontmatter:{},version:"",_relativePath:"en/guide/framework/vue2.mdx"},{title:"Build Vue 3 App",routePath:"/builder/en/guide/framework/vue3",lang:"en",toc:[{text:"Example Project",id:"example-project",depth:2,charIndex:349},{text:"CLI Tool",id:"cli-tool",depth:2,charIndex:686},{text:"Using Vue Plugin",id:"using-vue-plugin",depth:2,charIndex:898},{text:"Type Definitions",id:"type-definitions",depth:2,charIndex:1202}],frontmatter:{},version:"",_relativePath:"en/guide/framework/vue3.mdx"},{title:"Glossary",routePath:"/builder/en/guide/glossary",lang:"en",toc:[{text:"Bundler",id:"bundler",depth:2,charIndex:370},{text:"Builder",id:"builder",depth:2,charIndex:726},{text:"Builder Provider",id:"builder-provider",depth:2,charIndex:1069},{text:"Micro-frontend",id:"micro-frontend",depth:2,charIndex:1357},{text:"Module Federation",id:"module-federation",depth:2,charIndex:1971},{text:"Rspack",id:"rspack",depth:2,charIndex:2737},{text:"Modern.js",id:"modernjs",depth:2,charIndex:3269},{text:"EdenX",id:"edenx",depth:2,charIndex:3477}],frontmatter:{},version:"",_relativePath:"en/guide/glossary.mdx"},{title:"Introduction",routePath:"/builder/en/guide/introduction",lang:"en",toc:[{text:"Rust Tools",id:"rust-tools",depth:2,charIndex:912},{text:"Position",id:"position",depth:2,charIndex:1855},{text:"Features",id:"features",depth:2,charIndex:2671},{text:"Support Rspack Build",id:"support-rspack-build",depth:3,charIndex:2683},{text:"Deep optimization",id:"deep-optimization",depth:3,charIndex:3925},{text:"Extensible Plugin System",id:"extensible-plugin-system",depth:3,charIndex:4351},{text:"npm packages",id:"npm-packages",depth:2,charIndex:4933},{text:"Next Step",id:"next-step",depth:2,charIndex:6132}],frontmatter:{},version:"",_relativePath:"en/guide/introduction.mdx"},{title:"Chunk Splitting Practice",routePath:"/builder/en/guide/optimization/split-chunk",lang:"en",toc:[{text:"Splitting Strategies",id:"splitting-strategies",depth:2,charIndex:453},{text:"split-by-experience",id:"split-by-experience",depth:3,charIndex:1069},{text:"Behavior",id:"behavior",depth:4,charIndex:1091},{text:"Config",id:"config",depth:4,charIndex:2121},{text:"Notes",id:"notes",depth:4,charIndex:2132},{text:"split-by-module",id:"split-by-module",depth:3,charIndex:2273},{text:"Behavior",id:"behavior-1",depth:4,charIndex:2291},{text:"Config",id:"config-1",depth:4,charIndex:2628},{text:"Notes",id:"notes-1",depth:4,charIndex:2639},{text:"all-in-one",id:"all-in-one",depth:3,charIndex:3029},{text:"Behavior",id:"behavior-2",depth:4,charIndex:3042},{text:"Config",id:"config-2",depth:4,charIndex:3135},{text:"Notes",id:"notes-2",depth:4,charIndex:3146},{text:"single-vendor",id:"single-vendor",depth:3,charIndex:3380},{text:"Behavior",id:"behavior-3",depth:4,charIndex:3396},{text:"Config",id:"config-3",depth:4,charIndex:3502},{text:"Notes",id:"notes-3",depth:4,charIndex:3513},{text:"split-by-size",id:"split-by-size",depth:3,charIndex:3632},{text:"Behavior",id:"behavior-4",depth:4,charIndex:3648},{text:"Config",id:"config-4",depth:4,charIndex:3790},{text:"Custom Splitting Strategy",id:"custom-splitting-strategy",depth:2,charIndex:3802},{text:"Custom Group",id:"custom-group",depth:3,charIndex:4293},{text:"Notes",id:"notes-4",depth:4,charIndex:4589},{text:"Custom Bundler `splitChunks` Config",id:"custom-bundler-splitchunks-config",depth:3,charIndex:-1},{text:"Using Dynamic Import for Code Splitting",id:"using-dynamic-import-for-code-splitting",depth:2,charIndex:-1}],frontmatter:{},version:"",_relativePath:"en/guide/optimization/split-chunk.md"},{title:"Quick Start",routePath:"/builder/en/guide/quick-start",lang:"en",toc:[{text:"Environment preparation",id:"environment-preparation",depth:2,charIndex:370},{text:"Use the Modern.js Framework",id:"use-the-modernjs-framework",depth:2,charIndex:1096},{text:"Use the Builder CLI Tool",id:"use-the-builder-cli-tool",depth:2,charIndex:1772},{text:"Use Builder in a Front-end Framework",id:"use-builder-in-a-front-end-framework",depth:2,charIndex:2175},{text:"1. Install Builder",id:"1-install-builder",depth:3,charIndex:2307},{text:"2. Create Builder Instance",id:"2-create-builder-instance",depth:3,charIndex:2838},{text:"3. Call Builder Instance Method",id:"3-call-builder-instance-method",depth:3,charIndex:3586},{text:"Next Step",id:"next-step",depth:2,charIndex:4335}],frontmatter:{},version:"",_relativePath:"en/guide/quick-start.mdx"},{title:"",routePath:"/builder/en/",lang:"en",toc:[],frontmatter:{pageType:"home",hero:{name:"Modern.js Builder",tagline:"A Build Engine for web development.",actions:[{theme:"brand",text:"Introduction",link:"/en/guide/introduction.html"},{theme:"alt",text:"Quick Start",link:"/en/guide/quick-start.html"}]},features:[{title:"Rust Bundler",details:"Easily switch to Rspack bundler with faster build speed.",icon:"\uD83D\uDE80"},{title:"Deep optimization",details:"Automatically optimize static assets, ensure the performance of production app.",icon:"\uD83C\uDF6D"},{title:"Out of the box",details:"Base on the best practice at ByteDance, various capabilities are out-of-the-box.",icon:"\uD83D\uDCE6"},{title:"Easy to Configure",details:"Launch with zero configuration, then everything is configurable.",icon:"\uD83D\uDCD6"},{title:"Pluggable",details:"Comes with a lightweight plugin system to meet your customization needs.",icon:"\uD83C\uDFA8"},{title:"Multiple Outputs",details:"Supports building output for Node.js, Web Workers, and other environments.",icon:"\u2728"}]},version:"",_relativePath:"en/index.md"},{title:"Introduce to Plugin",routePath:"/builder/en/plugins/introduction",lang:"en",toc:[{text:"Write a plugin",id:"write-a-plugin",depth:2,charIndex:507},{text:"Lifetime Hooks",id:"lifetime-hooks",depth:2,charIndex:1141},{text:"Use Builder Config",id:"use-builder-config",depth:2,charIndex:1518},{text:"Modify webpack Config",id:"modify-webpack-config",depth:2,charIndex:2943},{text:"Examples",id:"examples",depth:2,charIndex:3455},{text:"Modify Loaders",id:"modify-loaders",depth:3,charIndex:3467},{text:"Add Entry Points",id:"add-entry-points",depth:3,charIndex:3610},{text:"Integrate webpack Plugins",id:"integrate-webpack-plugins",depth:3,charIndex:3632}],frontmatter:{},version:"",_relativePath:"en/plugins/introduction.md"},{title:"Overview",routePath:"/builder/en/plugins/list",lang:"en",toc:[{text:"Official Plugins",id:"official-plugins",depth:2,charIndex:3}],frontmatter:{},version:"",_relativePath:"en/plugins/list.md"},{title:"Esbuild Plugin",routePath:"/builder/en/plugins/plugin-esbuild",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:949},{text:"Used in Modern.js framework",id:"used-in-modernjs-framework",depth:3,charIndex:964},{text:"Use via the Node API",id:"use-via-the-node-api",depth:3,charIndex:1179},{text:"Install",id:"install",depth:4,charIndex:1300},{text:"Register",id:"register",depth:4,charIndex:1366},{text:"Config",id:"config",depth:2,charIndex:1436},{text:"loader",id:"loader",depth:3,charIndex:1592},{text:"Set JSX Format",id:"set-jsx-format",depth:4,charIndex:1848},{text:"Set the target environment",id:"set-the-target-environment",depth:4,charIndex:2154},{text:"Disable transformation",id:"disable-transformation",depth:4,charIndex:2725},{text:"minimize",id:"minimize",depth:3,charIndex:2871},{text:"Set the target environment",id:"set-the-target-environment-1",depth:4,charIndex:3061},{text:"Disable minification",id:"disable-minification",depth:4,charIndex:3163},{text:"Limitations",id:"limitations",depth:2,charIndex:3305},{text:"Compatibility",id:"compatibility",depth:3,charIndex:3481},{text:"Not support Babel plugins",id:"not-support-babel-plugins",depth:3,charIndex:4675},{text:"Bundle Size",id:"bundle-size",depth:3,charIndex:5111}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-esbuild.mdx"},{title:"Image Compress Plugin",routePath:"/builder/en/plugins/plugin-image-compress",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:183},{text:"Install",id:"install",depth:3,charIndex:198},{text:"Register",id:"register",depth:3,charIndex:265},{text:"Config",id:"config",depth:2,charIndex:513}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-image-compress.mdx"},{title:"Node Polyfill Plugin",routePath:"/builder/en/plugins/plugin-node-polyfill",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:460},{text:"Used in Modern.js framework",id:"used-in-modernjs-framework",depth:3,charIndex:475},{text:"Use via the Node API",id:"use-via-the-node-api",depth:3,charIndex:711},{text:"Install",id:"install",depth:4,charIndex:832},{text:"Register",id:"register",depth:4,charIndex:898},{text:"Node Polyfills",id:"node-polyfills",depth:2,charIndex:974},{text:"Globals",id:"globals",depth:3,charIndex:992},{text:"Modules",id:"modules",depth:3,charIndex:1132},{text:"Fallbacks",id:"fallbacks",depth:3,charIndex:1591}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-node-polyfill.mdx"},{title:"Stylus Plugin",routePath:"/builder/en/plugins/plugin-stylus",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:120},{text:"Install",id:"install",depth:3,charIndex:135},{text:"Register",id:"register",depth:3,charIndex:202},{text:"Example",id:"example",depth:2,charIndex:437},{text:"Config",id:"config",depth:2,charIndex:639},{text:"stylusOptions",id:"stylusoptions",depth:3,charIndex:746},{text:"sourceMap",id:"sourcemap",depth:3,charIndex:886}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-stylus.mdx"},{title:"SWC Plugin",routePath:"/builder/en/plugins/plugin-swc",lang:"en",toc:[{text:"Usage Scenarios",id:"usage-scenarios",depth:2,charIndex:350},{text:"Rspack Scenario",id:"rspack-scenario",depth:3,charIndex:525},{text:"Babel Plugins",id:"babel-plugins",depth:3,charIndex:879},{text:"Bundle Size",id:"bundle-size",depth:3,charIndex:1878},{text:"Quick Start",id:"quick-start",depth:2,charIndex:2201},{text:"Used in Modern.js framework",id:"used-in-modernjs-framework",depth:3,charIndex:2216},{text:"Use via the Node API",id:"use-via-the-node-api",depth:3,charIndex:2567},{text:"Install",id:"install",depth:4,charIndex:2695},{text:"Register",id:"register",depth:4,charIndex:2761},{text:"Config",id:"config",depth:2,charIndex:2908},{text:"presetReact",id:"presetreact",depth:3,charIndex:3505},{text:"presetEnv",id:"presetenv",depth:3,charIndex:3804},{text:"jsMinify",id:"jsminify",depth:3,charIndex:3956},{text:"cssMinify",id:"cssminify",depth:3,charIndex:4249},{text:"overrides",id:"overrides",depth:3,charIndex:4461},{text:"extensions",id:"extensions",depth:3,charIndex:4703},{text:"extensions.reactUtils",id:"extensionsreactutils",depth:4,charIndex:4766},{text:"extensions.lodash",id:"extensionslodash",depth:4,charIndex:5208},{text:"extensions.styledComponents",id:"extensionsstyledcomponents",depth:4,charIndex:5421},{text:"extensions.emotion",id:"extensionsemotion",depth:4,charIndex:5532},{text:"extensions.pluginImport",id:"extensionspluginimport",depth:4,charIndex:5624},{text:"Limitation",id:"limitation",depth:2,charIndex:6797}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-swc.mdx"},{title:"Vue Plugin",routePath:"/builder/en/plugins/plugin-vue",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:140},{text:"Install",id:"install",depth:3,charIndex:155},{text:"Register",id:"register",depth:3,charIndex:222},{text:"Config",id:"config",depth:2,charIndex:443},{text:"vueLoaderOptions",id:"vueloaderoptions",depth:3,charIndex:547},{text:"vueJsxOptions",id:"vuejsxoptions",depth:3,charIndex:706}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-vue.mdx"},{title:"Vue 2 Plugin",routePath:"/builder/en/plugins/plugin-vue2",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:142},{text:"Install",id:"install",depth:3,charIndex:157},{text:"Register",id:"register",depth:3,charIndex:224},{text:"Config",id:"config",depth:2,charIndex:447},{text:"vueLoaderOptions",id:"vueloaderoptions",depth:3,charIndex:551},{text:"vueJsxOptions",id:"vuejsxoptions",depth:3,charIndex:858}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-vue2.mdx"},{title:"Builder Core",routePath:"/builder/api/builder-core",lang:"zh",toc:[{text:"createBuilder",id:"createbuilder",depth:2,charIndex:30},{text:"builderWebpackProvider",id:"builderwebpackprovider",depth:3,charIndex:190},{text:"builderRspackProvider",id:"builderrspackprovider",depth:3,charIndex:285},{text:"options",id:"options",depth:3,charIndex:377},{text:"mergeBuilderConfig",id:"mergebuilderconfig",depth:2,charIndex:629},{text:"webpack",id:"webpack",depth:2,charIndex:732},{text:"HtmlWebpackPlugin",id:"htmlwebpackplugin",depth:2,charIndex:868}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/builder-core.mdx"},{title:"Builder Instance",routePath:"/builder/api/builder-instance",lang:"zh",toc:[{text:"builder.context",id:"buildercontext",depth:2,charIndex:34},{text:"builder.context.entry",id:"buildercontextentry",depth:3,charIndex:89},{text:"builder.context.target",id:"buildercontexttarget",depth:3,charIndex:165},{text:"builder.context.rootPath",id:"buildercontextrootpath",depth:3,charIndex:243},{text:"builder.context.srcPath",id:"buildercontextsrcpath",depth:3,charIndex:324},{text:"builder.context.distPath",id:"buildercontextdistpath",depth:3,charIndex:374},{text:"builder.context.cachePath",id:"buildercontextcachepath",depth:3,charIndex:472},{text:"builder.context.configPath",id:"buildercontextconfigpath",depth:3,charIndex:532},{text:"builder.context.tsconfigPath",id:"buildercontexttsconfigpath",depth:3,charIndex:623},{text:"builder.context.framework",id:"buildercontextframework",depth:3,charIndex:726},{text:"builder.context.devServer",id:"buildercontextdevserver",depth:3,charIndex:797},{text:"builder.context.bundlerType",id:"buildercontextbundlertype",depth:3,charIndex:886},{text:"builder.build",id:"builderbuild",depth:2,charIndex:942},{text:"\u5F00\u53D1\u73AF\u5883\u6784\u5EFA",id:"\u5F00\u53D1\u73AF\u5883\u6784\u5EFA",depth:3,charIndex:1009},{text:"\u76D1\u542C\u6587\u4EF6\u53D8\u5316",id:"\u76D1\u542C\u6587\u4EF6\u53D8\u5316",depth:3,charIndex:1067},{text:"\u81EA\u5B9A\u4E49 Compiler",id:"\u81EA\u5B9A\u4E49-compiler",depth:3,charIndex:1122},{text:"builder.startDevServer",id:"builderstartdevserver",depth:2,charIndex:1169},{text:"\u81EA\u5B9A\u4E49 URL \u8F93\u51FA",id:"\u81EA\u5B9A\u4E49-url-\u8F93\u51FA",depth:3,charIndex:1408},{text:"\u4E25\u683C\u9650\u5236\u7AEF\u53E3",id:"\u4E25\u683C\u9650\u5236\u7AEF\u53E3",depth:3,charIndex:1534},{text:"\u81EA\u5B9A\u4E49 Compiler",id:"\u81EA\u5B9A\u4E49-compiler-1",depth:3,charIndex:1627},{text:"\u9759\u9ED8\u83B7\u53D6\u7AEF\u53E3\u53F7",id:"\u9759\u9ED8\u83B7\u53D6\u7AEF\u53E3\u53F7",depth:3,charIndex:1674},{text:"\u81EA\u5B9A\u4E49\u65E5\u5FD7\u8F93\u51FA\u5BF9\u8C61",id:"\u81EA\u5B9A\u4E49\u65E5\u5FD7\u8F93\u51FA\u5BF9\u8C61",depth:3,charIndex:1792},{text:"builder.serve",id:"builderserve",depth:2,charIndex:1916},{text:"builder.createCompiler",id:"buildercreatecompiler",depth:2,charIndex:2104},{text:"builder.addPlugins",id:"builderaddplugins",depth:2,charIndex:2306},{text:"builder.removePlugins",id:"builderremoveplugins",depth:2,charIndex:2418},{text:"builder.isPluginExists",id:"builderispluginexists",depth:2,charIndex:2533},{text:"builder.inspectConfig",id:"builderinspectconfig",depth:2,charIndex:2598},{text:"builder.onBeforeCreateCompiler",id:"builderonbeforecreatecompiler",depth:2,charIndex:2888},{text:"builder.onAfterCreateCompiler",id:"builderonaftercreatecompiler",depth:2,charIndex:3281},{text:"builder.onBeforeBuild",id:"builderonbeforebuild",depth:2,charIndex:3604},{text:"builder.onAfterBuild",id:"builderonafterbuild",depth:2,charIndex:3861},{text:"builder.onBeforeStartDevServer",id:"builderonbeforestartdevserver",depth:2,charIndex:4052},{text:"builder.onAfterStartDevServer",id:"builderonafterstartdevserver",depth:2,charIndex:4123},{text:"builder.onDevCompileDone",id:"builderondevcompiledone",depth:2,charIndex:4220},{text:"builder.onExit",id:"builderonexit",depth:2,charIndex:4320},{text:"builder.getBuilderConfig",id:"buildergetbuilderconfig",depth:2,charIndex:4387},{text:"builder.getNormalizedConfig",id:"buildergetnormalizedconfig",depth:2,charIndex:4494},{text:"builder.getHTMLPaths",id:"buildergethtmlpaths",depth:2,charIndex:4715}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/builder-instance.mdx"},{title:"Builder Types",routePath:"/builder/api/builder-types",lang:"zh",toc:[{text:"BuilderInstance",id:"builderinstance",depth:2,charIndex:30},{text:"BuilderContext",id:"buildercontext",depth:2,charIndex:118},{text:"BuilderPlugin",id:"builderplugin",depth:2,charIndex:168},{text:"BuilderTarget",id:"buildertarget",depth:2,charIndex:245},{text:"BuilderEntry",id:"builderentry",depth:2,charIndex:282},{text:"CreateBuilderOptions",id:"createbuilderoptions",depth:2,charIndex:335}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/builder-types.mdx"},{title:"Dev Config",routePath:"/builder/api/config-dev",lang:"zh",toc:[{text:"dev.assetPrefix",id:"devassetprefix",depth:2,charIndex:32},{text:"Boolean \u7C7B\u578B",id:"boolean-\u7C7B\u578B",depth:3,charIndex:263},{text:"String \u7C7B\u578B",id:"string-\u7C7B\u578B",depth:3,charIndex:422},{text:"\u4E0E\u539F\u751F\u914D\u7F6E\u7684\u533A\u522B",id:"\u4E0E\u539F\u751F\u914D\u7F6E\u7684\u533A\u522B",depth:3,charIndex:520},{text:"dev.beforeStartUrl",id:"devbeforestarturl",depth:2,charIndex:765},{text:"dev.hmr",id:"devhmr",depth:2,charIndex:908},{text:"dev.host",id:"devhost",depth:2,charIndex:1033},{text:"dev.https",id:"devhttps",depth:2,charIndex:1208},{text:"\u81EA\u52A8\u751F\u6210\u8BC1\u4E66",id:"\u81EA\u52A8\u751F\u6210\u8BC1\u4E66",depth:4,charIndex:1350},{text:"\u624B\u52A8\u8BBE\u7F6E\u8BC1\u4E66",id:"\u624B\u52A8\u8BBE\u7F6E\u8BC1\u4E66",depth:4,charIndex:1710},{text:"dev.port",id:"devport",depth:2,charIndex:1842},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:3,charIndex:1952},{text:"dev.progressBar",id:"devprogressbar",depth:2,charIndex:1974},{text:"dev.startUrl",id:"devstarturl",depth:2,charIndex:2069},{text:"\u7AEF\u53E3\u53F7\u5360\u4F4D\u7B26",id:"\u7AEF\u53E3\u53F7\u5360\u4F4D\u7B26",depth:3,charIndex:2248},{text:"\u6253\u5F00\u6307\u5B9A\u6D4F\u89C8\u5668",id:"\u6253\u5F00\u6307\u5B9A\u6D4F\u89C8\u5668",depth:3,charIndex:2320}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-dev.mdx"},{title:"Experiments Config",routePath:"/builder/api/config-experiments",lang:"zh",toc:[{text:"experiments.lazyCompilation",id:"experimentslazycompilation",depth:2,charIndex:109},{text:"\u5EF6\u8FDF\u7F16\u8BD1\u5F02\u6B65\u6A21\u5757",id:"\u5EF6\u8FDF\u7F16\u8BD1\u5F02\u6B65\u6A21\u5757",depth:3,charIndex:260},{text:"\u5EF6\u8FDF\u7F16\u8BD1\u5165\u53E3\u6A21\u5757",id:"\u5EF6\u8FDF\u7F16\u8BD1\u5165\u53E3\u6A21\u5757",depth:3,charIndex:401},{text:"\u5C40\u9650\u6027",id:"\u5C40\u9650\u6027",depth:3,charIndex:619},{text:"\u7981\u7528\u62C6\u5305\u89C4\u5219",id:"\u7981\u7528\u62C6\u5305\u89C4\u5219",depth:4,charIndex:625},{text:"\u4F7F\u7528\u4EE3\u7406",id:"\u4F7F\u7528\u4EE3\u7406",depth:4,charIndex:718},{text:"\u5176\u4ED6\u6F5C\u5728\u7684\u95EE\u9898",id:"\u5176\u4ED6\u6F5C\u5728\u7684\u95EE\u9898",depth:4,charIndex:854},{text:"experiments.sourceBuild",id:"experimentssourcebuild",depth:2,charIndex:1018},{text:"\u9009\u9879",id:"\u9009\u9879",depth:3,charIndex:1224}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-experiments.mdx"},{title:"Html Config",routePath:"/builder/api/config-html",lang:"zh",toc:[{text:"html.appIcon",id:"htmlappicon",depth:2,charIndex:34},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:3,charIndex:228},{text:"html.crossorigin",id:"htmlcrossorigin",depth:2,charIndex:284},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-1",depth:3,charIndex:-1},{text:"\u53EF\u9009\u503C",id:"\u53EF\u9009\u503C",depth:3,charIndex:-1},{text:"html.disableHtmlFolder",id:"htmldisablehtmlfolder",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-2",depth:3,charIndex:228},{text:"html.favicon",id:"htmlfavicon",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-3",depth:3,charIndex:-1},{text:"html.faviconByEntries",id:"htmlfaviconbyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-4",depth:3,charIndex:228},{text:"html.inject",id:"htmlinject",depth:2,charIndex:-1},{text:"\u9ED8\u8BA4\u63D2\u5165\u4F4D\u7F6E",id:"\u9ED8\u8BA4\u63D2\u5165\u4F4D\u7F6E",depth:4,charIndex:-1},{text:"\u63D2\u5165\u81F3 body \u6807\u7B7E",id:"\u63D2\u5165\u81F3-body-\u6807\u7B7E",depth:4,charIndex:-1},{text:"html.injectByEntries",id:"htmlinjectbyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-5",depth:3,charIndex:-1},{text:"html.meta",id:"htmlmeta",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-6",depth:3,charIndex:228},{text:"html.metaByEntries",id:"htmlmetabyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-7",depth:3,charIndex:-1},{text:"html.mountId",id:"htmlmountid",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-8",depth:3,charIndex:228},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879",depth:3,charIndex:-1},{text:"\u66F4\u65B0\u76F8\u5173\u4EE3\u7801",id:"\u66F4\u65B0\u76F8\u5173\u4EE3\u7801",depth:4,charIndex:-1},{text:"\u81EA\u5B9A\u4E49\u6A21\u677F",id:"\u81EA\u5B9A\u4E49\u6A21\u677F",depth:4,charIndex:-1},{text:"html.scriptLoading",id:"htmlscriptloading",depth:2,charIndex:-1},{text:"defer",id:"defer",depth:3,charIndex:-1},{text:"blocking",id:"blocking",depth:3,charIndex:-1},{text:"module",id:"module",depth:3,charIndex:-1},{text:"html.tags",id:"htmltags",depth:2,charIndex:-1},{text:"\u5BF9\u8C61\u5F62\u5F0F",id:"\u5BF9\u8C61\u5F62\u5F0F",depth:4,charIndex:-1},{text:"\u51FD\u6570\u5F62\u5F0F",id:"\u51FD\u6570\u5F62\u5F0F",depth:4,charIndex:-1},{text:"\u9650\u5236",id:"\u9650\u5236",depth:4,charIndex:-1},{text:"html.tagsByEntries",id:"htmltagsbyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-9",depth:3,charIndex:-1},{text:"html.template",id:"htmltemplate",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-10",depth:3,charIndex:228},{text:"html.templateByEntries",id:"htmltemplatebyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-11",depth:3,charIndex:-1},{text:"html.templateParameters",id:"htmltemplateparameters",depth:2,charIndex:-1},{text:"html.templateParametersByEntries",id:"htmltemplateparametersbyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-12",depth:3,charIndex:228},{text:"html.title",id:"htmltitle",depth:2,charIndex:-1},{text:"html.titleByEntries",id:"htmltitlebyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-13",depth:3,charIndex:-1}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-html.mdx"},{title:"Output Config",routePath:"/builder/api/config-output",lang:"zh",toc:[{text:"output.assetPrefix",id:"outputassetprefix",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:3,charIndex:-1},{text:"\u4E0E\u539F\u751F\u914D\u7F6E\u7684\u533A\u522B",id:"\u4E0E\u539F\u751F\u914D\u7F6E\u7684\u533A\u522B",depth:3,charIndex:-1},{text:"output.assetsRetry",id:"outputassetsretry",depth:2,charIndex:-1},{text:"assetsRetry.domain",id:"assetsretrydomain",depth:3,charIndex:-1},{text:"assetsRetry.type",id:"assetsretrytype",depth:3,charIndex:-1},{text:"assetsRetry.max",id:"assetsretrymax",depth:3,charIndex:-1},{text:"assetsRetry.test",id:"assetsretrytest",depth:3,charIndex:-1},{text:"assetsRetry.crossOrigin",id:"assetsretrycrossorigin",depth:3,charIndex:-1},{text:"assetsRetry.onRetry",id:"assetsretryonretry",depth:3,charIndex:-1},{text:"assetsRetry.onSuccess",id:"assetsretryonsuccess",depth:3,charIndex:-1},{text:"assetsRetry.onFail",id:"assetsretryonfail",depth:3,charIndex:-1},{text:"assetsRetry.inlineScript",id:"assetsretryinlinescript",depth:3,charIndex:-1},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879",depth:3,charIndex:-1},{text:"\u4F7F\u7528\u9650\u5236",id:"\u4F7F\u7528\u9650\u5236",depth:3,charIndex:-1},{text:"\u5FAE\u524D\u7AEF\u5E94\u7528",id:"\u5FAE\u524D\u7AEF\u5E94\u7528",depth:4,charIndex:-1},{text:"\u52A8\u6001 import \u8D44\u6E90",id:"\u52A8\u6001-import-\u8D44\u6E90",depth:4,charIndex:-1},{text:"\u81EA\u5B9A\u4E49\u6A21\u7248\u4E2D\u7684\u8D44\u6E90",id:"\u81EA\u5B9A\u4E49\u6A21\u7248\u4E2D\u7684\u8D44\u6E90",depth:4,charIndex:-1},{text:"output.charset",id:"outputcharset",depth:2,charIndex:-1},{text:"output.cleanDistPath",id:"outputcleandistpath",depth:2,charIndex:-1},{text:"output.convertToRem",id:"outputconverttorem",depth:2,charIndex:-1},{text:"Boolean \u7C7B\u578B",id:"boolean-\u7C7B\u578B",depth:3,charIndex:-1},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B",depth:3,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-1",depth:3,charIndex:-1},{text:"output.copy",id:"outputcopy",depth:2,charIndex:-1},{text:"output.cssModules",id:"outputcssmodules",depth:2,charIndex:-1},{text:"cssModules.auto",id:"cssmodulesauto",depth:3,charIndex:-1},{text:"cssModules.exportLocalsConvention",id:"cssmodulesexportlocalsconvention",depth:3,charIndex:-1},{text:"output.cssModuleLocalIdentName",id:"outputcssmodulelocalidentname",depth:2,charIndex:-1},{text:"\u9ED8\u8BA4\u503C",id:"\u9ED8\u8BA4\u503C",depth:3,charIndex:-1},{text:"\u6A21\u677F\u5B57\u7B26\u4E32",id:"\u6A21\u677F\u5B57\u7B26\u4E32",depth:3,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-2",depth:3,charIndex:-1},{text:"output.dataUriLimit",id:"outputdataurilimit",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-3",depth:3,charIndex:-1},{text:"output.disableCssExtract",id:"outputdisablecssextract",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-4",depth:3,charIndex:-1},{text:"output.disableCssModuleExtension",id:"outputdisablecssmoduleextension",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-5",depth:3,charIndex:-1},{text:"\u89C4\u5219",id:"\u89C4\u5219",depth:3,charIndex:-1},{text:"\u672A\u5F00\u542F disableCssModuleExtension\uFF08\u9ED8\u8BA4\uFF09",id:"\u672A\u5F00\u542F-disablecssmoduleextension\u9ED8\u8BA4",depth:4,charIndex:-1},{text:"\u5F00\u542F disableCssModuleExtension",id:"\u5F00\u542F-disablecssmoduleextension",depth:4,charIndex:-1},{text:"output.distPath",id:"outputdistpath",depth:2,charIndex:-1},{text:"\u6839\u76EE\u5F55",id:"\u6839\u76EE\u5F55",depth:3,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-6",depth:3,charIndex:-1},{text:"output.disableMinimize",id:"outputdisableminimize",depth:2,charIndex:-1},{text:"output.disableSourceMap",id:"outputdisablesourcemap",depth:2,charIndex:-1},{text:"output.disableSvgr",id:"outputdisablesvgr",depth:2,charIndex:-1},{text:"output.disableTsChecker",id:"outputdisabletschecker",depth:2,charIndex:-1},{text:"\u963B\u585E\u7F16\u8BD1",id:"\u963B\u585E\u7F16\u8BD1",depth:3,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-7",depth:3,charIndex:-1},{text:"output.disableFilenameHash",id:"outputdisablefilenamehash",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-8",depth:3,charIndex:-1},{text:"output.disableInlineRuntimeChunk",id:"outputdisableinlineruntimechunk",depth:2,charIndex:-1},{text:"\u7981\u7528\u5185\u8054",id:"\u7981\u7528\u5185\u8054",depth:3,charIndex:-1},{text:"\u5408\u5E76\u5230\u9875\u9762\u6587\u4EF6\u4E2D",id:"\u5408\u5E76\u5230\u9875\u9762\u6587\u4EF6\u4E2D",depth:3,charIndex:-1},{text:"output.enableAssetManifest",id:"outputenableassetmanifest",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-9",depth:3,charIndex:-1},{text:"output.enableAssetFallback",id:"outputenableassetfallback",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-10",depth:3,charIndex:-1},{text:"output.enableLatestDecorators",id:"outputenablelatestdecorators",depth:2,charIndex:-1},{text:"output.enableCssModuleTSDeclaration",id:"outputenablecssmoduletsdeclaration",depth:2,charIndex:-1},{text:"Example",id:"example",depth:3,charIndex:-1},{text:"output.enableInlineScripts",id:"outputenableinlinescripts",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-11",depth:3,charIndex:-1},{text:"\u901A\u8FC7\u6B63\u5219\u5339\u914D",id:"\u901A\u8FC7\u6B63\u5219\u5339\u914D",depth:3,charIndex:-1},{text:"\u901A\u8FC7\u51FD\u6570\u5339\u914D",id:"\u901A\u8FC7\u51FD\u6570\u5339\u914D",depth:3,charIndex:-1},{text:"output.enableInlineStyles",id:"outputenableinlinestyles",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-12",depth:3,charIndex:-1},{text:"\u901A\u8FC7\u6B63\u5219\u5339\u914D",id:"\u901A\u8FC7\u6B63\u5219\u5339\u914D-1",depth:3,charIndex:-1},{text:"\u901A\u8FC7\u51FD\u6570\u5339\u914D",id:"\u901A\u8FC7\u51FD\u6570\u5339\u914D-1",depth:3,charIndex:-1},{text:"output.externals",id:"outputexternals",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-13",depth:3,charIndex:-1},{text:"output.filename",id:"outputfilename",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-14",depth:3,charIndex:-1},{text:"\u5F02\u6B65\u6A21\u5757\u7684\u6587\u4EF6\u540D",id:"\u5F02\u6B65\u6A21\u5757\u7684\u6587\u4EF6\u540D",depth:3,charIndex:-1},{text:"output.legalComments",id:"outputlegalcomments",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-15",depth:3,charIndex:-1},{text:"output.overrideBrowserslist",id:"outputoverridebrowserslist",depth:2,charIndex:-1},{text:"\u4F18\u5148\u7EA7",id:"\u4F18\u5148\u7EA7",depth:4,charIndex:-1},{text:"\u9ED8\u8BA4\u503C",id:"\u9ED8\u8BA4\u503C-1",depth:4,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-16",depth:3,charIndex:-1},{text:"\u6839\u636E\u4EA7\u7269\u7C7B\u578B\u8BBE\u7F6E",id:"\u6839\u636E\u4EA7\u7269\u7C7B\u578B\u8BBE\u7F6E",depth:4,charIndex:-1},{text:"output.polyfill",id:"outputpolyfill",depth:2,charIndex:-1},{text:"\u914D\u7F6E\u9879",id:"\u914D\u7F6E\u9879",depth:3,charIndex:-1},{text:"entry",id:"entry",depth:4,charIndex:-1},{text:"usage",id:"usage",depth:4,charIndex:-1},{text:"ua",id:"ua",depth:4,charIndex:-1},{text:"off",id:"off",depth:4,charIndex:-1},{text:"output.svgDefaultExport",id:"outputsvgdefaultexport",depth:2,charIndex:-1}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-output.mdx"},{title:"Performance Config",routePath:"/builder/api/config-performance",lang:"zh",toc:[{text:"performance.buildCache",id:"performancebuildcache",depth:2,charIndex:30},{text:"cacheDigest",id:"cachedigest",depth:3,charIndex:277},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:4,charIndex:397},{text:"performance.bundleAnalyze",id:"performancebundleanalyze",depth:2,charIndex:555},{text:"\u542F\u7528 Bundle Analyze",id:"\u542F\u7528-bundle-analyze",depth:3,charIndex:717},{text:"\u8986\u76D6\u9ED8\u8BA4\u914D\u7F6E",id:"\u8986\u76D6\u9ED8\u8BA4\u914D\u7F6E",depth:3,charIndex:972},{text:"Size \u7C7B\u578B",id:"size-\u7C7B\u578B",depth:3,charIndex:1041},{text:"\u751F\u6210 stats.json",id:"\u751F\u6210-statsjson",depth:3,charIndex:1242},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879",depth:3,charIndex:1311},{text:"performance.chunkSplit",id:"performancechunksplit",depth:2,charIndex:1503},{text:"chunkSplit.strategy",id:"chunksplitstrategy",depth:3,charIndex:1655},{text:"\u9ED8\u8BA4\u62C6\u5305\u7B56\u7565",id:"\u9ED8\u8BA4\u62C6\u5305\u7B56\u7565",depth:3,charIndex:1957},{text:"chunkSplit.minSize",id:"chunksplitminsize",depth:3,charIndex:2484},{text:"chunkSplit.maxSize",id:"chunksplitmaxsize",depth:3,charIndex:2666},{text:"chunkSplit.forceSplitting",id:"chunksplitforcesplitting",depth:3,charIndex:2854},{text:"chunkSplit.splitChunks",id:"chunksplitsplitchunks",depth:3,charIndex:-1},{text:"chunkSplit.override",id:"chunksplitoverride",depth:3,charIndex:-1},{text:"performance.dnsPrefetch",id:"performancednsprefetch",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-1",depth:3,charIndex:-1},{text:"performance.preconnect",id:"performancepreconnect",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-2",depth:3,charIndex:397},{text:"performance.prefetch",id:"performanceprefetch",depth:2,charIndex:-1},{text:"Boolean \u7C7B\u578B",id:"boolean-\u7C7B\u578B",depth:3,charIndex:-1},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B",depth:3,charIndex:-1},{text:"prefetch.type",id:"prefetchtype",depth:4,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-3",depth:4,charIndex:-1},{text:"performance.preload",id:"performancepreload",depth:2,charIndex:-1},{text:"Boolean \u7C7B\u578B",id:"boolean-\u7C7B\u578B-1",depth:3,charIndex:-1},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-1",depth:3,charIndex:-1},{text:"preload.type",id:"preloadtype",depth:4,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-4",depth:4,charIndex:397},{text:"performance.printFileSize",id:"performanceprintfilesize",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-5",depth:3,charIndex:-1},{text:"performance.profile",id:"performanceprofile",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-6",depth:3,charIndex:397},{text:"performance.removeConsole",id:"performanceremoveconsole",depth:2,charIndex:-1},{text:"\u79FB\u9664\u6240\u6709 console",id:"\u79FB\u9664\u6240\u6709-console",depth:4,charIndex:-1},{text:"\u79FB\u9664\u7279\u5B9A\u7684 console",id:"\u79FB\u9664\u7279\u5B9A\u7684-console",depth:4,charIndex:-1},{text:"performance.removeMomentLocale",id:"performanceremovemomentlocale",depth:2,charIndex:-1},{text:"performance.transformLodash",id:"performancetransformlodash",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-7",depth:3,charIndex:-1},{text:"\u5173\u95ED\u8F6C\u6362",id:"\u5173\u95ED\u8F6C\u6362",depth:3,charIndex:-1}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-performance.mdx"},{title:"Security Config",routePath:"/builder/api/config-security",lang:"zh",toc:[{text:"security.sri",id:"securitysri",depth:2,charIndex:30},{text:"SRI \u4ECB\u7ECD",id:"sri-\u4ECB\u7ECD",depth:4,charIndex:226},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:3,charIndex:463},{text:"security.checkSyntax",id:"securitychecksyntax",depth:2,charIndex:524},{text:"\u542F\u7528\u68C0\u6D4B",id:"\u542F\u7528\u68C0\u6D4B",depth:3,charIndex:622},{text:"\u9519\u8BEF\u65E5\u5FD7",id:"\u9519\u8BEF\u65E5\u5FD7",depth:3,charIndex:753},{text:"\u89E3\u51B3\u65B9\u6CD5",id:"\u89E3\u51B3\u65B9\u6CD5",depth:3,charIndex:960},{text:"\u914D\u7F6E\u9879",id:"\u914D\u7F6E\u9879",depth:3,charIndex:1164},{text:"checkSyntax.targets",id:"checksyntaxtargets",depth:4,charIndex:1170},{text:"checkSyntax.ecmaVersion",id:"checksyntaxecmaversion",depth:4,charIndex:1645},{text:"checkSyntax.exclude",id:"checksyntaxexclude",depth:4,charIndex:1967}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-security.mdx"},{title:"Source Config",routePath:"/builder/api/config-source",lang:"zh",toc:[{text:"source.alias",id:"sourcealias",depth:2,charIndex:38},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B",depth:3,charIndex:271},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B",depth:3,charIndex:407},{text:"\u7CBE\u786E\u5339\u914D",id:"\u7CBE\u786E\u5339\u914D",depth:3,charIndex:510},{text:"\u5904\u7406 npm \u5305",id:"\u5904\u7406-npm-\u5305",depth:3,charIndex:618},{text:"source.aliasStrategy",id:"sourcealiasstrategy",depth:2,charIndex:894},{text:"prefer-tsconfig",id:"prefer-tsconfig",depth:3,charIndex:1060},{text:"prefer-alias",id:"prefer-alias",depth:3,charIndex:1384},{text:"source.include",id:"sourceinclude",depth:2,charIndex:1737},{text:"\u7F16\u8BD1 npm \u5305",id:"\u7F16\u8BD1-npm-\u5305",depth:3,charIndex:2076},{text:"\u7F16\u8BD1 npm \u5305\u7684\u5B50\u4F9D\u8D56",id:"\u7F16\u8BD1-npm-\u5305\u7684\u5B50\u4F9D\u8D56",depth:3,charIndex:2323},{text:"\u7F16\u8BD1 Monorepo \u4E2D\u7684\u5176\u4ED6\u5E93",id:"\u7F16\u8BD1-monorepo-\u4E2D\u7684\u5176\u4ED6\u5E93",depth:3,charIndex:2520},{text:"\u7F16\u8BD1 CommonJS \u6A21\u5757",id:"\u7F16\u8BD1-commonjs-\u6A21\u5757",depth:3,charIndex:2615},{text:"\u5339\u914D Symlink",id:"\u5339\u914D-symlink",depth:3,charIndex:2861},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879",depth:3,charIndex:3105},{text:"source.exclude",id:"sourceexclude",depth:2,charIndex:3312},{text:"source.define",id:"sourcedefine",depth:2,charIndex:3451},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:3,charIndex:3797},{text:"source.globalVars",id:"sourceglobalvars",depth:2,charIndex:3824},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-1",depth:3,charIndex:3930},{text:"\u51FD\u6570\u7528\u6CD5",id:"\u51FD\u6570\u7528\u6CD5",depth:3,charIndex:4010},{text:"\u4E0E define \u7684\u533A\u522B",id:"\u4E0E-define-\u7684\u533A\u522B",depth:3,charIndex:4101},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879-1",depth:3,charIndex:4266},{text:"source.moduleScopes",id:"sourcemodulescopes",depth:2,charIndex:4422},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-2",depth:3,charIndex:4568},{text:"Array \u7C7B\u578B",id:"array-\u7C7B\u578B",depth:3,charIndex:4710},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-1",depth:3,charIndex:4778},{text:"source.transformImport",id:"sourcetransformimport",depth:2,charIndex:4834},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-3",depth:3,charIndex:5217},{text:"\u7981\u7528\u9ED8\u8BA4\u914D\u7F6E",id:"\u7981\u7528\u9ED8\u8BA4\u914D\u7F6E",depth:3,charIndex:5263},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:3,charIndex:5470},{text:"libraryName",id:"libraryname",depth:4,charIndex:5475},{text:"libraryDirectory",id:"librarydirectory",depth:4,charIndex:5568},{text:"style",id:"style",depth:4,charIndex:5712},{text:"styleLibraryDirectory",id:"stylelibrarydirectory",depth:4,charIndex:5890},{text:"camelToDashComponentName",id:"cameltodashcomponentname",depth:4,charIndex:6076},{text:"transformToDefaultImport",id:"transformtodefaultimport",depth:4,charIndex:6184},{text:"customName",id:"customname",depth:4,charIndex:6273},{text:"customStyleName",id:"customstylename",depth:4,charIndex:6741},{text:"source.preEntry",id:"sourcepreentry",depth:2,charIndex:7217},{text:"\u6DFB\u52A0\u5355\u4E2A\u811A\u672C",id:"\u6DFB\u52A0\u5355\u4E2A\u811A\u672C",depth:4,charIndex:7354},{text:"\u6DFB\u52A0\u5168\u5C40\u6837\u5F0F",id:"\u6DFB\u52A0\u5168\u5C40\u6837\u5F0F",depth:4,charIndex:7506},{text:"\u6DFB\u52A0\u591A\u4E2A\u811A\u672C",id:"\u6DFB\u52A0\u591A\u4E2A\u811A\u672C",depth:4,charIndex:7593},{text:"source.resolveExtensionPrefix",id:"sourceresolveextensionprefix",depth:2,charIndex:7645},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-4",depth:3,charIndex:7836},{text:"\u6839\u636E\u4EA7\u7269\u7C7B\u578B\u8BBE\u7F6E",id:"\u6839\u636E\u4EA7\u7269\u7C7B\u578B\u8BBE\u7F6E",depth:4,charIndex:7951},{text:"source.resolveMainFields",id:"sourceresolvemainfields",depth:2,charIndex:8192},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-5",depth:3,charIndex:8324},{text:"\u6839\u636E\u4EA7\u7269\u7C7B\u578B\u8BBE\u7F6E",id:"\u6839\u636E\u4EA7\u7269\u7C7B\u578B\u8BBE\u7F6E-1",depth:4,charIndex:8331}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-source.mdx"},{title:"Tools Config",routePath:"/builder/api/config-tools",lang:"zh",toc:[{text:"tools.autoprefixer",id:"toolsautoprefixer",depth:2,charIndex:32},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B",depth:3,charIndex:136},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B",depth:3,charIndex:218},{text:"tools.babel",id:"toolsbabel",depth:2,charIndex:316},{text:"\u4F7F\u7528\u573A\u666F",id:"\u4F7F\u7528\u573A\u666F",depth:3,charIndex:415},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-1",depth:3,charIndex:682},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-1",depth:3,charIndex:938},{text:"\u5DE5\u5177\u51FD\u6570",id:"\u5DE5\u5177\u51FD\u6570",depth:3,charIndex:1117},{text:"addPlugins",id:"addplugins",depth:4,charIndex:1168},{text:"addPresets",id:"addpresets",depth:4,charIndex:1241},{text:"removePlugins",id:"removeplugins",depth:4,charIndex:1332},{text:"removePresets",id:"removepresets",depth:4,charIndex:1447},{text:"modifyPresetEnvOptions",id:"modifypresetenvoptions",depth:4,charIndex:1564},{text:"modifyPresetReactOptions",id:"modifypresetreactoptions",depth:4,charIndex:1684},{text:"addIncludes",id:"addincludes",depth:4,charIndex:1810},{text:"addExcludes",id:"addexcludes",depth:4,charIndex:1861},{text:"\u8C03\u8BD5 Babel \u914D\u7F6E",id:"\u8C03\u8BD5-babel-\u914D\u7F6E",depth:3,charIndex:1913},{text:"tools.bundlerChain",id:"toolsbundlerchain",depth:2,charIndex:2114},{text:"tools.cssExtract",id:"toolscssextract",depth:2,charIndex:2802},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-2",depth:3,charIndex:2935},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-2",depth:3,charIndex:2996},{text:"tools.cssLoader",id:"toolscssloader",depth:2,charIndex:3114},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-3",depth:3,charIndex:3333},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-3",depth:3,charIndex:3395},{text:"tools.devServer",id:"toolsdevserver",depth:2,charIndex:3477},{text:"\u9009\u9879",id:"\u9009\u9879",depth:3,charIndex:3666},{text:"after",id:"after",depth:4,charIndex:3671},{text:"before",id:"before",depth:4,charIndex:3955},{text:"client",id:"client",depth:4,charIndex:4016},{text:"compress",id:"compress",depth:4,charIndex:4091},{text:"devMiddleware",id:"devmiddleware",depth:4,charIndex:4194},{text:"headers",id:"headers",depth:4,charIndex:4287},{text:"historyApiFallback",id:"historyapifallback",depth:4,charIndex:4343},{text:"hot",id:"hot",depth:4,charIndex:4546},{text:"https",id:"https",depth:4,charIndex:4617},{text:"liveReload",id:"livereload",depth:4,charIndex:4811},{text:"setupMiddlewares",id:"setupmiddlewares",depth:4,charIndex:4972},{text:"proxy",id:"proxy",depth:4,charIndex:5257},{text:"watch",id:"watch",depth:4,charIndex:5772},{text:"tools.htmlPlugin",id:"toolshtmlplugin",depth:2,charIndex:5845},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-4",depth:3,charIndex:5983},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-4",depth:3,charIndex:6060},{text:"Boolean \u7C7B\u578B",id:"boolean-\u7C7B\u578B",depth:3,charIndex:6213},{text:"\u7981\u7528 JS / CSS \u538B\u7F29",id:"\u7981\u7528-js--css-\u538B\u7F29",depth:3,charIndex:6291},{text:"tools.less",id:"toolsless",depth:2,charIndex:6564},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-5",depth:3,charIndex:6652},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-5",depth:3,charIndex:6767},{text:"\u4FEE\u6539 Less \u7248\u672C",id:"\u4FEE\u6539-less-\u7248\u672C",depth:3,charIndex:6876},{text:"\u5DE5\u5177\u51FD\u6570",id:"\u5DE5\u5177\u51FD\u6570-1",depth:3,charIndex:7006},{text:"addExcludes",id:"addexcludes-1",depth:4,charIndex:7013},{text:"tools.minifyCss",id:"toolsminifycss",depth:2,charIndex:7136},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-6",depth:3,charIndex:7327},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-6",depth:3,charIndex:7432},{text:"tools.postcss",id:"toolspostcss",depth:2,charIndex:7526},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-7",depth:3,charIndex:7644},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-7",depth:3,charIndex:7913},{text:"\u5DE5\u5177\u51FD\u6570",id:"\u5DE5\u5177\u51FD\u6570-2",depth:3,charIndex:8019},{text:"addPlugins",id:"addplugins-1",depth:4,charIndex:8026},{text:"tools.pug",id:"toolspug",depth:2,charIndex:8254},{text:"Boolean \u7C7B\u578B",id:"boolean-\u7C7B\u578B-1",depth:3,charIndex:8340},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-8",depth:3,charIndex:8458},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-8",depth:3,charIndex:8550},{text:"tools.sass",id:"toolssass",depth:2,charIndex:8638},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-9",depth:3,charIndex:8726},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-9",depth:3,charIndex:8841},{text:"\u4FEE\u6539 Sass \u7248\u672C",id:"\u4FEE\u6539-sass-\u7248\u672C",depth:3,charIndex:8950},{text:"\u5DE5\u5177\u51FD\u6570",id:"\u5DE5\u5177\u51FD\u6570-3",depth:3,charIndex:9085},{text:"addExcludes",id:"addexcludes-2",depth:4,charIndex:9092},{text:"tools.styleLoader",id:"toolsstyleloader",depth:2,charIndex:9215},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-10",depth:3,charIndex:9395},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-10",depth:3,charIndex:9456},{text:"tools.styledComponents",id:"toolsstyledcomponents",depth:2,charIndex:9538},{text:"tools.terser",id:"toolsterser",depth:2,charIndex:9856},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-11",depth:3,charIndex:10056},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-11",depth:3,charIndex:10154},{text:"tools.tsLoader",id:"toolstsloader",depth:2,charIndex:10299},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-12",depth:3,charIndex:10680},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-12",depth:3,charIndex:10783},{text:"\u5DE5\u5177\u51FD\u6570",id:"\u5DE5\u5177\u51FD\u6570-4",depth:3,charIndex:10888},{text:"addIncludes",id:"addincludes-1",depth:4,charIndex:10895},{text:"addExcludes",id:"addexcludes-3",depth:4,charIndex:10946},{text:"tools.tsChecker",id:"toolstschecker",depth:2,charIndex:10998},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-13",depth:3,charIndex:11152},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-13",depth:3,charIndex:11209},{text:"tools.webpack",id:"toolswebpack",depth:2,charIndex:11300},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-14",depth:3,charIndex:11504},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-14",depth:3,charIndex:11614},{text:"\u5DE5\u5177\u96C6\u5408",id:"\u5DE5\u5177\u96C6\u5408",depth:3,charIndex:11786},{text:"env",id:"env",depth:4,charIndex:11829},{text:"isProd",id:"isprod",depth:4,charIndex:11938},{text:"target",id:"target",depth:4,charIndex:12005},{text:"isServer",id:"isserver",depth:4,charIndex:12103},{text:"isWebWorker",id:"iswebworker",depth:4,charIndex:12179},{text:"webpack",id:"webpack",depth:4,charIndex:12270},{text:"HtmlWebpackPlugin",id:"htmlwebpackplugin",depth:4,charIndex:12343},{text:"addRules",id:"addrules",depth:4,charIndex:12445},{text:"prependPlugins",id:"prependplugins",depth:4,charIndex:12538},{text:"appendPlugins",id:"appendplugins",depth:4,charIndex:12673},{text:"removePlugin",id:"removeplugin",depth:4,charIndex:12808},{text:"mergeConfig",id:"mergeconfig",depth:4,charIndex:12942},{text:"getCompiledPath",id:"getcompiledpath",depth:4,charIndex:13051},{text:"tools.webpackChain",id:"toolswebpackchain",depth:2,charIndex:13159},{text:"\u5DE5\u5177\u96C6\u5408",id:"\u5DE5\u5177\u96C6\u5408-1",depth:3,charIndex:13618},{text:"env",id:"env-1",depth:4,charIndex:13625},{text:"isProd",id:"isprod-1",depth:4,charIndex:13734},{text:"target",id:"target-1",depth:4,charIndex:13801},{text:"isServer",id:"isserver-1",depth:4,charIndex:13899},{text:"isWebWorker",id:"iswebworker-1",depth:4,charIndex:13975},{text:"webpack",id:"webpack-1",depth:4,charIndex:14066},{text:"HtmlWebpackPlugin",id:"htmlwebpackplugin-1",depth:4,charIndex:14139},{text:"getCompiledPath",id:"getcompiledpath-1",depth:4,charIndex:14241},{text:"CHAIN_ID",id:"chain_id",depth:4,charIndex:14483},{text:"CHAIN_ID.RULE",id:"chain_idrule",depth:4,charIndex:14678},{text:"CHAIN_ID.ONE_OF",id:"chain_idone_of",depth:4,charIndex:15128},{text:"CHAIN_ID.USE",id:"chain_iduse",depth:4,charIndex:15406},{text:"CHAIN_ID.PLUGIN",id:"chain_idplugin",depth:4,charIndex:16417},{text:"CHAIN_ID.MINIMIZER",id:"chain_idminimizer",depth:4,charIndex:17663},{text:"\u4F7F\u7528\u793A\u4F8B",id:"\u4F7F\u7528\u793A\u4F8B",depth:3,charIndex:17910},{text:"tools.rspack",id:"toolsrspack",depth:2,charIndex:17946},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-15",depth:3,charIndex:18070},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-15",depth:3,charIndex:18178},{text:"\u5DE5\u5177\u96C6\u5408",id:"\u5DE5\u5177\u96C6\u5408-2",depth:3,charIndex:18346},{text:"env",id:"env-2",depth:4,charIndex:18389},{text:"isProd",id:"isprod-2",depth:4,charIndex:18498},{text:"target",id:"target-2",depth:4,charIndex:18565},{text:"isServer",id:"isserver-2",depth:4,charIndex:18663},{text:"isWebWorker",id:"iswebworker-2",depth:4,charIndex:18739},{text:"rspack",id:"rspack",depth:4,charIndex:18830},{text:"addRules",id:"addrules-1",depth:4,charIndex:18906},{text:"prependPlugins",id:"prependplugins-1",depth:4,charIndex:18998},{text:"appendPlugins",id:"appendplugins-1",depth:4,charIndex:19130},{text:"removePlugin",id:"removeplugin-1",depth:4,charIndex:19262},{text:"mergeConfig",id:"mergeconfig-1",depth:4,charIndex:19388},{text:"getCompiledPath",id:"getcompiledpath-2",depth:4,charIndex:19494}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-tools.mdx"},{title:"API",routePath:"/builder/api/",lang:"zh",toc:[],frontmatter:{overview:!0},version:"",_relativePath:"zh/api/index.mdx"},{title:"Plugin Core",routePath:"/builder/api/plugin-core",lang:"zh",toc:[{text:"BuilderPlugin",id:"builderplugin",depth:2,charIndex:35},{text:"\u524D\u7F6E\u63D2\u4EF6",id:"\u524D\u7F6E\u63D2\u4EF6",depth:3,charIndex:336},{text:"\u540E\u7F6E\u63D2\u4EF6",id:"\u540E\u7F6E\u63D2\u4EF6",depth:3,charIndex:454},{text:"\u79FB\u9664\u63D2\u4EF6",id:"\u79FB\u9664\u63D2\u4EF6",depth:3,charIndex:546},{text:"BuilderPluginAPI",id:"builderpluginapi",depth:2,charIndex:652},{text:"\u9002\u7528\u4E8E webpack-provider \u7684\u63D2\u4EF6",id:"\u9002\u7528\u4E8E-webpack-provider-\u7684\u63D2\u4EF6",depth:3,charIndex:859},{text:"\u9002\u7528\u4E8E rspack-provider \u7684\u63D2\u4EF6",id:"\u9002\u7528\u4E8E-rspack-provider-\u7684\u63D2\u4EF6",depth:3,charIndex:979},{text:"\u540C\u65F6\u9002\u7528\u4E8E webpack-provider \u548C rspack-provider \u7684\u63D2\u4EF6",id:"\u540C\u65F6\u9002\u7528\u4E8E-webpack-provider-\u548C-rspack-provider-\u7684\u63D2\u4EF6",depth:3,charIndex:1096},{text:"api.context",id:"apicontext",depth:2,charIndex:1423},{text:"api.getBuilderConfig",id:"apigetbuilderconfig",depth:2,charIndex:1544},{text:"api.getNormalizedConfig",id:"apigetnormalizedconfig",depth:2,charIndex:1647},{text:"api.isPluginExists",id:"apiispluginexists",depth:2,charIndex:1864},{text:"api.getHTMLPaths",id:"apigethtmlpaths",depth:2,charIndex:1925}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/plugin-core.mdx"},{title:"Plugin Hooks",routePath:"/builder/api/plugin-hooks",lang:"zh",toc:[{text:"\u6982\u89C8",id:"\u6982\u89C8",depth:2,charIndex:32},{text:"\u901A\u7528\u94A9\u5B50",id:"\u901A\u7528\u94A9\u5B50",depth:2,charIndex:668},{text:"modifyBuilderConfig",id:"modifybuilderconfig",depth:3,charIndex:676},{text:"modifyBundlerChain `\u5B9E\u9A8C\u6027`",id:"modifybundlerchain-\u5B9E\u9A8C\u6027",depth:3,charIndex:-1},{text:"modifyWebpackChain",id:"modifywebpackchain",depth:3,charIndex:1249},{text:"modifyWebpackConfig",id:"modifywebpackconfig",depth:3,charIndex:1357},{text:"modifyRspackConfig",id:"modifyrspackconfig",depth:3,charIndex:1529},{text:"onBeforeCreateCompiler",id:"onbeforecreatecompiler",depth:3,charIndex:1663},{text:"onAfterCreateCompiler",id:"onaftercreatecompiler",depth:3,charIndex:2048},{text:"\u6784\u5EFA\u94A9\u5B50",id:"\u6784\u5EFA\u94A9\u5B50",depth:2,charIndex:2363},{text:"onBeforeBuild",id:"onbeforebuild",depth:3,charIndex:2371},{text:"onAfterBuild",id:"onafterbuild",depth:3,charIndex:2620},{text:"\u5F00\u53D1\u670D\u52A1\u94A9\u5B50",id:"\u5F00\u53D1\u670D\u52A1\u94A9\u5B50",depth:2,charIndex:2803},{text:"onBeforeStartDevServer",id:"onbeforestartdevserver",depth:3,charIndex:2813},{text:"onAfterStartDevServer",id:"onafterstartdevserver",depth:3,charIndex:2876},{text:"onDevCompileDone",id:"ondevcompiledone",depth:3,charIndex:2965},{text:"\u5176\u4ED6\u94A9\u5B50",id:"\u5176\u4ED6\u94A9\u5B50",depth:2,charIndex:3057},{text:"onExit",id:"onexit",depth:3,charIndex:3065}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/plugin-hooks.mdx"},{title:"\u6D4F\u89C8\u5668\u517C\u5BB9\u6027",routePath:"/builder/guide/advanced/browser-compatibility",lang:"zh",toc:[{text:"\u8BBE\u7F6E\u6D4F\u89C8\u5668\u8303\u56F4",id:"\u8BBE\u7F6E\u6D4F\u89C8\u5668\u8303\u56F4",depth:2,charIndex:40},{text:"\u80CC\u666F\u77E5\u8BC6",id:"\u80CC\u666F\u77E5\u8BC6",depth:2,charIndex:331},{text:"\u8BED\u6CD5\u964D\u7EA7\u548C API \u964D\u7EA7",id:"\u8BED\u6CD5\u964D\u7EA7\u548C-api-\u964D\u7EA7",depth:3,charIndex:375},{text:"\u8BED\u6CD5\u8F6C\u8BD1",id:"\u8BED\u6CD5\u8F6C\u8BD1",depth:3,charIndex:646},{text:"API Polyfill",id:"api-polyfill",depth:3,charIndex:1385},{text:"\u964D\u7EA7\u65B9\u5F0F",id:"\u964D\u7EA7\u65B9\u5F0F",depth:2,charIndex:1994},{text:"\u964D\u7EA7\u5F53\u524D\u9879\u76EE\u4EE3\u7801",id:"\u964D\u7EA7\u5F53\u524D\u9879\u76EE\u4EE3\u7801",depth:3,charIndex:2296},{text:"\u964D\u7EA7\u7B2C\u4E09\u65B9\u4F9D\u8D56",id:"\u964D\u7EA7\u7B2C\u4E09\u65B9\u4F9D\u8D56",depth:3,charIndex:2356},{text:"\u964D\u7EA7\u975E\u5F53\u524D\u9879\u76EE\u7684\u4EE3\u7801",id:"\u964D\u7EA7\u975E\u5F53\u524D\u9879\u76EE\u7684\u4EE3\u7801",depth:3,charIndex:2531},{text:"Polyfill \u65B9\u6848",id:"polyfill-\u65B9\u6848",depth:2,charIndex:2658},{text:"entry \u65B9\u6848",id:"entry-\u65B9\u6848",depth:3,charIndex:2854},{text:"usage \u65B9\u6848",id:"usage-\u65B9\u6848",depth:3,charIndex:3078},{text:"\u4E0D\u6CE8\u5165 Polyfill",id:"\u4E0D\u6CE8\u5165-polyfill",depth:3,charIndex:3412}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/browser-compatibility.md"},{title:"\u8BBE\u7F6E\u6D4F\u89C8\u5668\u8303\u56F4",routePath:"/builder/guide/advanced/browserslist",lang:"zh",toc:[{text:"\u4EC0\u4E48\u662F Browserslist",id:"\u4EC0\u4E48\u662F-browserslist",depth:2,charIndex:52},{text:"\u8BBE\u7F6E Browserslist",id:"\u8BBE\u7F6E-browserslist",depth:2,charIndex:666},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:3,charIndex:753},{text:"\u751F\u6548\u8303\u56F4",id:"\u751F\u6548\u8303\u56F4",depth:3,charIndex:828},{text:"\u4F7F\u7528 output.overrideBrowserslist \u914D\u7F6E",id:"\u4F7F\u7528-outputoverridebrowserslist-\u914D\u7F6E",depth:3,charIndex:1036},{text:"\u5E38\u7528\u7684\u6D4F\u89C8\u5668\u8303\u56F4",id:"\u5E38\u7528\u7684\u6D4F\u89C8\u5668\u8303\u56F4",depth:2,charIndex:1533},{text:"\u684C\u9762\u7AEF PC \u573A\u666F",id:"\u684C\u9762\u7AEF-pc-\u573A\u666F",depth:3,charIndex:1578},{text:"\u79FB\u52A8\u7AEF H5 \u573A\u666F",id:"\u79FB\u52A8\u7AEF-h5-\u573A\u666F",depth:3,charIndex:1815},{text:"Browserslist \u9ED8\u8BA4\u503C",id:"browserslist-\u9ED8\u8BA4\u503C",depth:2,charIndex:2022},{text:"Web \u4EA7\u7269",id:"web-\u4EA7\u7269",depth:3,charIndex:2128},{text:"Node \u4EA7\u7269",id:"node-\u4EA7\u7269",depth:3,charIndex:2194},{text:"Web Worker \u4EA7\u7269",id:"web-worker-\u4EA7\u7269",depth:3,charIndex:2240},{text:"Modern Web \u4EA7\u7269",id:"modern-web-\u4EA7\u7269",depth:3,charIndex:2291},{text:"\u67E5\u8BE2\u6D4F\u89C8\u5668\u652F\u6301\u60C5\u51B5",id:"\u67E5\u8BE2\u6D4F\u89C8\u5668\u652F\u6301\u60C5\u51B5",depth:2,charIndex:2353}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/browserslist.md"},{title:"\u4FEE\u6539 webpack \u914D\u7F6E",routePath:"/builder/guide/advanced/custom-webpack-config",lang:"zh",toc:[{text:"\u4FEE\u6539 webpack \u914D\u7F6E\u5BF9\u8C61",id:"\u4FEE\u6539-webpack-\u914D\u7F6E\u5BF9\u8C61",depth:2,charIndex:70},{text:"\u4F7F\u7528 webpack-chain",id:"\u4F7F\u7528-webpack-chain",depth:2,charIndex:254},{text:"tools.webpackChain \u914D\u7F6E\u9879",id:"toolswebpackchain-\u914D\u7F6E\u9879",depth:3,charIndex:395},{text:"webpack-chain \u57FA\u7840\u77E5\u8BC6",id:"webpack-chain-\u57FA\u7840\u77E5\u8BC6",depth:2,charIndex:633},{text:"webpack-chain \u662F\u5982\u4F55\u5FEB\u901F\u5B9A\u4F4D\u7684",id:"webpack-chain-\u662F\u5982\u4F55\u5FEB\u901F\u5B9A\u4F4D\u7684",depth:3,charIndex:707},{text:"webpack-chain id \u7684\u7C7B\u578B",id:"webpack-chain-id-\u7684\u7C7B\u578B",depth:3,charIndex:997},{text:"webpack-chain \u793A\u4F8B",id:"webpack-chain-\u793A\u4F8B",depth:2,charIndex:1480},{text:"\u65B0\u589E/\u4FEE\u6539/\u5220\u9664 loader",id:"\u65B0\u589E\u4FEE\u6539\u5220\u9664-loader",depth:3,charIndex:1500},{text:"\u65B0\u589E/\u4FEE\u6539/\u5220\u9664 plugin",id:"\u65B0\u589E\u4FEE\u6539\u5220\u9664-plugin",depth:3,charIndex:1521},{text:"\u6839\u636E\u4E0D\u540C\u73AF\u5883\u4FEE\u6539\u914D\u7F6E",id:"\u6839\u636E\u4E0D\u540C\u73AF\u5883\u4FEE\u6539\u914D\u7F6E",depth:3,charIndex:1542}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/custom-webpack-config.md"},{title:"\u73AF\u5883\u53D8\u91CF",routePath:"/builder/guide/advanced/define",lang:"zh",toc:[{text:"\u9ED8\u8BA4\u73AF\u5883\u53D8\u91CF",id:"\u9ED8\u8BA4\u73AF\u5883\u53D8\u91CF",depth:2,charIndex:75},{text:"process.env.NODE_ENV",id:"processenvnode_env",depth:3,charIndex:85},{text:"process.env.ASSET_PREFIX",id:"processenvasset_prefix",depth:3,charIndex:334},{text:"\u4F7F\u7528 define \u914D\u7F6E\u9879",id:"\u4F7F\u7528-define-\u914D\u7F6E\u9879",depth:2,charIndex:673},{text:"\u66FF\u6362\u8868\u8FBE\u5F0F",id:"\u66FF\u6362\u8868\u8FBE\u5F0F",depth:3,charIndex:877},{text:"process.env \u6CE8\u5165\u65B9\u5F0F",id:"processenv-\u6CE8\u5165\u65B9\u5F0F",depth:3,charIndex:1282},{text:"\u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF",id:"\u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF",depth:2,charIndex:1548},{text:"\u58F0\u660E\u73AF\u5883\u53D8\u91CF\u7C7B\u578B",id:"\u58F0\u660E\u73AF\u5883\u53D8\u91CF\u7C7B\u578B",depth:2,charIndex:1790},{text:"Tree Shaking",id:"tree-shaking",depth:2,charIndex:1965},{text:"\u6E90\u7801\u5185\u8054\u6D4B\u8BD5",id:"\u6E90\u7801\u5185\u8054\u6D4B\u8BD5",depth:2,charIndex:2202}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/define.md"},{title:"\u6A21\u5757\u70ED\u66F4\u65B0",routePath:"/builder/guide/advanced/hmr",lang:"zh",toc:[{text:"\u542F\u7528 HMR",id:"\u542F\u7528-hmr",depth:2,charIndex:213},{text:"\u81EA\u5B9A\u4E49 HMR URL",id:"\u81EA\u5B9A\u4E49-hmr-url",depth:2,charIndex:329},{text:"\u9ED8\u8BA4\u914D\u7F6E",id:"\u9ED8\u8BA4\u914D\u7F6E",depth:3,charIndex:472},{text:"\u7EBF\u4E0A\u4EE3\u7406",id:"\u7EBF\u4E0A\u4EE3\u7406",depth:3,charIndex:540},{text:"Live reloading \u548C Hot reloading \u7684\u533A\u522B",id:"live-reloading-\u548C-hot-reloading-\u7684\u533A\u522B",depth:2,charIndex:650},{text:"\u5E38\u89C1\u95EE\u9898",id:"\u5E38\u89C1\u95EE\u9898",depth:2,charIndex:980}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/hmr.md"},{title:"\u5F00\u542F REM \u9002\u914D",routePath:"/builder/guide/advanced/rem",lang:"zh",toc:[{text:"\u5F00\u542F REM \u7684\u9002\u914D\u80FD\u529B",id:"\u5F00\u542F-rem-\u7684\u9002\u914D\u80FD\u529B",depth:2,charIndex:91},{text:"CSS \u5C5E\u6027\u503C\u8F6C\u6362",id:"css-\u5C5E\u6027\u503C\u8F6C\u6362",depth:2,charIndex:190},{text:"\u6839\u5143\u7D20\u5B57\u4F53\u5927\u5C0F\u8BA1\u7B97",id:"\u6839\u5143\u7D20\u5B57\u4F53\u5927\u5C0F\u8BA1\u7B97",depth:2,charIndex:356},{text:"\u81EA\u5B9A\u4E49\u6700\u5927\u6839\u5143\u7D20\u5B57\u4F53\u503C",id:"\u81EA\u5B9A\u4E49\u6700\u5927\u6839\u5143\u7D20\u5B57\u4F53\u503C",depth:2,charIndex:543},{text:"\u5982\u4F55\u5224\u65AD REM \u662F\u5426\u751F\u6548\uFF1F",id:"\u5982\u4F55\u5224\u65AD-rem-\u662F\u5426\u751F\u6548",depth:2,charIndex:717},{text:"\u5982\u4F55\u83B7\u53D6\u9875\u9762\u5B9E\u9645\u751F\u6548\u7684 rootFontSize \u503C\uFF1F",id:"\u5982\u4F55\u83B7\u53D6\u9875\u9762\u5B9E\u9645\u751F\u6548\u7684-rootfontsize-\u503C",depth:2,charIndex:848}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/rem.md"},{title:"\u4F7F\u7528 Rspack",routePath:"/builder/guide/advanced/rspack-start",lang:"zh",toc:[{text:"\u542F\u7528 Rspack",id:"\u542F\u7528-rspack",depth:2,charIndex:253},{text:"\u5728 Modern.js \u6846\u67B6\u4E2D\u542F\u7528",id:"\u5728-modernjs-\u6846\u67B6\u4E2D\u542F\u7528",depth:3,charIndex:266},{text:"\u5728\u524D\u7AEF\u6846\u67B6\u4E2D\u63A5\u5165",id:"\u5728\u524D\u7AEF\u6846\u67B6\u4E2D\u63A5\u5165",depth:3,charIndex:356},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879",depth:2,charIndex:530},{text:"\u4ECE webpack \u8FC1\u79FB\u5230 Rspack",id:"\u4ECE-webpack-\u8FC1\u79FB\u5230-rspack",depth:2,charIndex:1163},{text:"1. Builder \u914D\u7F6E\u5DEE\u5F02",id:"1-builder-\u914D\u7F6E\u5DEE\u5F02",depth:3,charIndex:1332},{text:"Source Config",id:"source-config",depth:4,charIndex:1396},{text:"Html Config",id:"html-config",depth:4,charIndex:1550},{text:"Security Config",id:"security-config",depth:4,charIndex:1623},{text:"Dev Config",id:"dev-config",depth:4,charIndex:1706},{text:"Output Config",id:"output-config",depth:4,charIndex:1775},{text:"Experiments Config",id:"experiments-config",depth:4,charIndex:1897},{text:"Performance Config",id:"performance-config",depth:4,charIndex:1987},{text:"Tools Config",id:"tools-config",depth:4,charIndex:2116},{text:"2. \u4ECE tools.webpackChain \u8FC1\u79FB\u81F3 tools.bundlerChain",id:"2-\u4ECE-toolswebpackchain-\u8FC1\u79FB\u81F3-toolsbundlerchain",depth:3,charIndex:2431},{text:"CHAIN_ID \u5DEE\u5F02",id:"chain_id-\u5DEE\u5F02",depth:4,charIndex:2686},{text:"3. \u4ECE tools.webpack \u8FC1\u79FB\u81F3 tools.rspack",id:"3-\u4ECE-toolswebpack-\u8FC1\u79FB\u81F3-toolsrspack",depth:3,charIndex:2810},{text:"4. Babel \u914D\u7F6E\u8FC1\u79FB",id:"4-babel-\u914D\u7F6E\u8FC1\u79FB",depth:3,charIndex:3014},{text:"5. SWC \u914D\u7F6E\u652F\u6301",id:"5-swc-\u914D\u7F6E\u652F\u6301",depth:3,charIndex:3910},{text:"6. Webpack Plugin \u63D2\u4EF6\u8FC1\u79FB",id:"6-webpack-plugin-\u63D2\u4EF6\u8FC1\u79FB",depth:3,charIndex:4038},{text:"7. CSS Modules \u914D\u7F6E\u8FC1\u79FB",id:"7-css-modules-\u914D\u7F6E\u8FC1\u79FB",depth:3,charIndex:4421},{text:"Rspack \u6027\u80FD\u5206\u6790",id:"rspack-\u6027\u80FD\u5206\u6790",depth:2,charIndex:4565},{text:"\u5BF9\u6BD4 Rspack CLI",id:"\u5BF9\u6BD4-rspack-cli",depth:2,charIndex:4952},{text:"\u5E38\u89C1\u95EE\u9898",id:"\u5E38\u89C1\u95EE\u9898",depth:2,charIndex:6007},{text:"\u542F\u7528 Rspack \u6784\u5EFA\u540E\uFF0C\u6027\u80FD\u6CA1\u6709\u9884\u671F\u7684\u5FEB\uFF1F",id:"\u542F\u7528-rspack-\u6784\u5EFA\u540E\u6027\u80FD\u6CA1\u6709\u9884\u671F\u7684\u5FEB",depth:3,charIndex:6015}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/rspack-start.mdx"},{title:"\u4F7F\u7528 Storybook",routePath:"/builder/guide/advanced/storybook",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:391},{text:"\u5728 Modern.js \u9879\u76EE\u4E2D\u4F7F\u7528, \u6CA1\u6709\u4F7F\u7528\u8FC7 Storybook \u63D2\u4EF6(@modern-js/plugin-storybook)",id:"\u5728-modernjs-\u9879\u76EE\u4E2D\u4F7F\u7528-\u6CA1\u6709\u4F7F\u7528\u8FC7-storybook-\u63D2\u4EF6modern-jsplugin-storybook",depth:3,charIndex:591},{text:"\u4ECE @modern-js/plugin-storybook \u8FC1\u79FB",id:"\u4ECE-modern-jsplugin-storybook-\u8FC1\u79FB",depth:3,charIndex:950},{text:"\u539F\u751F Storybook \u9879\u76EE\uFF0C\u6CA1\u6709\u4F7F\u7528 Modern.js",id:"\u539F\u751F-storybook-\u9879\u76EE\u6CA1\u6709\u4F7F\u7528-modernjs",depth:3,charIndex:1401},{text:"\u5F00\u542F Rspack \u6784\u5EFA",id:"\u5F00\u542F-rspack-\u6784\u5EFA",depth:2,charIndex:1650},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:1861},{text:"configPath",id:"configpath",depth:3,charIndex:1898},{text:"bundler",id:"bundler",depth:3,charIndex:1975},{text:"builderConfig",id:"builderconfig",depth:3,charIndex:2187},{text:"\u547D\u4EE4\u884C",id:"\u547D\u4EE4\u884C",depth:2,charIndex:2325},{text:"storybook dev",id:"storybook-dev",depth:3,charIndex:2379},{text:"storybook build",id:"storybook-build",depth:3,charIndex:2471},{text:"\u914D\u7F6E\u6587\u4EF6",id:"\u914D\u7F6E\u6587\u4EF6",depth:2,charIndex:2575},{text:"Storybook addon \u517C\u5BB9\u6027",id:"storybook-addon-\u517C\u5BB9\u6027",depth:2,charIndex:2669},{text:"\u6536\u76CA",id:"\u6536\u76CA",depth:2,charIndex:2932},{text:"Trouble Shooting",id:"trouble-shooting",depth:2,charIndex:3151}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/storybook.mdx"},{title:"\u6784\u5EFA\u4EA7\u7269\u7C7B\u578B",routePath:"/builder/guide/basic/build-target",lang:"zh",toc:[{text:"\u9ED8\u8BA4\u4EA7\u7269",id:"\u9ED8\u8BA4\u4EA7\u7269",depth:2,charIndex:135},{text:"\u53EF\u9009\u7C7B\u578B",id:"\u53EF\u9009\u7C7B\u578B",depth:2,charIndex:238},{text:"\u5E76\u884C\u6784\u5EFA",id:"\u5E76\u884C\u6784\u5EFA",depth:2,charIndex:426},{text:"Node \u4EA7\u7269",id:"node-\u4EA7\u7269",depth:2,charIndex:505},{text:"Web Worker \u4EA7\u7269",id:"web-worker-\u4EA7\u7269",depth:2,charIndex:882},{text:"Modern Web \u4EA7\u7269",id:"modern-web-\u4EA7\u7269",depth:2,charIndex:1302}],frontmatter:{},version:"",_relativePath:"zh/guide/basic/build-target.md"},{title:"\u4F7F\u7528 Builder CLI",routePath:"/builder/guide/basic/builder-cli",lang:"zh",toc:[{text:"\u5B89\u88C5",id:"\u5B89\u88C5",depth:2,charIndex:196},{text:"\u547D\u4EE4",id:"\u547D\u4EE4",depth:2,charIndex:473},{text:"builder dev",id:"builder-dev",depth:3,charIndex:526},{text:"builder build",id:"builder-build",depth:3,charIndex:586},{text:"builder serve",id:"builder-serve",depth:3,charIndex:651},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:740},{text:"\u6784\u5EFA\u5165\u53E3",id:"\u6784\u5EFA\u5165\u53E3",depth:2,charIndex:917},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:2,charIndex:1041}],frontmatter:{},version:"",_relativePath:"zh/guide/basic/builder-cli.mdx"},{title:"Builder \u914D\u7F6E\u9879",routePath:"/builder/guide/basic/builder-config",lang:"zh",toc:[{text:"\u914D\u7F6E\u5206\u7C7B",id:"\u914D\u7F6E\u5206\u7C7B",depth:2,charIndex:39},{text:"\u914D\u7F6E\u9ED8\u8BA4\u503C",id:"\u914D\u7F6E\u9ED8\u8BA4\u503C",depth:2,charIndex:322},{text:"\u4F7F\u7528\u914D\u7F6E",id:"\u4F7F\u7528\u914D\u7F6E",depth:2,charIndex:444},{text:"\u5728\u4E0A\u5C42\u6846\u67B6\u4E2D\u4F7F\u7528",id:"\u5728\u4E0A\u5C42\u6846\u67B6\u4E2D\u4F7F\u7528",depth:3,charIndex:452},{text:"\u901A\u8FC7 Node API \u4F7F\u7528",id:"\u901A\u8FC7-node-api-\u4F7F\u7528",depth:3,charIndex:621},{text:"\u4E0E\u6846\u67B6\u914D\u7F6E\u7684\u5173\u7CFB",id:"\u4E0E\u6846\u67B6\u914D\u7F6E\u7684\u5173\u7CFB",depth:2,charIndex:763},{text:"\u8C03\u8BD5\u914D\u7F6E",id:"\u8C03\u8BD5\u914D\u7F6E",depth:2,charIndex:880}],frontmatter:{},version:"",_relativePath:"zh/guide/basic/builder-config.mdx"},{title:"\u5F15\u7528\u6837\u5F0F\u8D44\u6E90",routePath:"/builder/guide/basic/css-usage",lang:"zh",toc:[{text:"\u4F7F\u7528 Less\u3001Sass \u548C Stylus",id:"\u4F7F\u7528-lesssass-\u548C-stylus",depth:2,charIndex:122},{text:"\u4F7F\u7528 PostCSS",id:"\u4F7F\u7528-postcss",depth:2,charIndex:354},{text:"\u5185\u7F6E PostCSS \u63D2\u4EF6",id:"\u5185\u7F6E-postcss-\u63D2\u4EF6",depth:3,charIndex:442},{text:"CSS \u538B\u7F29",id:"css-\u538B\u7F29",depth:2,charIndex:1061},{text:"\u5185\u8054 CSS \u6587\u4EF6",id:"\u5185\u8054-css-\u6587\u4EF6",depth:2,charIndex:1370},{text:"\u5F15\u7528 node_modules \u91CC\u7684\u6837\u5F0F",id:"\u5F15\u7528-node_modules-\u91CC\u7684\u6837\u5F0F",depth:2,charIndex:-1}],frontmatter:{},version:"",_relativePath:"zh/guide/basic/css-usage.md"},{title:"\u914D\u7F6E HTML \u6A21\u677F",routePath:"/builder/guide/basic/html-template",lang:"zh",toc:[{text:"\u8BBE\u7F6E\u6A21\u677F\u6587\u4EF6",id:"\u8BBE\u7F6E\u6A21\u677F\u6587\u4EF6",depth:2,charIndex:113},{text:"\u8BBE\u7F6E\u9875\u9762\u6807\u9898",id:"\u8BBE\u7F6E\u9875\u9762\u6807\u9898",depth:2,charIndex:323},{text:"\u8BBE\u7F6E\u9875\u9762\u56FE\u6807",id:"\u8BBE\u7F6E\u9875\u9762\u56FE\u6807",depth:2,charIndex:-1},{text:"\u8BBE\u7F6E meta \u6807\u7B7E",id:"\u8BBE\u7F6E-meta-\u6807\u7B7E",depth:2,charIndex:-1},{text:"\u8BBE\u7F6E\u6A21\u677F\u53C2\u6570",id:"\u8BBE\u7F6E\u6A21\u677F\u53C2\u6570",depth:2,charIndex:-1},{text:"\u6A21\u677F\u5F15\u64CE",id:"\u6A21\u677F\u5F15\u64CE",depth:2,charIndex:-1},{text:"Lodash Template",id:"lodash-template",depth:3,charIndex:-1},{text:"EJS",id:"ejs",depth:3,charIndex:-1},{text:"Pug",id:"pug",depth:3,charIndex:-1},{text:"\u6CE8\u5165\u6807\u7B7E",id:"\u6CE8\u5165\u6807\u7B7E",depth:2,charIndex:-1},{text:"\u5BF9\u8C61\u5F62\u5F0F",id:"\u5BF9\u8C61\u5F62\u5F0F",depth:3,charIndex:-1},{text:"\u51FD\u6570\u5F62\u5F0F",id:"\u51FD\u6570\u5F62\u5F0F",depth:3,charIndex:-1}],frontmatter:{},version:"",_relativePath:"zh/guide/basic/html-template.md"},{title:"\u4F7F\u7528 TypeScript",routePath:"/builder/guide/basic/typescript",lang:"zh",toc:[{text:"TypeScript \u8F6C\u8BD1",id:"typescript-\u8F6C\u8BD1",depth:2,charIndex:70},{text:"\u4E3A\u4EC0\u4E48\u9ED8\u8BA4\u4F7F\u7528 Babel",id:"\u4E3A\u4EC0\u4E48\u9ED8\u8BA4\u4F7F\u7528-babel",depth:3,charIndex:674},{text:"\u7C7B\u578B\u68C0\u67E5",id:"\u7C7B\u578B\u68C0\u67E5",depth:2,charIndex:912}],frontmatter:{},version:"",_relativePath:"zh/guide/basic/typescript.md"},{title:"\u5F00\u542F\u8C03\u8BD5\u6A21\u5F0F",routePath:"/builder/guide/debug/debug-mode",lang:"zh",toc:[{text:"\u65E5\u5FD7\u4FE1\u606F",id:"\u65E5\u5FD7\u4FE1\u606F",depth:2,charIndex:162},{text:"Builder \u914D\u7F6E\u6587\u4EF6",id:"builder-\u914D\u7F6E\u6587\u4EF6",depth:2,charIndex:319},{text:"webpack \u914D\u7F6E\u6587\u4EF6",id:"webpack-\u914D\u7F6E\u6587\u4EF6",depth:2,charIndex:516},{text:"Rspack \u914D\u7F6E\u6587\u4EF6",id:"rspack-\u914D\u7F6E\u6587\u4EF6",depth:2,charIndex:861}],frontmatter:{},version:"",_relativePath:"zh/guide/debug/debug-mode.md"},{title:"\u5F02\u5E38\u7C7B\u95EE\u9898",routePath:"/builder/guide/faq/exceptions",lang:"zh",toc:[],frontmatter:{},version:"",_relativePath:"zh/guide/faq/exceptions.md"},{title:"\u529F\u80FD\u7C7B\u95EE\u9898",routePath:"/builder/guide/faq/features",lang:"zh",toc:[],frontmatter:{},version:"",_relativePath:"zh/guide/faq/features.md"},{title:"\u901A\u7528\u7C7B\u95EE\u9898",routePath:"/builder/guide/faq/general",lang:"zh",toc:[{text:"Modern.js Builder \u548C Modern.js \u7684\u5173\u7CFB\uFF1F",id:"modernjs-builder-\u548C-modernjs-\u7684\u5173\u7CFB",depth:3,charIndex:3},{text:"Builder \u80FD\u5426\u7528\u4E8E\u6784\u5EFA\u5DE5\u5177\u5E93\u6216\u7EC4\u4EF6\u5E93\uFF1F",id:"builder-\u80FD\u5426\u7528\u4E8E\u6784\u5EFA\u5DE5\u5177\u5E93\u6216\u7EC4\u4EF6\u5E93",depth:3,charIndex:289},{text:"Builder \u662F\u5426\u4F1A\u63A5\u5165 Turbopack\uFF1F",id:"builder-\u662F\u5426\u4F1A\u63A5\u5165-turbopack",depth:3,charIndex:495},{text:"Builder \u662F\u5426\u4F1A\u63A5\u5165 Vite\uFF1F",id:"builder-\u662F\u5426\u4F1A\u63A5\u5165-vite",depth:3,charIndex:740}],frontmatter:{},version:"",_relativePath:"zh/guide/faq/general.md"},{title:"\u70ED\u66F4\u65B0\u95EE\u9898",routePath:"/builder/guide/faq/hmr",lang:"zh",toc:[],frontmatter:{},version:"",_relativePath:"zh/guide/faq/hmr.md"},{title:"\u529F\u80FD\u5BFC\u822A",routePath:"/builder/guide/features",lang:"zh",toc:[{text:"JavaScript \u7F16\u8BD1",id:"javascript-\u7F16\u8BD1",depth:2,charIndex:229},{text:"CSS \u7F16\u8BD1",id:"css-\u7F16\u8BD1",depth:2,charIndex:1559},{text:"HTML \u7F16\u8BD1",id:"html-\u7F16\u8BD1",depth:2,charIndex:2306},{text:"\u5F00\u53D1\u8C03\u8BD5\u76F8\u5173",id:"\u5F00\u53D1\u8C03\u8BD5\u76F8\u5173",depth:2,charIndex:2682},{text:"\u524D\u7AEF\u6846\u67B6\u76F8\u5173",id:"\u524D\u7AEF\u6846\u67B6\u76F8\u5173",depth:2,charIndex:2874},{text:"\u9759\u6001\u8D44\u6E90\u76F8\u5173",id:"\u9759\u6001\u8D44\u6E90\u76F8\u5173",depth:2,charIndex:3124},{text:"\u6027\u80FD\u76F8\u5173",id:"\u6027\u80FD\u76F8\u5173",depth:2,charIndex:3630}],frontmatter:{},version:"",_relativePath:"zh/guide/features.mdx"},{title:"\u6784\u5EFA Vue 2 \u5E94\u7528",routePath:"/builder/guide/framework/vue2",lang:"zh",toc:[{text:"\u793A\u4F8B\u9879\u76EE",id:"\u793A\u4F8B\u9879\u76EE",depth:2,charIndex:195},{text:"CLI \u5DE5\u5177",id:"cli-\u5DE5\u5177",depth:2,charIndex:360},{text:"\u4F7F\u7528 Vue \u63D2\u4EF6",id:"\u4F7F\u7528-vue-\u63D2\u4EF6",depth:2,charIndex:478},{text:"\u7C7B\u578B\u5B9A\u4E49",id:"\u7C7B\u578B\u5B9A\u4E49",depth:2,charIndex:619}],frontmatter:{},version:"",_relativePath:"zh/guide/framework/vue2.mdx"},{title:"\u6784\u5EFA Vue 3 \u5E94\u7528",routePath:"/builder/guide/framework/vue3",lang:"zh",toc:[{text:"\u793A\u4F8B\u9879\u76EE",id:"\u793A\u4F8B\u9879\u76EE",depth:2,charIndex:195},{text:"CLI \u5DE5\u5177",id:"cli-\u5DE5\u5177",depth:2,charIndex:360},{text:"\u4F7F\u7528 Vue \u63D2\u4EF6",id:"\u4F7F\u7528-vue-\u63D2\u4EF6",depth:2,charIndex:478},{text:"\u7C7B\u578B\u5B9A\u4E49",id:"\u7C7B\u578B\u5B9A\u4E49",depth:2,charIndex:617}],frontmatter:{},version:"",_relativePath:"zh/guide/framework/vue3.mdx"},{title:"\u540D\u8BCD\u89E3\u91CA",routePath:"/builder/guide/glossary",lang:"zh",toc:[{text:"Bundler",id:"bundler",depth:2,charIndex:190},{text:"Builder",id:"builder",depth:2,charIndex:364},{text:"Builder Provider",id:"builder-provider",depth:2,charIndex:568},{text:"Micro-frontend",id:"micro-frontend",depth:2,charIndex:799},{text:"Module Federation",id:"module-federation",depth:2,charIndex:1e3},{text:"Rspack",id:"rspack",depth:2,charIndex:1348},{text:"Modern.js",id:"modernjs",depth:2,charIndex:1557},{text:"EdenX",id:"edenx",depth:2,charIndex:1651}],frontmatter:{},version:"",_relativePath:"zh/guide/glossary.mdx"},{title:"\u4ECB\u7ECD",routePath:"/builder/guide/introduction",lang:"zh",toc:[{text:"Rust \u5316",id:"rust-\u5316",depth:2,charIndex:423},{text:"\u5B9A\u4F4D",id:"\u5B9A\u4F4D",depth:2,charIndex:812},{text:"\u7279\u6027",id:"\u7279\u6027",depth:2,charIndex:1137},{text:"\u652F\u6301 Rspack \u6253\u5305",id:"\u652F\u6301-rspack-\u6253\u5305",depth:3,charIndex:1143},{text:"\u6DF1\u5EA6\u4F18\u5316\u6784\u5EFA\u4EA7\u7269",id:"\u6DF1\u5EA6\u4F18\u5316\u6784\u5EFA\u4EA7\u7269",depth:3,charIndex:1713},{text:"\u6613\u4E8E\u6269\u5C55\u7684\u63D2\u4EF6\u7CFB\u7EDF",id:"\u6613\u4E8E\u6269\u5C55\u7684\u63D2\u4EF6\u7CFB\u7EDF",depth:3,charIndex:1913},{text:"npm \u5305",id:"npm-\u5305",depth:2,charIndex:2140},{text:"\u4E0B\u4E00\u6B65",id:"\u4E0B\u4E00\u6B65",depth:2,charIndex:3064}],frontmatter:{},version:"",_relativePath:"zh/guide/introduction.mdx"},{title:"\u62C6\u5305\u6700\u4F73\u5B9E\u8DF5",routePath:"/builder/guide/optimization/split-chunk",lang:"zh",toc:[{text:"\u62C6\u5305\u7B56\u7565",id:"\u62C6\u5305\u7B56\u7565",depth:2,charIndex:119},{text:"split-by-experience",id:"split-by-experience",depth:3,charIndex:452},{text:"\u5206\u5305\u7B56\u7565",id:"\u5206\u5305\u7B56\u7565",depth:4,charIndex:474},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:4,charIndex:1054},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879",depth:4,charIndex:1061},{text:"split-by-module",id:"split-by-module",depth:3,charIndex:1110},{text:"\u5206\u5305\u7B56\u7565",id:"\u5206\u5305\u7B56\u7565-1",depth:4,charIndex:1128},{text:"\u914D\u7F6E",id:"\u914D\u7F6E-1",depth:4,charIndex:1162},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879-1",depth:4,charIndex:1169},{text:"all-in-one",id:"all-in-one",depth:3,charIndex:1314},{text:"\u5206\u5305\u7B56\u7565",id:"\u5206\u5305\u7B56\u7565-2",depth:4,charIndex:1327},{text:"\u914D\u7F6E",id:"\u914D\u7F6E-2",depth:4,charIndex:1367},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879-2",depth:4,charIndex:1374},{text:"single-vendor",id:"single-vendor",depth:3,charIndex:1475},{text:"\u5206\u5305\u7B56\u7565",id:"\u5206\u5305\u7B56\u7565-3",depth:4,charIndex:1491},{text:"\u914D\u7F6E",id:"\u914D\u7F6E-3",depth:4,charIndex:1544},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879-3",depth:4,charIndex:1551},{text:"split-by-size",id:"split-by-size",depth:3,charIndex:1596},{text:"\u5206\u5305\u7B56\u7565",id:"\u5206\u5305\u7B56\u7565-4",depth:4,charIndex:1612},{text:"\u914D\u7F6E",id:"\u914D\u7F6E-4",depth:4,charIndex:1674},{text:"\u81EA\u5B9A\u4E49\u62C6\u5305",id:"\u81EA\u5B9A\u4E49\u62C6\u5305",depth:2,charIndex:1682},{text:"\u81EA\u5B9A\u4E49\u5206\u7EC4",id:"\u81EA\u5B9A\u4E49\u5206\u7EC4",depth:3,charIndex:1864},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879-4",depth:4,charIndex:2019},{text:"\u81EA\u5B9A\u4E49 bundler \u62C6\u5305\u914D\u7F6E",id:"\u81EA\u5B9A\u4E49-bundler-\u62C6\u5305\u914D\u7F6E",depth:3,charIndex:-1},{text:"\u4F7F\u7528 Dynamic Import \u62C6\u5305",id:"\u4F7F\u7528-dynamic-import-\u62C6\u5305",depth:2,charIndex:-1}],frontmatter:{},version:"",_relativePath:"zh/guide/optimization/split-chunk.md"},{title:"\u5FEB\u901F\u4E0A\u624B",routePath:"/builder/guide/quick-start",lang:"zh",toc:[{text:"\u73AF\u5883\u51C6\u5907",id:"\u73AF\u5883\u51C6\u5907",depth:2,charIndex:190},{text:"\u4F7F\u7528 Modern.js \u6846\u67B6",id:"\u4F7F\u7528-modernjs-\u6846\u67B6",depth:2,charIndex:594},{text:"\u4F7F\u7528 Builder CLI \u5DE5\u5177",id:"\u4F7F\u7528-builder-cli-\u5DE5\u5177",depth:2,charIndex:928},{text:"\u5728\u524D\u7AEF\u6846\u67B6\u4E2D\u63A5\u5165",id:"\u5728\u524D\u7AEF\u6846\u67B6\u4E2D\u63A5\u5165",depth:2,charIndex:1116},{text:"1. \u5B89\u88C5 Builder",id:"1-\u5B89\u88C5-builder",depth:3,charIndex:1165},{text:"2. \u521B\u5EFA Builder \u5B9E\u4F8B",id:"2-\u521B\u5EFA-builder-\u5B9E\u4F8B",depth:3,charIndex:1468},{text:"3. \u8C03\u7528 Builder \u5B9E\u4F8B\u65B9\u6CD5",id:"3-\u8C03\u7528-builder-\u5B9E\u4F8B\u65B9\u6CD5",depth:3,charIndex:1844},{text:"\u4E0B\u4E00\u6B65",id:"\u4E0B\u4E00\u6B65",depth:2,charIndex:2178}],frontmatter:{},version:"",_relativePath:"zh/guide/quick-start.mdx"},{title:"",routePath:"/builder/",lang:"zh",toc:[],frontmatter:{pageType:"home",hero:{name:"Modern.js Builder",tagline:"\u57FA\u4E8E Rspack \u7684 Web \u6784\u5EFA\u5DE5\u5177",actions:[{theme:"brand",text:"\u4ECB\u7ECD",link:"/guide/introduction.html"},{theme:"alt",text:"\u5FEB\u901F\u4E0A\u624B",link:"/guide/quick-start.html"}]},features:[{title:"Rust \u6784\u5EFA",details:"\u8F7B\u677E\u5207\u6362\u5230 Rspack \u6784\u5EFA\u5DE5\u5177\uFF0C\u7F16\u8BD1\u98DE\u5FEB\u3002",icon:"\uD83D\uDE80"},{title:"\u6DF1\u5EA6\u4F18\u5316",details:"\u81EA\u52A8\u4F18\u5316\u9759\u6001\u8D44\u6E90\uFF0C\u4EA7\u7269\u6027\u80FD\u6709\u4FDD\u969C\u3002",icon:"\uD83C\uDF6D"},{title:"\u5F00\u7BB1\u5373\u7528",details:"\u57FA\u4E8E\u5B57\u8282\u8DF3\u52A8\u6570\u5343\u4E2A\u5E94\u7528\u7684\u5B9E\u8DF5\u7ECF\u9A8C\uFF0C\u5404\u79CD\u80FD\u529B\u5F00\u7BB1\u5373\u7528\u3002",icon:"\uD83D\uDCE6"},{title:"\u6613\u4E8E\u914D\u7F6E",details:"\u4EE5\u96F6\u914D\u7F6E\u542F\u52A8\uFF0C\u7136\u540E\u4E00\u5207\u7686\u53EF\u914D\u7F6E\u3002",icon:"\uD83D\uDCD6"},{title:"\u53EF\u63D2\u62D4",details:"\u81EA\u5E26\u8F7B\u91CF\u7EA7\u63D2\u4EF6\u7CFB\u7EDF\uFF0C\u6EE1\u8DB3\u4F60\u7684\u5B9A\u5236\u8BC9\u6C42\u3002",icon:"\uD83C\uDFA8"},{title:"\u591A\u79CD\u4EA7\u7269",details:"\u652F\u6301\u6784\u5EFA\u51FA\u8FD0\u884C\u5728 Node.js\u3001Web Worker \u7B49\u73AF\u5883\u7684\u4EA7\u7269\u3002",icon:"\u2728"}]},version:"",_relativePath:"zh/index.md"},{title:"\u63D2\u4EF6\u7CFB\u7EDF",routePath:"/builder/plugins/introduction",lang:"zh",toc:[{text:"\u5F00\u53D1\u63D2\u4EF6",id:"\u5F00\u53D1\u63D2\u4EF6",depth:2,charIndex:250},{text:"\u751F\u547D\u5468\u671F\u94A9\u5B50",id:"\u751F\u547D\u5468\u671F\u94A9\u5B50",depth:2,charIndex:555},{text:"\u4F7F\u7528\u914D\u7F6E\u9879",id:"\u4F7F\u7528\u914D\u7F6E\u9879",depth:2,charIndex:720},{text:"\u4FEE\u6539 webpack \u914D\u7F6E",id:"\u4FEE\u6539-webpack-\u914D\u7F6E",depth:2,charIndex:1377},{text:"\u53C2\u8003\u8303\u4F8B",id:"\u53C2\u8003\u8303\u4F8B",depth:2,charIndex:1714},{text:"\u4FEE\u6539 Loader",id:"\u4FEE\u6539-loader",depth:3,charIndex:1722},{text:"\u6DFB\u52A0\u6A21\u5757\u5165\u53E3",id:"\u6DFB\u52A0\u6A21\u5757\u5165\u53E3",depth:3,charIndex:1787},{text:"\u63A5\u5165 webpack \u63D2\u4EF6",id:"\u63A5\u5165-webpack-\u63D2\u4EF6",depth:3,charIndex:1799}],frontmatter:{},version:"",_relativePath:"zh/plugins/introduction.md"},{title:"\u603B\u89C8",routePath:"/builder/plugins/list",lang:"zh",toc:[{text:"\u5B98\u65B9\u63D2\u4EF6",id:"\u5B98\u65B9\u63D2\u4EF6",depth:2,charIndex:3}],frontmatter:{},version:"",_relativePath:"zh/plugins/list.md"},{title:"Esbuild \u63D2\u4EF6",routePath:"/builder/plugins/plugin-esbuild",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:436},{text:"\u5728 Modern.js \u6846\u67B6\u4E2D\u4F7F\u7528",id:"\u5728-modernjs-\u6846\u67B6\u4E2D\u4F7F\u7528",depth:3,charIndex:444},{text:"\u901A\u8FC7 Node API \u4F7F\u7528",id:"\u901A\u8FC7-node-api-\u4F7F\u7528",depth:3,charIndex:551},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:4,charIndex:621},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:4,charIndex:645},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:688},{text:"loader",id:"loader",depth:3,charIndex:734},{text:"\u8BBE\u7F6E JSX \u683C\u5F0F",id:"\u8BBE\u7F6E-jsx-\u683C\u5F0F",depth:4,charIndex:891},{text:"\u4FEE\u6539\u76EE\u6807\u73AF\u5883",id:"\u4FEE\u6539\u76EE\u6807\u73AF\u5883",depth:4,charIndex:1086},{text:"\u5173\u95ED\u4EE3\u7801\u8F6C\u8BD1",id:"\u5173\u95ED\u4EE3\u7801\u8F6C\u8BD1",depth:4,charIndex:1369},{text:"minimize",id:"minimize",depth:3,charIndex:1450},{text:"\u4FEE\u6539\u76EE\u6807\u73AF\u5883",id:"\u4FEE\u6539\u76EE\u6807\u73AF\u5883-1",depth:4,charIndex:1553},{text:"\u5173\u95ED\u4EE3\u7801\u538B\u7F29",id:"\u5173\u95ED\u4EE3\u7801\u538B\u7F29",depth:4,charIndex:1591},{text:"esbuild \u5C40\u9650\u6027",id:"esbuild-\u5C40\u9650\u6027",depth:2,charIndex:1674},{text:"\u517C\u5BB9\u6027",id:"\u517C\u5BB9\u6027",depth:3,charIndex:1773},{text:"\u4E0D\u652F\u6301 Babel \u63D2\u4EF6",id:"\u4E0D\u652F\u6301-babel-\u63D2\u4EF6",depth:3,charIndex:2236},{text:"\u4EA7\u7269\u4F53\u79EF",id:"\u4EA7\u7269\u4F53\u79EF",depth:3,charIndex:2462}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-esbuild.mdx"},{title:"Image Compress \u63D2\u4EF6",routePath:"/builder/plugins/plugin-image-compress",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:64},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:3,charIndex:72},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:3,charIndex:97},{text:"\u914D\u7F6E\u9879",id:"\u914D\u7F6E\u9879",depth:2,charIndex:246}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-image-compress.mdx"},{title:"Node Polyfill \u63D2\u4EF6",routePath:"/builder/plugins/plugin-node-polyfill",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:213},{text:"\u5728 Modern.js \u6846\u67B6\u4E2D\u4F7F\u7528",id:"\u5728-modernjs-\u6846\u67B6\u4E2D\u4F7F\u7528",depth:3,charIndex:221},{text:"\u901A\u8FC7 Node API \u4F7F\u7528",id:"\u901A\u8FC7-node-api-\u4F7F\u7528",depth:3,charIndex:353},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:4,charIndex:429},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:4,charIndex:453},{text:"Node Polyfills",id:"node-polyfills",depth:2,charIndex:502},{text:"Globals",id:"globals",depth:3,charIndex:520},{text:"Modules",id:"modules",depth:3,charIndex:592},{text:"Fallbacks",id:"fallbacks",depth:3,charIndex:988}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-node-polyfill.mdx"},{title:"Stylus \u63D2\u4EF6",routePath:"/builder/plugins/plugin-stylus",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:66},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:3,charIndex:74},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:3,charIndex:99},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:2,charIndex:232},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:357},{text:"stylusOptions",id:"stylusoptions",depth:3,charIndex:397},{text:"sourceMap",id:"sourcemap",depth:3,charIndex:484}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-stylus.mdx"},{title:"SWC \u63D2\u4EF6",routePath:"/builder/plugins/plugin-swc",lang:"zh",toc:[{text:"\u9002\u7528\u573A\u666F",id:"\u9002\u7528\u573A\u666F",depth:2,charIndex:220},{text:"Rspack \u573A\u666F",id:"rspack-\u573A\u666F",depth:3,charIndex:287},{text:"Babel \u63D2\u4EF6",id:"babel-\u63D2\u4EF6",depth:3,charIndex:432},{text:"\u4EA7\u7269\u4F53\u79EF",id:"\u4EA7\u7269\u4F53\u79EF",depth:3,charIndex:1062},{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:1245},{text:"\u5728 Modern.js \u6846\u67B6\u4E2D\u4F7F\u7528",id:"\u5728-modernjs-\u6846\u67B6\u4E2D\u4F7F\u7528",depth:3,charIndex:1253},{text:"\u901A\u8FC7 Node API \u4F7F\u7528",id:"\u901A\u8FC7-node-api-\u4F7F\u7528",depth:3,charIndex:1435},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:4,charIndex:1511},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:4,charIndex:1535},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:1615},{text:"presetReact",id:"presetreact",depth:3,charIndex:1811},{text:"presetEnv",id:"presetenv",depth:3,charIndex:1977},{text:"jsMinify",id:"jsminify",depth:3,charIndex:2063},{text:"cssMinify",id:"cssminify",depth:3,charIndex:2224},{text:"overrides",id:"overrides",depth:3,charIndex:2318},{text:"extensions",id:"extensions",depth:3,charIndex:2439},{text:"extensions.reactUtils",id:"extensionsreactutils",depth:4,charIndex:2503},{text:"extensions.lodash",id:"extensionslodash",depth:4,charIndex:2890},{text:"extensions.styledComponents",id:"extensionsstyledcomponents",depth:4,charIndex:3004},{text:"extensions.emotion",id:"extensionsemotion",depth:4,charIndex:3093},{text:"extensions.pluginImport",id:"extensionspluginimport",depth:4,charIndex:3164},{text:"\u9650\u5236",id:"\u9650\u5236",depth:2,charIndex:3816}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-swc.mdx"},{title:"Vue \u63D2\u4EF6",routePath:"/builder/plugins/plugin-vue",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:73},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:3,charIndex:81},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:3,charIndex:106},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:206},{text:"vueLoaderOptions",id:"vueloaderoptions",depth:3,charIndex:243},{text:"vueJsxOptions",id:"vuejsxoptions",depth:3,charIndex:347}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-vue.mdx"},{title:"Vue 2 \u63D2\u4EF6",routePath:"/builder/plugins/plugin-vue2",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:75},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:3,charIndex:83},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:3,charIndex:108},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:210},{text:"vueLoaderOptions",id:"vueloaderoptions",depth:3,charIndex:247},{text:"vueJsxOptions",id:"vuejsxoptions",depth:3,charIndex:417}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-vue2.mdx"}],markdown:{showLineNumbers:!1,defaultWrapCode:!1,codeHighlighter:"prism"}}},96954:function(e,t,n){"use strict";n.r(t),n.d(t,{MDXProvider:function(){return i.MDXProvider},useMDXComponents:function(){return i.useMDXComponents}});var i=n("61162")},61162:function(e,t,n){"use strict";n.r(t),n.d(t,{MDXProvider:function(){return o},useMDXComponents:function(){return a}});var i=n("2363");let r=i.createContext({});function a(e){let t=i.useContext(r);return i.useMemo(()=>"function"==typeof e?e(t):{...t,...e},[t,e])}let d={};function o({components:e,children:t,disableParentContext:n}){let o=a(e);return n&&(o=e||d),i.createElement(r.Provider,{value:o},t)}},64362:function(e,t,n){"use strict";n.r(t),n.d(t,{APPEARANCE_KEY:function(){return tt},MDX_REGEXP:function(){return te},SEARCH_INDEX_NAME:function(){return tn},addTrailingSlash:function(){return tl},cleanUrl:function(){return tr},inBrowser:function(){return td},isDataUrl:function(){return tu},isExternalUrl:function(){return tc},isProduction:function(){return ti},normalizeHref:function(){return tf},normalizeSlash:function(){return ts},removeBase:function(){return tb},removeHash:function(){return ta},replaceLang:function(){return th},replaceVersion:function(){return tp},withBase:function(){return tg},withoutBase:function(){return tm}});var i,r,a,d,o,l,s,c,u,h="object"==typeof global&&global&&global.Object===Object&&global,p="object"==typeof self&&self&&self.Object===Object&&self,x=h||p||Function("return this")(),f=x.Symbol,m=Object.prototype,g=m.hasOwnProperty,b=m.toString,v=f?f.toStringTag:void 0,y=function(e){var t=g.call(e,v),n=e[v];try{e[v]=void 0;var i=!0}catch(e){}var r=b.call(e);return i&&(t?e[v]=n:delete e[v]),r},I=Object.prototype.toString,k=f?f.toStringTag:void 0,w=function(e){var t;if(null==e)return void 0===e?"[object Undefined]":"[object Null]";return k&&k in Object(e)?y(e):(t=e,I.call(t))},j=function(e){return null!=e&&"object"==typeof e},P=Array.isArray,S=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},C=function(e){return e},z=function(e){if(!S(e))return!1;var t=w(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t},E=x["__core-js_shared__"];var _=(i=/[^.]+$/.exec(E&&E.keys&&E.keys.IE_PROTO||""))?"Symbol(src)_1."+i:"",N=Function.prototype.toString,A=function(e){if(null!=e){try{return N.call(e)}catch(e){}try{return e+""}catch(e){}}return""},T=/^\[object .+?Constructor\]$/,L=Object.prototype,O=Function.prototype.toString,M=L.hasOwnProperty,B=RegExp("^"+O.call(M).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),R=function(e){var t;return!!S(e)&&(t=e,!_||!(_ in t))&&(z(e)?B:T).test(A(e))},D=function(e,t){var n,i,r=(n=e,i=t,null==n?void 0:n[i]);return R(r)?r:void 0},H=Object.create,F=function(){function e(){}return function(t){if(!S(t))return{};if(H)return H(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}(),$=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)},W=function(e,t){var n=-1,i=e.length;for(t||(t=Array(i));++n0){if(++a>=800)return arguments[0]}else a=0;return r.apply(void 0,arguments)}),V=/^(?:0|[1-9]\d*)$/,G=function(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&V.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991},ei=function(e){return null!=e&&en(e.length)&&!z(e)},er=function(e,t,n){if(!S(n))return!1;var i=typeof t;return("number"==i?!!(ei(n)&&G(t,n.length)):"string"==i&&t in n)&&Y(n[t],e)},ea=Object.prototype,ed=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||ea)},eo=function(e,t){for(var n=-1,i=Array(e);++n-1},eB.prototype.set=function(e,t){var n=this.__data__,i=eO(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this};var eR=D(x,"Map"),eD=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e},eH=function(e,t){var n=e.__data__;return eD(t)?n["string"==typeof t?"string":"hash"]:n.map};function eF(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t1?t[i-1]:void 0,a=i>2?t[2]:void 0;for(r=u.length>3&&"function"==typeof r?(i--,r):void 0,a&&er(t[0],t[1],a)&&(r=i<3?void 0:r,i=1),e=Object(e);++n!0,tr=e=>e.replace(e9,"").replace(e8,"");function ta(e){return e.replace(/#.*$/,"")}var td=()=>!0;function to(e){return"/"===e.charAt(0)||tc(e)?e:`/${e}`}function tl(e){return"/"===e.charAt(e.length-1)?e:`${e}/`}function ts(e){var t;return"/"===(t=to(function(e){let t=e.replace(/\\/g,"/"),n=t.startsWith("/"),i=t.split("/"),r=[];for(let e of i)"."===e||""===e||(".."===e?r.length>0&&".."!==r[r.length-1]?r.pop():n&&r.push(".."):r.push(e));let a=r.join("/");return n&&(a=`/${a}`),a}(e))).charAt(t.length-1)?t.slice(0,-1):t}function tc(e=""){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("mailto:")||e.startsWith("tel:")}function tu(e=""){return/^\s*data:/i.test(e)}function th(e,t,n,i="",r=!1){let a=tb(e,i);!a&&(a=r?"/index":"/index.html"),a.endsWith("/")&&(a+=r?"/index":"/index.html");let d="",o="",l="",s=a.split("/").filter(Boolean);return n.current&&n.current!==n.default&&(d=s.shift()||""),t.target!==t.default?(o=t.target,t.current!==t.default&&s.shift()):s.shift(),l=s.join("/")||"",(d||o)&&!l&&(l=r?"index":"index.html"),tg(to([d,o,l].filter(Boolean).join("/")),i)}function tp(e,t,n="",i=!1){let r=tb(e,n);!r&&(r=i?"/index":"/index.html");let a="",d=r.split("/").filter(Boolean);t.target!==t.default?(a=t.target,t.current!==t.default&&d.shift()):d.shift();let o=d.join("/")||"";return a&&!o&&(o=i?"index":"index.html"),tg(to([a,o].filter(Boolean).join("/")),n)}var tx=e=>{let[t,n=""]=e.split("#");return{url:t,hash:n}};function tf(e,t=!1){if(!e)return"/";if(tc(e))return e;let{url:n,hash:i}=tx(decodeURIComponent(e)),r=n.split("/").pop()?.includes(".");return!t&&!n.endsWith(".html")&&!r&&(n.endsWith("/")?n+="index.html":n+=".html"),t&&n.endsWith("/")&&(n+="index"),to(i?`${n}#${i}`:n)}function tm(e,t=""){return to(e).replace(ts(t),"")}function tg(e="/",t=""){let n=to(e),i=ts(t);return n.startsWith(i)?n:`${i}${n}`}function tb(e,t){return to(e).replace(RegExp(`^${ts(t)}`),"")}},94511:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"})})},73512:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M22 16 12 26l-1.4-1.4 8.6-8.6-8.6-8.6L12 6z"})})},73183:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M24 9.4 22.6 8 16 14.6 9.4 8 8 9.4l6.6 6.6L8 22.6 9.4 24l6.6-6.6 6.6 6.6 1.4-1.4-6.6-6.6L24 9.4z"})})},95699:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:32,height:32,viewBox:"0 0 30 30",...e,children:[(0,i.jsx)("path",{fill:"currentColor",d:"M28 10v18H10V10h18m0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2Z"}),(0,i.jsx)("path",{fill:"currentColor",d:"M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z"})]})},16546:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"})})},26600:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:48,height:48,fill:"none",viewBox:"0 0 48 48",...e,children:[(0,i.jsx)("path",{stroke:"currentColor",strokeWidth:4,d:"M24 5v6m7 1 4-4m-18 4-4-4m27 33H8a2 2 0 0 1-2-2v-8.46a2 2 0 0 1 .272-1.007l6.15-10.54A2 2 0 0 1 14.148 18H33.85a2 2 0 0 1 1.728.992l6.149 10.541A2 2 0 0 1 42 30.541V39a2 2 0 0 1-2 2Z"}),(0,i.jsx)("path",{stroke:"currentColor",strokeWidth:4,d:"M41.5 30H28s-1 3-4 3-4-3-4-3H6.5"})]})},27541:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 32 32",...e,children:[(0,i.jsx)("circle",{cx:22,cy:24,r:2,fill:"currentColor"}),(0,i.jsx)("path",{fill:"none",d:"M22 28a4 4 0 1 1 4-4 4.004 4.004 0 0 1-4 4Zm0-6a2 2 0 1 0 2 2 2.003 2.003 0 0 0-2-2Z"}),(0,i.jsx)("path",{fill:"currentColor",d:"M29.777 23.479A8.64 8.64 0 0 0 22 18a8.64 8.64 0 0 0-7.777 5.479L14 24l.223.521A8.64 8.64 0 0 0 22 30a8.64 8.64 0 0 0 7.777-5.479L30 24ZM22 28a4 4 0 1 1 4-4 4.005 4.005 0 0 1-4 4Z"}),(0,i.jsx)("path",{fill:"currentColor",d:"M12 28H8V4h8v6a2.006 2.006 0 0 0 2 2h6v4h2v-6a.91.91 0 0 0-.3-.7l-7-7A.909.909 0 0 0 18 2H8a2.006 2.006 0 0 0-2 2v24a2.006 2.006 0 0 0 2 2h4Zm6-23.6 5.6 5.6H18Z"})]})},39698:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"})})},89263:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"m21.94 13.11-1.05-3.22c0-.03-.01-.06-.02-.09l-2.11-6.48a.859.859 0 0 0-.8-.57c-.36 0-.68.25-.79.58l-2 6.17H8.84L6.83 3.33a.851.851 0 0 0-.79-.58c-.37 0-.69.25-.8.58L3.13 9.82v.01l-1.07 3.28c-.16.5.01 1.04.44 1.34l9.22 6.71c.17.12.39.12.56-.01l9.22-6.7c.43-.3.6-.84.44-1.34M8.15 10.45l2.57 7.91-6.17-7.91m8.73 7.92 2.47-7.59.1-.33h3.61l-5.59 7.16m4.1-13.67 1.81 5.56h-3.62m-1.3.95-1.79 5.51L12 19.24l-2.86-8.79M6.03 3.94 7.84 9.5H4.23m-1.18 4.19c-.09-.07-.13-.19-.09-.29l.79-2.43 5.82 7.45m11.38-4.73-6.51 4.73.02-.03 5.79-7.42.79 2.43c.04.1 0 .22-.09.29"})})},18865:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M28 12v-2h-6V4h-2v6h-8V4h-2v6H4v2h6v8H4v2h6v6h2v-6h8v6h2v-6h6v-2h-6v-8Zm-8 8h-8v-8h8Z"})})},51746:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M13.414 17.586 18 22.172V8H8V6h10a2.002 2.002 0 0 1 2 2v14.172l4.586-4.586L26 19l-7 7-7-7Z"})})},17116:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:32,height:32,viewBox:"0 0 24 24",...e,children:(0,i.jsxs)("g",{fill:"none",stroke:"var(--rp-c-brand)",strokeLinecap:"round",strokeWidth:2,children:[(0,i.jsx)("path",{strokeDasharray:60,strokeDashoffset:60,strokeOpacity:.3,d:"M12 3a9 9 0 1 1 0 18 9 9 0 0 1 0-18Z",children:(0,i.jsx)("animate",{fill:"freeze",attributeName:"stroke-dashoffset",dur:"1.3s",values:"60;0"})}),(0,i.jsxs)("path",{strokeDasharray:15,strokeDashoffset:15,d:"M12 3a9 9 0 0 1 9 9",children:[(0,i.jsx)("animate",{fill:"freeze",attributeName:"stroke-dashoffset",dur:"0.3s",values:"15;0"}),(0,i.jsx)("animateTransform",{attributeName:"transform",dur:"1.5s",repeatCount:"indefinite",type:"rotate",values:"0 12 12;360 12 12"})]})]})})},92099:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M4 6h24v2H4zm0 18h24v2H4zm0-12h24v2H4zm0 6h24v2H4z"})})},60877:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{d:"M12.1 22h-.9c-5.5-.5-9.5-5.4-9-10.9.4-4.8 4.2-8.6 9-9 .4 0 .8.2 1 .5.2.3.2.8-.1 1.1-2 2.7-1.4 6.4 1.3 8.4 2.1 1.6 5 1.6 7.1 0 .3-.2.7-.3 1.1-.1.3.2.5.6.5 1-.2 2.7-1.5 5.1-3.6 6.8-1.9 1.4-4.1 2.2-6.4 2.2zM9.3 4.4c-2.9 1-5 3.6-5.2 6.8-.4 4.4 2.8 8.3 7.2 8.7 2.1.2 4.2-.4 5.8-1.8 1.1-.9 1.9-2.1 2.4-3.4-2.5.9-5.3.5-7.5-1.1-2.8-2.2-3.9-5.9-2.7-9.2z"})})},46755:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:24,height:24,viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"var(--rp-c-gray)",d:"m29 27.586-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29ZM4 13a9 9 0 1 1 9 9 9.01 9.01 0 0 1-9-9Z"})})},98514:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:32,height:32,viewBox:"0 0 32 32",...e,children:[(0,i.jsx)("circle",{cx:8,cy:16,r:2,fill:"currentColor"}),(0,i.jsx)("circle",{cx:16,cy:16,r:2,fill:"currentColor"}),(0,i.jsx)("circle",{cx:24,cy:16,r:2,fill:"currentColor"})]})},72485:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:32,height:32,viewBox:"0 0 30 30",...e,children:(0,i.jsx)("path",{fill:"#49cd37",d:"m13 24-9-9 1.414-1.414L13 21.171 26.586 7.586 28 9 13 24z"})})},74696:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{d:"M12 18c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm0-10c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zM12 4c-.6 0-1-.4-1-1V1c0-.6.4-1 1-1s1 .4 1 1v2c0 .6-.4 1-1 1zM12 24c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1s1 .4 1 1v2c0 .6-.4 1-1 1zM5.6 6.6c-.3 0-.5-.1-.7-.3L3.5 4.9c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l1.4 1.4c.4.4.4 1 0 1.4-.1.2-.4.3-.7.3zM19.8 20.8c-.3 0-.5-.1-.7-.3l-1.4-1.4c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l1.4 1.4c.4.4.4 1 0 1.4-.2.2-.5.3-.7.3zM3 13H1c-.6 0-1-.4-1-1s.4-1 1-1h2c.6 0 1 .4 1 1s-.4 1-1 1zM23 13h-2c-.6 0-1-.4-1-1s.4-1 1-1h2c.6 0 1 .4 1 1s-.4 1-1 1zM4.2 20.8c-.3 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l1.4-1.4c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-1.4 1.4c-.2.2-.4.3-.7.3zM18.4 6.6c-.3 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l1.4-1.4c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-1.4 1.4c-.2.2-.5.3-.7.3z"})})},47371:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M4 4a2 2 0 0 1 2-2h8a1 1 0 0 1 .707.293l5 5A1 1 0 0 1 20 8v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4zm13.586 4L14 4.414V8h3.586zM12 4H6v16h12V10h-5a1 1 0 0 1-1-1V4z"})})},92759:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:18,height:18,viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M27.85 29H30l-6-15h-2.35l-6 15h2.15l1.6-4h6.85zm-7.65-6 2.62-6.56L25.45 23zM18 7V5h-7V2H9v3H2v2h10.74a14.71 14.71 0 0 1-3.19 6.18A13.5 13.5 0 0 1 7.26 9h-2.1a16.47 16.47 0 0 0 3 5.58A16.84 16.84 0 0 1 3 18l.75 1.86A18.47 18.47 0 0 0 9.53 16a16.92 16.92 0 0 0 5.76 3.84L16 18a14.48 14.48 0 0 1-5.12-3.37A17.64 17.64 0 0 0 14.8 7z"})})},35037:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:32,height:32,viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M16 7H3V5h13v2M3 19h13v-2H3v2m19-7-4-3v2H3v2h15v2l4-3Z"})})},19194:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:32,height:32,viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"#22a041",d:"M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"})})},91330:function(e,t,n){"use strict";n.r(t),n.d(t,{Badge:function(){return nC},Button:function(){return tK},DocLayout:function(){return tF},HomeFooter:function(){return nz},HomeLayout:function(){return tX},LastUpdated:function(){return tc},Layout:function(){return t$},Link:function(){return th},Nav:function(){return nx},NotFoundLayout:function(){return eD},Overview:function(){return tM},PackageManagerTabs:function(){return n$},PrevNextPage:function(){return tx},RenderType:function(){return e8},Search:function(){return nP},SearchPanel:function(){return nj},SourceCode:function(){return nK},Steps:function(){return nq},Tab:function(){return nv},Tabs:function(){return nb},Toc:function(){return tT},bindingAsideScroll:function(){return eG},default:function(){return ia},getCustomMDXComponent:function(){return ir},getLogoUrl:function(){return ti},isActive:function(){return tn},isMobileDevice:function(){return tr},renderHtmlOrText:function(){return ta},renderInlineMarkdown:function(){return td},scrollToTarget:function(){return eV},setup:function(){return eZ},useEditLink:function(){return eK},useEnableNav:function(){return eU},useFullTextSearch:function(){return te},useHiddenNav:function(){return eq},useLocaleSiteData:function(){return eH},usePathUtils:function(){return eY},usePrevNextPage:function(){return eW},useRedirect4FirstVisit:function(){return tt},useSidebarData:function(){return e$}});var i,r,a,d,o,l,s,c,u,h,p,x,f,m,g,b,v,y,I,k,w,j,P,S,C=n("80219"),z=n("39980");n("2815");var E=n("20288"),_=n("75962"),N=n("2363"),A=n("96954"),T=n("64362"),L=n("71082"),O=n("85653"),M=n("25756"),B=n("93371"),R=n("49555"),D=n("61562"),H=n("47841"),F=n("99593"),$=n("60342"),W=n("92099"),K=n("73512"),U=n("89715"),q=n("97553"),V=n("98514"),G=n("12555"),Z=n("74696"),Y=n("60877"),X=n("13328"),Q=n("94511"),J=n("92759"),ee=n("16546"),et=n("3743"),en=n("46755"),ei=n("61850"),er=n("51801"),ea=n("73183"),ed=n("17116"),eo=n("26600"),el=n("27541"),es=n("51746"),ec=n("18865"),eu=n("47371"),eh=n("35037"),ep=n("19194"),ex=n("16288"),ef=n("52305"),em=n("79522"),eg=n("95699"),eb=n("72485"),ev=n("24373"),ey=n("39698"),eI=n("89263"),ek=n("22871"),ew=Object.defineProperty,ej=Object.defineProperties,eP=Object.getOwnPropertyDescriptors,eS=Object.getOwnPropertySymbols,eC=Object.prototype.hasOwnProperty,ez=Object.prototype.propertyIsEnumerable,eE=(e,t,n)=>t in e?ew(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,e_=(e,t)=>{for(var n in t||(t={}))eC.call(t,n)&&eE(e,n,t[n]);if(eS)for(var n of eS(t))ez.call(t,n)&&eE(e,n,t[n]);return e},eN=(e,t)=>ej(e,eP(t)),eA=(e,t)=>{var n={};for(var i in e)eC.call(e,i)&&0>t.indexOf(i)&&(n[i]=e[i]);if(null!=e&&eS)for(var i of eS(e))0>t.indexOf(i)&&ez.call(e,i)&&(n[i]=e[i]);return n},eT=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},eL=(e,t,n)=>(eT(e,t,"read from private field"),n?n.call(e):t.get(e)),eO=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},eM=(e,t,n,i)=>(eT(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n),eB=(e,t,n)=>(eT(e,t,"access private method"),n),eR=(e,t,n)=>new Promise((i,r)=>{var a=e=>{try{o(n.next(e))}catch(e){r(e)}},d=e=>{try{o(n.throw(e))}catch(e){r(e)}},o=e=>e.done?i(e.value):Promise.resolve(e.value).then(a,d);o((n=n.apply(e,t)).next())});function eD(){let{siteData:e}=(0,C.usePageData)(),t=e.lang;if(t&&"undefined"!=typeof window&&location.pathname.includes(`/${t}/`)){let e=location.pathname.replace(`/${t}/`,"/");return window.location.replace(e),(0,z.jsx)(z.Fragment,{})}return(0,z.jsxs)("div",{className:"m-auto mt-50 p-16 sm:p-8 sm:pt-24 sm:pb-40 text-center flex-center flex-col",children:[(0,z.jsx)("p",{className:"text-6xl font-semibold",children:"404"}),(0,z.jsx)("h1",{className:"leading-5 pt-3 text-xl font-bold",children:"PAGE NOT FOUND"}),(0,z.jsx)("div",{style:{height:"1px"},className:"mt-6 mx-auto mb-4.5 w-16 bg-gray-light-1"}),(0,z.jsx)("div",{className:"pt-5",children:(0,z.jsx)("a",{className:"py-2 px-4 rounded-2xl inline-block border-solid border-brand text-brand font-medium hover:border-brand-dark hover:text-brand-dark transition-colors duration-300",href:e.base,"aria-label":"go to home",children:"Take me home"})})]})}function eH(){var e,t,n;let i=(0,C.usePageData)(),{page:{lang:r}}=i,a=null!=(t=null==(e=null==i?void 0:i.siteData)?void 0:e.themeConfig)?t:{},d=null!=(n=i.siteData.lang)?n:"",o=null==a?void 0:a.locales;return o&&0!==o.length?eN(e_({},o.find(e=>e.lang===r)),{langRoutePrefix:r===d?"/":r}):{nav:a.nav,sidebar:a.sidebar,prevPageText:a.prevPageText,nextPageText:a.nextPageText,sourceCodeText:a.sourceCodeText,searchPlaceholderText:a.searchPlaceholderText}}var eF=(e,t)=>{let n;for(let i of Object.keys(e)){if(n&&n!==i)continue;if((0,C.isEqualPath)((0,C.withBase)(i),t))return{group:"Documentation",items:e[i]};let r=e[i].find(r=>{let a=r=>{if(!t.startsWith((0,C.withBase)(i))){for(let r of Object.keys(e))if(r!==i&&t.startsWith((0,T.addTrailingSlash)((0,C.withBase)(r))))return n=r,!1}let d=()=>"link"in r&&(0,C.isEqualPath)((0,C.withBase)(r.link),t);if("items"in r)return!!d()||r.items.some(e=>a(e));return d()};return a(r)});if(r){let t=e[i];return{group:"text"in r&&r.text||"",items:t}}}return{group:"Documentation",items:[]}};function e$(){var e;let t=eH(),n=null!=(e=t.sidebar)?e:{},{pathname:i}=(0,C.useLocation)(),r=decodeURIComponent(i),[a,d]=(0,N.useState)(eF(n,r));return(0,N.useEffect)(()=>{d(eF(n,r))},[r,t.lang]),a}function eW(){let{pathname:e}=(0,C.useLocation)(),{items:t}=e$(),n=[],i=e=>{"items"in e?(e.link&&n.push({text:e.text,link:e.link}),e.items.forEach(e=>{"dividerType"in e||i(e)})):n.push(e)};t.forEach(e=>!("dividerType"in e)&&i(e));let r=n.findIndex(t=>(0,C.isEqualPath)((0,C.withBase)(t.link),e)),a=n[r-1]||null;return{prevPage:a,nextPage:n[r+1]||null}}function eK(){var e,t,n;let{siteData:i,page:r}=(0,C.usePageData)(),a=null!=(n=null!=(t=eH().editLink)?t:null==(e=i.themeConfig)?void 0:e.editLink)?n:{};if(!a.docRepoBaseUrl||!a.text)return null;let{docRepoBaseUrl:d}=a;!d.endsWith("/")&&(d+="/");let o=r._relativePath.replace(/\\/g,"/"),l=`${d}${o}`;return{text:a.text,link:l}}function eU(){var e;let{siteData:{themeConfig:t},page:{frontmatter:n={}}}=(0,C.usePageData)(),i=(null==(e=null==n?void 0:n.navbar)||e)&&(null==t?void 0:t.hideNavbar)!=="always",[r,a]=(0,N.useState)(i);return[r,a]}function eq(){var e;let{siteData:{themeConfig:t}}=(0,C.usePageData)(),n=null!=(e=t.hideNavbar)?e:"never",[i,r]=(0,N.useState)(!1),{pathname:a}=(0,C.useLocation)(),d=(0,N.useRef)(0);return"never"!==n&&("always"===n||((0,N.useEffect)(()=>{r(!1);let e=(0,L.throttle)(()=>{let{scrollTop:e}=document.documentElement;if(e!==d.current)r(d.current>0&&e-d.current>0),d.current=e<=0?0:e},200);return window.addEventListener("mousewheel",e),window.addEventListener("touchmove",e),()=>{window.removeEventListener("mousewheel",e),window.removeEventListener("touchmove",e)}},[a]),i))}function eV(e,t,n=72){let i=parseInt(window.getComputedStyle(e).paddingTop,10),r=window.scrollY+e.getBoundingClientRect().top-n-i;window.scrollTo(e_({left:0,top:Math.round(r)},t?{behavior:"smooth"}:{}))}function eG(){let e=document.getElementById("aside-container"),t=Array.from(document.querySelectorAll(".rspress-doc .header-anchor")).filter(e=>{var t;return(null==(t=e.parentElement)?void 0:t.tagName)!=="H1"});if(!e||!t.length)return;let n=null;if(!Array.from((null==e?void 0:e.getElementsByTagName("a"))||[]).map(e=>decodeURIComponent(e.hash)).length)return;let i=(t,i)=>{if(t[i]){let r=t[i].getAttribute("href"),a=null==e?void 0:e.querySelector(`a[href="#${null==r?void 0:r.slice(1)}"] > span`);a&&(n&&n.classList.remove("aside-active"),(n=a).classList.add("aside-active"))}},r=()=>{if(document.documentElement.scrollTop+window.innerHeight>=document.documentElement.scrollHeight)i(t,t.length-1);else for(let e=0;e=d&&a{n&&n.classList.remove("aside-active"),window.removeEventListener("scroll",a)}}function eZ(){(0,T.inBrowser)()&&(window.addEventListener("click",e=>{let t=e.target.closest("a");if(t){let{origin:n,hash:i,target:r,pathname:a,search:d}=t,o=window.location;i&&"_blank"!==r&&n===o.origin&&(a===o.pathname&&d===o.search&&i&&t.classList.contains("header-anchor")?(e.preventDefault(),history.pushState(null,"",i),!function(e,t,n=!1){let i=null;try{i=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t.slice(1)))}catch(e){console.warn(e)}i&&eV(i,n)}(t,i,!0),window.dispatchEvent(new Event("hashchange"))):window.addEventListener("RspressReloadContent",()=>{location.hash.length>1&&eV(document.getElementById(location.hash.slice(1)),!1)}))}},{capture:!0}),window.addEventListener("hashchange",e=>{e.preventDefault()}))}function eY(){let e=(0,C.useLang)(),t=(0,C.useVersion)(),n=(0,C.usePageData)(),i=n.siteData.lang,r=n.siteData.multiVersion.default;return{normalizeLinkHref:n=>{let a=n;if((i||r)&&!(0,T.isExternalUrl)(a)&&!a.startsWith("#")){let n=(a=(0,C.removeBase)(a)).split("/").filter(Boolean),d="",o="",l="";return r&&(t!==r?(d=t,n[0]===t&&n.shift()):n[0]===r&&n.shift()),i&&(e!==i?(o=e,n[0]===e&&n.shift()):n[0]===i&&n.shift()),l=n.join("/"),(0,C.normalizeHrefInRuntime)((0,C.withBase)([d,o,l].filter(Boolean).join("/")))}return a}}}var eX="default",eQ=/[\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3]/u;function eJ(e){let t=e.toString().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"");return eQ.test(String(e))?t.normalize("NFC"):t}function e1(e){return e.replace(/https?:\/\/[^/]+/,"")}function e0(e){return e.charCodeAt(0)>255?3:1}var e2=e=>e.map(e=>"string"==typeof e?{value:e,label:e}:e);function e3(e,t){let n=0,i=0;for(let r=0;r=t);r++)i+=e0(e.charAt(r)),n++;return n}function e4(e){let t=0;for(let n=0;ne.lang===t).map(e=>eN(e_({},e),{normalizedContent:eJ(e.content),headers:e.toc.map(e=>eJ(e.text)).join(" "),normalizedTitle:eJ(e.title)})),i={tokenize:"full",async:!0,doc:{id:"routePath",field:["normalizedTitle","headers","normalizedContent"]},cache:100,split:/\W+/};eM(this,r,O.create(i)),eM(this,a,O.create(eN(e_({},i),{tokenize(e){let t=[],n=null;do(n=e5.exec(e))&&t.push(n[0]);while(n);return t}}))),eL(this,r).add(n),eL(this,a).add(n)})}search(e){return eR(this,null,function*(){var t,n;let{keyword:i,limit:d}=e,o={query:i,limit:d,field:["normalizedTitle","headers","normalizedContent"]};return[{index:eX,hits:(yield Promise.all([null==(t=eL(this,r))?void 0:t.search(o),null==(n=eL(this,a))?void 0:n.search(o)])).flat(2).filter(Boolean)}]})}};r=new WeakMap,a=new WeakMap,d=new WeakSet,o=function(e){return eR(this,null,function*(){return(yield fetch(`/builder/static/${T.SEARCH_INDEX_NAME}${e?`.${e}`:""}.${M.default[e]}.json`)).json()})};var e7=class{constructor(){eO(this,l,void 0)}init(e){return eR(this,null,function*(){eM(this,l,e)})}search(e){return eR(this,null,function*(){let{apiUrl:t,searchIndexes:n}=eL(this,l),{keyword:i,limit:r}=e,a=Object.entries({keyword:i,limit:r.toString(),searchIndexes:(null==n?void 0:n.map(e=>"string"==typeof e?e:e.value).join(","))||"",lang:eL(this,l).currentLang}).map(e=>e.map(encodeURIComponent).join("=")).join("&");try{return(yield fetch(`${t}?${a}`)).json()}catch(e){return console.error(e),[]}})}};l=new WeakMap;var e8=((i=e8||{}).Default="default",i.Custom="custom",i),e9=class{constructor(e){if(eO(this,h),eO(this,x),eO(this,m),eO(this,b),eO(this,y),eO(this,k),eO(this,s,void 0),eO(this,c,eX),eO(this,u,void 0),eM(this,s,e),eM(this,c,e.indexName),"remote"===e.mode)eM(this,u,new e7);else eM(this,u,new e6)}init(){return eR(this,null,function*(){var e;yield null==(e=eL(this,u))?void 0:e.init(eL(this,s))})}match(e,t=7){return eR(this,null,function*(){var n;let i=yield null==(n=eL(this,u))?void 0:n.search({keyword:e,limit:t}),r=eJ(e),a=(null==i?void 0:i.find(e=>eB(this,k,w).call(this,e.index)))||{index:eX,renderType:"default",hits:[]};return[{group:eL(this,c),renderType:"default",result:eB(this,h,p).call(this,r,a)},...((null==i?void 0:i.filter(e=>!eB(this,k,w).call(this,e.index)))||[]).map(e=>({group:e.index,renderType:"default",result:eB(this,h,p).call(this,r,e)}))]})}};function te(){var e;let t=(0,C.useLang)(),[n,i]=(0,N.useState)(!1),{sidebar:r}=eH(),a=e=>eF(r,e).group,d=(0,N.useRef)(null);return(0,N.useEffect)(()=>{!function(){eR(this,null,function*(){if(!n){let e=new e9({mode:"local",currentLang:t,extractGroupName:a});d.current=e,yield e.init(),i(!0)}})}()},[]),{initialized:n,search:null==(e=d.current)?void 0:e.match.bind(d.current)}}function tt(){let{siteData:e,page:t}=(0,C.usePageData)(),n=e.lang||"",i=Object.values(e.themeConfig.locales||{}).map(e=>e.lang)||[],r=t.lang;(0,N.useEffect)(()=>{if(!n)return;let{pathname:e}=window.location,t=(0,C.removeBase)(e),a="rspress-visited";if(localStorage.getItem(a))return;localStorage.setItem(a,"1");let d=window.navigator.language.split("-")[0];i.includes(d)&&d!==r&&(d===n?window.location.replace(e.replace(`/${r}`,"")):r===n?window.location.replace((0,C.withBase)(`/${d}${t}`)):window.location.replace(e.replace(`/${r}`,`/${d}`)))},[])}function tn(e,t,n=!1){return!!t&&(n?(0,C.isEqualPath)(e,t):(0,C.isEqualPath)(e,t)||e.startsWith(t))}function ti(e,t){return"string"==typeof e?e:"dark"===t?e.dark:e.light}function tr(){return window.innerWidth<768}function ta(e){return e?(0,L.isNumber)(e)?e:(0,R.default)(e)?B(e):e:""}function td(e){return ta(e.replace(/\*\*(.*?)\*\*/g,"$1").replace(/`(.*?)`/g,"$1"))}function to(e){var t;let{headers:n}=e,i=n.length>0,r=(null==(t=n[0])?void 0:t.depth)||2,a=eq();return(0,N.useEffect)(()=>{let e;setTimeout(()=>{e=eG()},100);let t=decodeURIComponent(window.location.hash);if(t){let e=document.getElementById(t.slice(1));e&&eV(e,!1,a?0:D.DEFAULT_NAV_HEIGHT)}else window.scrollTo(0,0);return()=>{e&&e()}},[n]),(0,z.jsx)("div",{className:"flex flex-col",children:(0,z.jsx)("div",{className:i?"(0,z.jsx)("li",{children:(0,z.jsx)("a",{href:`#${e.id}`,className:"aside-link transition-all duration-300 hover:text-text-1 text-text-2 block",style:{paddingLeft:(e.depth-r)*12,fontWeight:"semibold"},onClick:t=>{t.preventDefault(),window.location.hash=e.id;let n=document.getElementById(e.id);n&&eV(n,!1,a?0:D.DEFAULT_NAV_HEIGHT)},children:(0,z.jsx)("span",{className:"aside-link-text block",children:td(e.text)})})},e.id))})})]})})})}s=new WeakMap,c=new WeakMap,u=new WeakMap,h=new WeakSet,p=function(e,t){let n=[];return null==t||t.hits.forEach(t=>{eB(this,x,f).call(this,t,e,n),!eB(this,m,g).call(this,t,e,n)&&eB(this,b,v).call(this,t,e,n)}),n},x=new WeakSet,f=function(e,t,n){let{title:i=""}=e,r=eJ(i);return!!r.includes(t)&&(n.push({type:"title",title:i,header:i,link:`${e.domain}${(0,C.normalizeHrefInRuntime)(e.routePath)}`,query:t,highlightInfoList:[{start:r.indexOf(t),length:e4(t)}],group:eL(this,s).extractGroupName(e.routePath)}),!0)},m=new WeakSet,g=function(e,t,n){let{toc:i=[],domain:r="",title:a=""}=e;for(let[d,o]of i.entries())if(eJ(o.text).includes(t)){let l=(function(e,t){let n=e[t],i=t,r=[n];for(;n&&n.depth>2;){let t=!1;for(let a=i-1;a>=0;a--){let d=e[a];if(d.depth>1&&d.depth===n.depth-1){n=d,i=a,r.unshift(n),t=!0;break}}if(!t)break}return r})(i,d).map(e=>e.text).join(" > "),c=eJ(l).indexOf(t),u=`${a} > `;return n.push({type:"header",title:e.title,header:`${u}${l}`,highlightInfoList:[{start:c+u.length,length:e4(t)}],link:`${r}${(0,C.normalizeHrefInRuntime)(e.routePath)}#${o.id}`,query:t,group:eL(this,s).extractGroupName(e.routePath)}),!0}return!1},b=new WeakSet,v=function(e,t,n){var i,r,a;let{content:d,toc:o,domain:l}=e;if(!d.length)return;let c=eJ(d),u=c.indexOf(t),h=o.map(e=>e.charIndex),p=e=>o[h.findIndex((t,n)=>{if(!(n=e)return!0}return!1})];if(-1===u){let a=null==(i=e._matchesPosition)?void 0:i.content;if(!(null==a?void 0:a.length))return;let o=e._matchesPosition.content[0].start,c=p(o),u=e3(d,o),h=e3(d,o+100),x=d.slice(u,h),f=e._matchesPosition.content.filter(e=>e.start>=o&&e.start+e.length<=o+100).map(e=>({start:e3(d,e.start)-u+3,length:e.length}));n.push({type:"content",title:e.title,header:null!=(r=null==c?void 0:c.text)?r:e.title,link:`${l}${(0,C.normalizeHrefInRuntime)(e.routePath)}${c?`#${c.id}`:""}`,query:t,highlightInfoList:f,group:eL(this,s).extractGroupName(e.routePath),statement:`...${x}...`});return}for(;-1!==u;){let i=p(u),r=d.slice(0,u).lastIndexOf("\n");r=-1===r?0:r;let o=d.indexOf("\n\n",u+t.length),h=d.slice(r,o);h.length>100&&(h=eB(this,y,I).call(this,h,t));let x=eJ(h).indexOf(t),f=[{start:x,length:e4(t)}];n.push({type:"content",title:e.title,header:null!=(a=null==i?void 0:i.text)?a:e.title,statement:h,highlightInfoList:f,link:`${l}${(0,C.normalizeHrefInRuntime)(e.routePath)}${i?`#${i.id}`:""}`,query:t,group:eL(this,s).extractGroupName(e.routePath)}),u=c.indexOf(t,u+h.length-x)}},y=new WeakSet,I=function(e,t){let n=eJ(e).indexOf(eJ(t)),i=Math.floor((100-t.length)/2),r=e.slice(0,n);r.length>i&&(r=`...${e.slice(n-i+3,n)}`);let a=e.slice(n+t.length);return a.length>i&&(a=`${e.slice(n+t.length,n+i-3)}...`),r+t+a},k=new WeakSet,w=function(e){return e===eL(this,c)||e===eX};var tl={editLink:"editLink_2a169"};function ts(){let e=eK();if(!e)return null;let{text:t,link:n}=e;return(0,z.jsx)("a",{href:n,target:"_blank",className:tl.editLink,children:t})}function tc(){let{lastUpdatedText:e="Last Updated"}=eH(),{page:{lastUpdatedTime:t},siteData:n}=(0,C.usePageData)(),{themeConfig:i}=n,r=(null==i?void 0:i.lastUpdatedText)||e;return(0,z.jsx)("div",{className:"flex text-sm text-text-2 leading-6 sm:leading-8 font-medium",children:(0,z.jsxs)("p",{children:[r,": ",(0,z.jsx)("span",{children:t})]})})}var tu={link:"link_03735"};function th(e){let{href:t="/",children:n,className:i="",onNavigate:r}=e,a=eA(e,["href","children","className","onNavigate"]),d=(0,T.isExternalUrl)(t),o=d?"_blank":"",l=d?"noopener noreferrer":void 0,s=d?t:(0,C.withBase)((0,C.normalizeHrefInRuntime)(t)),c=(0,C.useNavigate)(),{pathname:u}=(0,C.useLocation)(),h=(0,C.isEqualPath)(u,s);return d?(0,z.jsx)("a",eN(e_({},a),{href:s,target:o,rel:l,className:`${tu.link} ${i}`,children:n})):(0,z.jsx)("a",eN(e_({},a),{className:`${tu.link} ${i} cursor-pointer`,rel:l,target:o,onClick:e=>eR(this,null,function*(){if(0!==e.button||e.currentTarget.target&&"_self"!==e.currentTarget.target||e.metaKey||e.shiftKey||e.altKey||e.ctrlKey)return;e.preventDefault();let t=s.split("#")[1];if(!d&&h&&t){let e=document.getElementById(t);e&&(0,$.scrollToTarget)(e,!0);return}if(!h){let e=(0,C.matchRoutes)(F.routes,(0,C.normalizeRoutePath)(s));if(null==e?void 0:e.length){let t=setTimeout(()=>{H.start()},200);yield e[0].route.preload(),clearTimeout(t),H.done()}null==r||r(),c(s,{replace:!1})}}),href:s,children:n}))}H.configure({showSpinner:!1});var tp={pagerLink:"pager-link_9b9a7",title:"title_9b9a7",next:"next_9b9a7",desc:"desc_9b9a7"};function tx(e){let{type:t,text:n,href:i}=e,{prevPageText:r="Previous Page",nextPageText:a="Next page"}=eH(),d="prev"===t?tp.pagerLink:`${tp.pagerLink} ${tp.next}`;return(0,z.jsxs)(th,{href:i,className:d,children:[(0,z.jsx)("span",{className:tp.desc,children:"prev"===t?r:a}),(0,z.jsx)("span",{className:tp.title,children:n})]})}var tf={prev:"prev_e7091",next:"next_e7091"};function tm(){let{prevPage:e,nextPage:t}=eW(),{lastUpdated:n=!1}=eH(),{siteData:i}=(0,C.usePageData)(),{themeConfig:r}=i,a=r.lastUpdated||n;return(0,z.jsxs)("footer",{className:"mt-8",children:[(0,z.jsx)("div",{className:"xs:flex pb-5 px-2 justify-end items-center",children:a&&(0,z.jsx)(tc,{})}),(0,z.jsx)("div",{className:"flex flex-col",children:(0,z.jsx)(ts,{})}),(0,z.jsxs)("div",{className:"flex flex-col sm:flex-row sm:justify-around gap-4 pt-6",children:[(0,z.jsx)("div",{className:"prev_e7091 flex flex-col",children:e?(0,z.jsx)(tx,{type:"prev",text:e.text,href:(0,C.normalizeHrefInRuntime)(e.link)}):null}),(0,z.jsx)("div",{className:"next_e7091 flex flex-col",children:t?(0,z.jsx)(tx,{type:"next",text:t.text,href:(0,C.normalizeHrefInRuntime)(t.link)}):null})]})]})}var tg={hidden:"hidden_f6cde",container:"container_f6cde",navContainer:"navContainer_f6cde",leftNav:"leftNav_f6cde",rightNav:"rightNav_f6cde",singleItem:"singleItem_f6cde",activeItem:"activeItem_f6cde",navBarTitle:"navBarTitle_f6cde",menuItem:"menu-item_f6cde",mobileNavMenu:"mobileNavMenu_f6cde"},tb=()=>{var e;let{siteData:t}=(0,C.usePageData)(),n=(0,$.useLocaleSiteData)(),{logo:i}=t,r=null!=(e=n.title)?e:t.title,{theme:a}=(0,N.useContext)(C.ThemeContext),[d,o]=(0,N.useState)((0,$.getLogoUrl)(i,a));return(0,N.useEffect)(()=>{o((0,$.getLogoUrl)(i,a))},[a]),(0,z.jsx)("div",{className:`${tg.navBarTitle}`,children:(0,z.jsx)("a",{href:(0,C.withBase)(n.langRoutePrefix||"/"),className:"flex items-center w-full h-full text-base font-semibold transition-opacity duration-300 hover:opacity-60",children:d?(0,z.jsx)("img",{src:(0,C.normalizeImagePath)(d),alt:"logo",id:"logo",className:"mr-4 rspress-logo"}):(0,z.jsx)("span",{children:r})})})},tv={navTitleMask:"navTitleMask_71eca",sidebar:"sidebar_71eca",sidebarContainer:"sidebarContainer_71eca",sidebarContent:"sidebarContent_71eca",open:"open_71eca",menuLink:"menuLink_71eca",menuItem:"menuItem_71eca",collapseContainer:"collapseContainer_71eca",menuItemStatic:"menuItemStatic_71eca",menuItemActive:"menuItemActive_71eca",menuGroupActive:"menuGroupActive_71eca"},ty=({tag:e})=>e?e.trim().startsWith("{if(h.current||!s.current||!u.current)return;c.current&&clearTimeout(c.current);let e=s.current,t=u.current,n=t.clientHeight+4;f?(e.style.maxHeight=`${n}px`,e.style.transitionDuration="0.5s",t.style.opacity="0",c.current=setTimeout(()=>{s.current&&(s.current.style.maxHeight="0px")},0)):(e.style.maxHeight=`${n}px`,e.style.transitionDuration="0.3s",t.style.opacity="1",c.current=setTimeout(()=>{s.current&&s.current.style.removeProperty("max-height")},300))},[f]),(0,N.useEffect)(()=>{h.current=!1},[]);let b=e=>{e.stopPropagation(),d(e=>{let t=[...e],n=a.split("-").map(Number),i=t[n.shift()];for(let e of n)i=i.items[e];return"items"in i&&(i.collapsed=!i.collapsed),t})};return(0,z.jsxs)("section",{className:"mt-0.5 block",style:{marginLeft:0===i?0:"18px"},children:[(0,z.jsxs)("div",{className:`flex justify-between items-center ${l&&!x?tv.menuGroupActive:""} ${x?tv.menuItemActive:m||n.link?tv.menuItem:tv.menuItemStatic}`,onMouseEnter:()=>n.link&&e.preloadLink(n.link),onClick:e=>{n.link?(o((0,C.withBase)((0,C.normalizeHrefInRuntime)(n.link))),f&&b(e)):m&&b(e)},style:{borderRadius:0===i?"0 var(--rp-radius) var(--rp-radius) 0":void 0,cursor:m||n.link?"pointer":"normal"},children:[(0,z.jsxs)("h2",{className:"py-2 px-3 text-sm font-medium flex",style:e_({},0===i?tE:{}),children:[(0,z.jsx)(ty,{tag:n.tag}),(0,z.jsx)("span",{className:"flex-center",children:(0,$.renderInlineMarkdown)(n.text)})]}),m&&(0,z.jsx)("div",{className:`${tv.collapseContainer} p-2 rounded-xl`,onClick:b,children:g})]}),(0,z.jsx)("div",{ref:s,className:"transition-all duration-300 ease-in-out",style:{overflow:"hidden",maxHeight:p.current?0:void 0},children:(0,z.jsx)("div",{ref:u,className:"rspress-sidebar-group transition-opacity duration-500 ease-in-out",style:{opacity:p.current?0:1,marginLeft:0===i?"12px":0},children:null==(t=null==n?void 0:n.items)?void 0:t.map((t,n)=>"dividerType"in t?(0,z.jsx)(tI,{depth:i+1,dividerType:t.dividerType},n):(0,z.jsx)("div",{children:(0,z.jsx)(tP,eN(e_({},e),{item:t,depth:i+1,id:`${a}-${n}`,preloadLink:e.preloadLink}))},n))})})]},a)}var tj=e=>e.replace(/\.(mdx?)$/,"");function tP(e){let{item:t,depth:n=0,activeMatcher:i,id:r,setSidebarData:a}=e,d="link"in t&&t.link&&i(t.link),{page:o}=(0,C.usePageData)(),l=(0,N.useRef)(null),s=(0,N.useRef)(t.text);return((0,N.useEffect)(()=>{var e;d&&(null==(e=l.current)||e.scrollIntoView({block:"center"}))},[]),t._fileKey===tj(o.pagePath)&&o.title&&(s.current=o.title),"items"in t)?(0,z.jsx)(tw,{id:r,item:t,depth:n,activeMatcher:i,collapsed:t.collapsed,setSidebarData:a,preloadLink:e.preloadLink},`${t.text}-${r}`):(0,z.jsx)(th,{href:(0,C.normalizeHrefInRuntime)(t.link),className:tv.menuLink,children:(0,z.jsxs)("div",{ref:l,onMouseEnter:()=>e.preloadLink(t.link),className:`${d?tv.menuItemActive:tv.menuItem} mt-0.5 py-2 px-3 font-medium flex`,style:e_(e_({fontSize:0===n?"14px":"13px",marginLeft:0===n?0:"18px",borderRadius:"0 var(--rp-radius) var(--rp-radius) 0"},0===n?tE:{}),d?{color:"var(--rp-c-brand)"}:{}),children:[(0,z.jsx)(ty,{tag:t.tag}),(0,z.jsx)("span",{className:"flex-center",children:(0,$.renderInlineMarkdown)(s.current)})]})})}function tS({sectionHeaderText:e,tag:t}){return(0,z.jsxs)("div",{className:"rspress-sidebar-section-header",children:[(0,z.jsx)(ty,{tag:t}),(0,z.jsx)("span",{children:(0,$.renderInlineMarkdown)(e)})]})}var tC=e=>"dividerType"in e,tz=e=>"sectionHeaderText"in e,tE={fontSize:"14px",paddingLeft:"24px",fontWeight:"bold"},t_=new WeakMap;function tN(e){let{isSidebarOpen:t,beforeSidebar:n,afterSidebar:i,uiSwitch:r}=e,{items:a}=e$(),d=eH(),{pathname:o}=(0,C.useLocation)(),l=(0,T.normalizeSlash)(d.langRoutePrefix||""),[s,c]=(0,N.useState)(a.filter(Boolean).flat()),u=decodeURIComponent(o);(0,N.useEffect)(()=>{if(a===s)return;t_=new WeakMap;let e=t=>t_.has(t)?t_.get(t):"link"in t&&t.link&&p(t.link)||"items"in t&&t.items.some(t=>e(t))?(t_.set(t,!0),!0):(t_.set(t,!1),!1),t=n=>{"items"in n&&(n.items.forEach(t),e(n)&&(n.collapsed=!1))},n=a.filter(Boolean).flat();n.forEach(t),c(n)},[a,u]);let h=e=>e.replace(l,""),p=e=>tn((0,C.removeBase)(h(u)),h(e),!0),x=e=>{let t=(0,C.matchRoutes)(F.routes,e);if(null==t?void 0:t.length){let{route:e}=t[0];e.preload()}};return(0,z.jsx)("aside",{className:`${tv.sidebar} rspress-sidebar ${t?tv.open:""}`,children:(0,z.jsxs)("div",{className:`${tv.sidebarContainer}`,children:[r.showNavbar?(0,z.jsx)("div",{className:tv.navTitleMask,children:(0,z.jsx)(tb,{})}):null,(0,z.jsx)("div",{className:`mt-1 ${tv.sidebarContent}`,children:(0,z.jsx)("div",{className:"rspress-scrollbar",style:{maxHeight:"calc(100vh - var(--rp-nav-height) - 8px)",overflow:"auto"},children:(0,z.jsxs)("nav",{className:"pb-2",children:[n,s.map((e,t)=>{var n;if(tC(e))return(0,z.jsx)(tI,{depth:0,dividerType:e.dividerType},t);if(tz(e))return(0,z.jsx)(tS,{sectionHeaderText:e.sectionHeaderText,tag:e.tag},t);let i=function(e,t){return[e._fileKey,e.link,e.text,"items"in e?e.items.length:-1,...t].join("|")}(e,[t]);return(0,z.jsx)(tP,{id:i,item:e,depth:0,activeMatcher:p,collapsed:null==(n=e.collapsed)||n,setSidebarData:c,preloadLink:x},i)}),i]})})})]})})}var tA=e=>(0,z.jsx)("li",{children:(0,z.jsx)("a",{href:`#${e.id}`,className:"rspress-toc-link sm:text-normal text-sm",style:{marginLeft:(e.depth-2)*12},onClick:t=>{t.preventDefault(),window.location.hash=e.id;let n=document.getElementById(e.id);n&&(0,$.scrollToTarget)(n,!1)},children:(0,z.jsx)("span",{className:"rspress-toc-link-text block",children:(0,$.renderInlineMarkdown)(e.text)})})},e.id);function tT(){let{page:e}=(0,C.usePageData)();return(0,z.jsx)("ul",{children:e.toc.map(e=>(0,z.jsx)(tA,e_({},e),e.id))})}function tL({beforeSidebar:e,afterSidebar:t,uiSwitch:n}){let[i,r]=(0,N.useState)(!1),[a,d]=(0,N.useState)(!1),o=(0,N.useRef)(),{pathname:l}=(0,C.useLocation)();(0,N.useEffect)(()=>{r(!1)},[l]),(0,N.useEffect)(()=>(document.addEventListener("mouseup",s),document.addEventListener("touchend",s),()=>{document.addEventListener("mouseup",s),document.removeEventListener("touchend",s)}),[]);let s=e=>{let{current:t}=o;t&&!t.contains(e.target)&&d(!1)};return(0,z.jsxs)(N.Fragment,{children:[(0,z.jsxs)("div",{className:"rspress-sidebar-menu",children:[(0,z.jsxs)("button",{onClick:function(){r(!0)},className:"flex-center",children:[(0,z.jsx)("div",{className:"text-md mr-2",children:(0,z.jsx)(tk,{icon:W.default})}),(0,z.jsx)("span",{className:"text-sm",children:"Menu"})]}),(0,z.jsxs)("button",{onClick:()=>d(e=>!e),className:"flex-center",children:[(0,z.jsx)("span",{className:"text-sm",children:"On this page"}),(0,z.jsx)("div",{className:"text-md mr-2",children:(0,z.jsx)(tk,{icon:K.default})})]}),(0,z.jsx)("div",{className:"rspress-local-toc-container",style:{display:a?"block":"none"},ref:o,children:(0,z.jsx)(tT,{})})]}),(0,z.jsx)(tN,{isSidebarOpen:i,beforeSidebar:e,afterSidebar:t,uiSwitch:n}),i?(0,z.jsx)("div",{onClick:function(){r(!1)},className:"rspress-sidebar-back-drop",style:{background:"rgba(0, 0, 0, 0.6)"}}):null]})}var tO={"header-anchor":"header-anchor_8f375",headerAnchor:"header-anchor_8f375","overview-groups":"overview-groups_8f375",overviewGroups:"overview-groups_8f375","overview-group-li":"overview-group-li_8f375",overviewGroupLi:"overview-group-li_8f375","level-2":"level-2_8f375",level2:"level-2_8f375","overview-group":"overview-group_8f375",overviewGroup:"overview-group_8f375",header:"header_8f375"};function tM(e){let{siteData:t,page:{routePath:n,title:i}}=(0,C.usePageData)(),{content:r,groups:a,defaultGroupTitle:d="Others"}=e,o=e=>e.startsWith(n.replace(/overview$/,""))&&!(0,C.isEqualPath)(e,n),l=e=>"link"in e&&e.link?e.link:"items"in e?l(e.items[0]):"",{pages:s}=t,c=s.filter(e=>o(e.routePath)),{items:u}=e$();function h(e){var t;let n=c.find(t=>(0,C.isEqualPath)(t.routePath,(0,C.withBase)(e.link||""))),i=l(e);return eN(e_({},e),{link:i,headers:(null==(t=null==n?void 0:n.toc)?void 0:t.filter(e=>2===e.depth))||[]})}let p=null!=a?a:(0,N.useMemo)(()=>{let e=u.filter(e=>"items"in e&&!!e.items&&e.items.filter(e=>o(l(e))).length>0).map(e=>({name:e.text||"",items:e.items.map(h).filter(Boolean)})),t=u.filter(e=>!("items"in e)&&o(e.link));return[...e,...t.length>0?[{name:d,items:t.map(h)}]:[]]},[u]);return(0,z.jsxs)("div",{className:"overview-index mx-auto px-8",children:[(0,z.jsx)("div",{className:"flex items-center justify-between",children:!i&&(0,z.jsx)("h1",{className:"text-3xl leading-10 tracking-tight",children:"Overview"})}),r,p.map(e=>(0,z.jsxs)("div",{className:"mb-16",children:[e.name===d&&1===p.length?(0,z.jsx)("h2",{style:{paddingTop:0}}):(0,z.jsx)("h2",{children:e.name}),(0,z.jsx)("div",{className:tO.overviewGroups,children:e.items.map(e=>{var t;return(0,z.jsxs)("div",{className:tO.overviewGroup,children:[(0,z.jsx)("div",{className:"flex",children:(0,z.jsx)("h3",{style:{marginBottom:8},children:(0,z.jsx)(th,{href:(0,C.normalizeHrefInRuntime)(e.link),children:e.text})})}),(0,z.jsx)("ul",{className:"list-none",children:null==(t=e.headers)?void 0:t.map(t=>(0,z.jsx)("li",{className:`${tO.overviewGroupLi} ${tO[`level${t.depth}`]} first:mt-2`,children:(0,z.jsx)(th,{href:`${(0,C.normalizeHrefInRuntime)(e.link)}#${t.id}`,children:t.text})},t.id))})]},e.link)})})]},e.name))]})}var tB=(0,N.createContext)({}),tR={scrollToTop:"scroll-to-top_1a167",entered:"entered_1a167"};function tD(){let[e,t]=(0,N.useState)(!1),n=()=>{t((window.scrollY||document.documentElement.scrollTop)>0)};return(0,N.useEffect)(()=>{window.addEventListener("scroll",n)},[]),(0,z.jsx)("button",{className:`${tR.scrollToTop} ${e?tR.entered:""}`,onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})},children:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:"w-6 h-6",children:(0,z.jsx)("path",{fillRule:"evenodd",d:"M11.47 2.47a.75.75 0 0 1 1.06 0l7.5 7.5a.75.75 0 1 1-1.06 1.06l-6.22-6.22V21a.75.75 0 0 1-1.5 0V4.81l-6.22 6.22a.75.75 0 1 1-1.06-1.06l7.5-7.5Z",clipRule:"evenodd"})})})}var tH={asideContainer:"aside-container_edeb4",docLayout:"docLayout_edeb4",content:"content_edeb4"};function tF(e){var t,n;let{beforeDocFooter:i,afterDocFooter:r,beforeDoc:a,afterDoc:d,beforeOutline:o,afterOutline:l,beforeSidebar:s,afterSidebar:c,uiSwitch:u}=e,{siteData:h,page:p}=(0,C.usePageData)(),{toc:x=[],frontmatter:f}=p,[m,g]=(0,N.useState)({}),{themeConfig:b}=h,v=null!=(t=b.enableScrollToTop)&&t,y=eH(),I=(null==y?void 0:y.outlineTitle)||(null==b?void 0:b.outlineTitle)||"ON THIS PAGE",k=null!=(n=null==f?void 0:f.overview)&&n,w=(0,z.jsx)(tB.Provider,{value:{tabData:m,setTabData:g},children:(0,z.jsx)(A.MDXProvider,{components:(0,_.getCustomMDXComponent)(),children:(0,z.jsx)(C.Content,{})})});return(0,z.jsxs)("div",{className:`${tH.docLayout} pt-0`,style:e_({},u.showNavbar?{}:{marginTop:0}),children:[a,u.showSidebar?(0,z.jsx)(tL,{beforeSidebar:s,afterSidebar:c,uiSwitch:u}):null,(0,z.jsxs)("div",{className:`${tH.content} rspress-doc-container flex flex-shrink-0 mx-auto`,children:[(0,z.jsx)("div",{className:"w-full flex-1",children:k?(0,z.jsx)(tM,{content:w}):(0,z.jsxs)("div",{children:[(0,z.jsx)("div",{className:"rspress-doc",children:w}),(0,z.jsxs)("div",{className:"rspress-doc-footer",children:[i,u.showDocFooter&&(0,z.jsx)(tm,{}),r]})]})}),v&&(0,z.jsx)(C.NoSSR,{children:(0,z.jsx)(tD,{})}),u.showAside?(0,z.jsx)("div",{className:tH.asideContainer,style:e_({},u.showNavbar?{}:{marginTop:0,paddingTop:"32px"}),children:(0,z.jsxs)("div",{children:[o,(0,z.jsx)(to,{headers:x,outlineTitle:I}),l]})}):null]}),d]})}var t$=e=>{var t;let{top:n,bottom:i,beforeDocFooter:r,afterDocFooter:a,beforeDoc:d,afterDoc:o,beforeSidebar:l,afterSidebar:s,beforeOutline:c,afterOutline:u,beforeNavTitle:h,afterNavTitle:p,beforeNav:x,beforeHero:f,afterHero:m,beforeFeatures:g,afterFeatures:b,afterNavMenu:v}=e,y={beforeDocFooter:r,afterDocFooter:a,beforeDoc:d,afterDoc:o,beforeSidebar:l,afterSidebar:s,beforeOutline:c,afterOutline:u},I={beforeHero:f,afterHero:m,beforeFeatures:g,afterFeatures:b},{siteData:k,page:w}=(0,C.usePageData)(),{pageType:j,lang:P,title:S,frontmatter:N}=w,A=(0,$.useLocaleSiteData)();(0,U.useRedirect4FirstVisit)();let T=null!=(t=null==N?void 0:N.title)?t:S,L=k.title||A.title;T=T&&"doc"===j?`${T} - ${L}`:L;let O=(null==N?void 0:N.description)||k.description||A.description,M=(0,q.useUISwitch)();return(0,z.jsxs)("div",{children:[(0,z.jsxs)(E.Helmet,{htmlAttributes:{lang:P||"en"},children:[T?(0,z.jsx)("title",{children:T}):null,O?(0,z.jsx)("meta",{name:"description",content:O}):null]}),n,"blank"!==j&&M.showNavbar&&(0,z.jsx)(_.Nav,{beforeNavTitle:h,afterNavTitle:p,beforeNav:x,afterNavMenu:v}),(0,z.jsx)("section",{children:(()=>{switch(j){case"home":return(0,z.jsx)(_.default.HomeLayout,e_({},I));case"doc":return(0,z.jsx)(tF,eN(e_({},y),{uiSwitch:M}));case"404":return(0,z.jsx)(_.default.NotFoundLayout,{});case"custom":case"blank":return(0,z.jsx)(C.Content,{});default:return(0,z.jsx)(tF,e_({},y))}})()}),i]})},tW={button:"button_72e53",medium:"medium_72e53",big:"big_72e53",brand:"brand_72e53",alt:"alt_72e53"};function tK(e){let{theme:t="brand",size:n="big",href:i="/",external:r=!1,className:a=""}=e,d=null;return"button"===e.type?d="button":"a"===e.type&&(d=r?"a":th),N.createElement(null!=d?d:"a",{className:`button_72e53 ${tW[t]} ${tW[n]} ${a}`,href:i},e.text)}var tU={clip:"clip_c867a",mask:"mask_c867a"},tq={name:"modern",text:"modern ssg",tagline:"modern ssg",actions:[],image:void 0};function tV({frontmatter:e}){var t,n,i;let r=(null==e?void 0:e.hero)||tq,a=void 0!==r.image,d=a?"sm:max-w-xl":"sm:max-w-4xl",o=r.text?r.text.toString().split(/\n/g).filter(e=>""!==e):[];return(0,z.jsxs)("div",{className:"m-auto pt-0 px-6 pb-12 sm:pt-10 sm:px-16 md:pt-16 md:px-16 md:pb-16",children:[(0,z.jsx)("div",{className:"mask_c867a",style:{left:a?"75%":"50%"}}),(0,z.jsxs)("div",{className:"m-auto flex flex-col md:flex-row max-w-6xl min-h-[50vh] mt-12 sm:mt-0",children:[(0,z.jsxs)("div",{className:"flex flex-col justify-center text-center max-w-xl sm:max-w-4xl m-auto order-2 md:order-1",children:[(0,z.jsx)("h1",{className:"font-bold text-3xl pb-2 sm:text-6xl md:text-7xl m-auto sm:m-4 md:m-0 md:pb-3 lg:pb-2 leading-tight z-10",children:(0,z.jsx)("span",{className:"clip_c867a",style:{lineHeight:"1.3"},children:ta(r.name)})}),0!==o.length&&o.map(e=>(0,z.jsx)("p",{className:`rspress-home-hero-text mx-auto md:m-0 text-3xl sm:text-5xl md:text-6xl sm:pb-2 font-bold z-10 ${d}`,style:{lineHeight:"1.2"},children:ta(e)},e)),(0,z.jsx)("p",{className:`rspress-home-hero-tagline whitespace-pre-wrap pt-4 m-auto md:m-0 text-sm sm:tex-xl md:text-2xl text-text-2 font-medium z-10 ${d}`,children:ta(r.tagline)}),(null==(t=r.actions)?void 0:t.length)&&(0,z.jsx)("div",{className:"grid md:flex md:flex-wrap md:justify-center gap-3 m--1.5 pt-6 sm:pt-8 z-10",children:r.actions.map(e=>(0,z.jsx)("div",{className:"flex flex-shrink-0 p-1",children:(0,z.jsx)(tK,{type:"a",text:ta(e.text),href:(0,C.normalizeHrefInRuntime)(e.link),theme:e.theme,className:"w-full"})},e.link))})]}),a?(0,z.jsx)("div",{className:"rspress-home-hero-image md:flex-center m-auto order-1 md:order-2 sm:flex md:none lg:flex",children:(0,z.jsx)("img",{src:(0,C.normalizeImagePath)(null==(n=r.image)?void 0:n.src),alt:null==(i=r.image)?void 0:i.alt,width:375,height:375})}):null]})]})}var tG={"grid-2":"grid-2_ffda3",grid2:"grid-2_ffda3","grid-4":"grid-4_ffda3",grid4:"grid-4_ffda3","grid-6":"grid-6_ffda3",grid6:"grid-6_ffda3","grid-3":"grid-3_ffda3",grid3:"grid-3_ffda3",featureCard:"featureCard_ffda3"},tZ=e=>{let{span:t}=e;return`grid-${t||4}`};function tY({frontmatter:e}){let t=null==e?void 0:e.features;return(0,z.jsx)("div",{className:"overflow-hidden m-auto flex flex-wrap max-w-6xl",children:null==t?void 0:t.map(e=>{let{icon:t,title:n,details:i,link:r}=e;return(0,z.jsx)("div",{className:`${tG[tZ(e)]} rounded hover:var(--rp-c-brand)`,children:(0,z.jsx)("div",{className:"h-full p-2",children:(0,z.jsxs)("article",{className:`rspress-home-feature-card ${tG.featureCard} h-full p-8 rounded-4xl border-transparent`,style:{cursor:r?"pointer":"auto"},onClick:()=>{r&&(window.location.href=r)},children:[t?(0,z.jsx)("div",{className:"flex-center",children:(0,z.jsx)("div",{className:"rspress-home-feature-icon w-12 h-12 text-3xl text-center",children:t})}):null,(0,z.jsx)("h2",{className:"rspress-home-feature-title font-bold text-center",children:n}),(0,z.jsx)("p",{className:"rspress-home-feature-detail leading-6 pt-2 text-sm text-text-2 font-medium",children:(0,$.renderHtmlOrText)(i)})]},n)})},n)})})}function tX(e){let{beforeHero:t,afterHero:n,beforeFeatures:i,afterFeatures:r}=e,{page:{frontmatter:a}}=(0,C.usePageData)();return(0,z.jsxs)("div",{className:"relative",style:{minHeight:"calc(100vh - var(--rp-nav-height))",paddingBottom:"80px"},children:[(0,z.jsxs)("div",{className:"pb-12",children:[t,(0,z.jsx)(tV,{frontmatter:a}),n,i,(0,z.jsx)(tY,{frontmatter:a}),r]}),(0,z.jsx)(_.HomeFooter,{})]})}function tQ(e){let{pathname:t,base:n}=e,i=new RegExp(e.activeMatch||e.link).test((0,T.withoutBase)(t,n));return(0,z.jsx)(th,{href:(0,C.normalizeHrefInRuntime)(e.link),children:(0,z.jsxs)("div",{className:`rspress-nav-menu-item ${tg.singleItem} ${i?tg.activeItem:""} text-sm font-medium mx-1.5 px-3 py-2 flex items-center`,children:[(0,z.jsx)(ty,{tag:e.tag}),e.text,e.rightIcon]},e.text)})}var tJ=e=>{null==j||j[e?"add":"remove"]("dark")},t1=()=>{let e=localStorage.getItem(T.APPEARANCE_KEY)||"auto";S=window.matchMedia("(prefers-color-scheme: dark)");let t="auto"===e?S.matches:"dark"===e;return tJ(t),t};"undefined"!=typeof window&&"undefined"!=typeof localStorage&&(j=document.documentElement.classList,(()=>{var e;let t=!1===X.default.themeConfig.darkMode,n=null!=(e=window.RSPRESS_THEME)?e:window.MODERN_THEME;if(n){tJ("dark"===n);return}!t&&t1()})());var t0=()=>null==j?void 0:j.contains("dark"),t2=()=>()=>{let e=t0();"undefined"!=typeof window&&"undefined"!=typeof localStorage&&(tJ(!e),P=e?"light":"dark",localStorage.setItem(T.APPEARANCE_KEY,P))};function t3({onClick:e}){let{theme:t,setTheme:n}=(0,N.useContext)(C.ThemeContext),i=t2(),r=()=>{n(t1()?"dark":"light")};return(0,N.useEffect)(()=>(t0()&&n("dark"),"undefined"!=typeof window&&window.addEventListener("storage",r),()=>{"undefined"!=typeof window&&window.removeEventListener("storage",r)}),[]),(0,z.jsx)("div",{onClick:()=>{n("dark"===t?"light":"dark"),i(),null==e||e()},className:"md:mr-2 rspress-nav-appearance",children:(0,z.jsx)("div",{className:"p-1 border border-solid border-gray-300 text-gray-400 cursor-pointer rounded-md hover:border-gray-600 hover:text-gray-600 dark:hover:border-gray-200 dark:hover:text-gray-200 transition-all duration-300",children:(0,z.jsx)(tk,{icon:"light"===t?Z.default:Y.default,width:"18",height:"18",fill:"currentColor"})})})}var t4={socialLinksIcon:"social-links-icon_93d67",menuItem:"menu-item_93d67"},t5={discord:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"Discord"}),(0,z.jsx)("path",{d:"M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"})]}),facebook:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"Facebook"}),(0,z.jsx)("path",{d:"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"})]}),github:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"GitHub"}),(0,z.jsx)("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"})]}),gitlab:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"GitLab"}),(0,z.jsx)("path",{fill:"currentColor",d:"m21.94 13.11l-1.05-3.22c0-.03-.01-.06-.02-.09l-2.11-6.48a.859.859 0 0 0-.8-.57c-.36 0-.68.25-.79.58l-2 6.17H8.84L6.83 3.33a.851.851 0 0 0-.79-.58c-.37 0-.69.25-.8.58L3.13 9.82v.01l-1.07 3.28c-.16.5.01 1.04.44 1.34l9.22 6.71c.17.12.39.12.56-.01l9.22-6.7c.43-.3.6-.84.44-1.34M8.15 10.45l2.57 7.91l-6.17-7.91m8.73 7.92l2.47-7.59l.1-.33h3.61l-5.59 7.16m4.1-13.67l1.81 5.56h-3.62m-1.3.95l-1.79 5.51L12 19.24l-2.86-8.79M6.03 3.94L7.84 9.5H4.23m-1.18 4.19c-.09-.07-.13-.19-.09-.29l.79-2.43l5.82 7.45m11.38-4.73l-6.51 4.73l.02-.03l5.79-7.42l.79 2.43c.04.1 0 .22-.09.29"})]}),instagram:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"Instagram"}),(0,z.jsx)("path",{d:"M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 12 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678c-3.405 0-6.162 2.76-6.162 6.162 0 3.405 2.76 6.162 6.162 6.162 3.405 0 6.162-2.76 6.162-6.162 0-3.405-2.76-6.162-6.162-6.162zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405c0 .795-.646 1.44-1.44 1.44-.795 0-1.44-.646-1.44-1.44 0-.794.646-1.439 1.44-1.439.793-.001 1.44.645 1.44 1.439z"})]}),linkedin:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"LinkedIn"}),(0,z.jsx)("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"})]}),slack:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"Slack"}),(0,z.jsx)("path",{d:"M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"})]}),twitter:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"Twitter"}),(0,z.jsx)("path",{d:"M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"})]}),youtube:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"YouTube"}),(0,z.jsx)("path",{d:"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"})]}),juejin:(0,z.jsxs)("svg",{className:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","data-spm-anchor-id":"a313x.7781069.0.i5",children:[(0,z.jsx)("path",{d:"M465.189 161.792c-22.967 18.14-44.325 35.109-47.397 37.742l-5.851 4.68 10.971 8.632c5.998 4.827 11.85 9.508 13.02 10.532 1.17 1.024 17.993 14.336 37.156 29.696l34.962 27.795 5.267-3.95c2.925-2.194 23.259-18.432 45.348-35.986 21.943-17.555 41.253-32.768 42.716-33.646 1.609-1.024 2.779-2.194 2.779-2.78 0-0.438-9.655-8.63-21.504-17.846-11.995-9.363-22.674-17.847-23.845-18.871-15.945-13.02-49.737-39.059-50.76-39.059-0.586 0.147-19.896 14.922-42.862 33.061z m233.325 180.37C507.465 493.275 508.928 492.105 505.417 489.911c-3.072-1.902-11.556-8.485-64.073-50.03-9.07-7.168-18.578-14.775-21.358-16.823-2.78-2.194-8.777-6.875-13.312-10.532-4.68-3.657-10.679-8.339-13.312-10.533-13.165-10.24-71.095-56.027-102.107-80.457-5.852-4.681-11.41-8.485-12.142-8.485-0.731 0-10.971 7.754-22.674 17.116-11.703 9.508-22.674 18.286-24.284 19.456-1.755 1.17-5.12 3.95-7.46 6.144-2.34 2.34-4.828 4.096-5.413 4.096-3.072 0-0.731 3.072 6.437 8.777 4.096 3.218 8.777 6.875 10.094 8.046 1.316 1.024 10.24 8.045 19.748 15.506s23.26 18.286 30.428 23.99c19.31 15.215 31.89 25.308 127.853 101.084 47.836 37.742 88.796 69.779 90.844 71.095 3.657 2.487 3.95 2.487 7.46-0.292a1041.42 1041.42 0 0 0 16.092-12.727c6.875-5.413 14.775-11.703 17.554-13.897 30.135-23.699 80.018-63.05 81.774-64.512 1.17-1.024 12.434-9.802 24.868-19.603s37.888-29.696 56.32-44.324c18.579-14.629 46.227-36.425 61.733-48.567 15.506-12.142 27.794-22.528 27.502-23.26-0.878-1.17-57.637-47.104-59.978-48.274-0.731-0.439-18.578 12.727-39.497 29.257z","data-spm-anchor-id":"a313x.7781069.0.i2"}),(0,z.jsx)("path",{d:"M57.93 489.326c-15.215 12.288-28.527 23.405-29.697 24.576-2.34 2.194-5.412-0.44 80.018 66.852 33.207 26.185 32.622 25.747 57.637 45.495 10.386 8.192 36.279 28.672 57.783 45.495 38.18 30.135 44.91 35.401 52.663 41.545 2.048 1.756 22.967 18.14 46.372 36.572 23.26 18.432 74.167 58.514 112.933 89.088 38.912 30.573 71.095 55.734 71.826 56.027 0.732 0.293 7.46-4.389 14.921-10.386 21.797-16.97 90.259-70.949 101.523-79.872 5.705-4.535 12.873-10.24 15.945-12.58 3.072-2.488 6.436-5.12 7.314-5.852 0.878-0.878 11.85-9.509 24.283-19.31 20.773-16.091 59.1-46.226 64.366-50.615 1.17-1.024 5.12-4.096 8.777-6.875 3.657-2.78 7.9-6.29 9.509-7.607 1.609-1.317 14.775-11.703 29.257-23.113 29.11-22.82 42.277-33.207 88.503-69.632 17.262-13.605 32.475-25.454 33.646-26.478 2.486-2.048 31.451-24.869 44.617-35.255 4.827-3.657 9.07-7.168 9.508-7.607 0.44-0.585 5.998-4.827 12.435-9.8 6.436-4.828 13.165-10.24 15.067-11.85l3.365-2.926-9.948-7.753c-5.412-4.388-10.24-8.192-10.679-8.63-1.17-1.317-22.381-18.433-30.135-24.284-3.95-3.072-7.314-5.998-7.606-6.73-1.317-3.071-6.73 0.147-29.258 17.994-13.458 10.532-25.746 20.187-27.355 21.504-1.61 1.463-10.533 8.338-19.749 15.652-9.216 7.168-17.115 13.459-17.554 13.898-0.439 0.438-6.583 5.412-13.897 10.971-7.168 5.559-15.214 11.703-17.7 13.75-4.974 4.097-5.413 4.39-20.334 16.239-5.56 4.388-11.264 8.777-12.435 9.8-1.17 1.025-20.333 16.092-42.422 33.354-22.09 17.408-41.546 32.768-43.155 34.084-1.609 1.463-14.482 11.557-28.525 22.528s-40.814 32.037-59.539 46.812c-18.578 14.775-42.276 33.353-52.516 41.399s-23.26 18.285-28.965 22.82l-10.386 8.339-4.389-3.072c-2.34-1.756-4.68-3.511-5.12-3.95-0.439-0.439-4.973-4.096-10.24-8.046-11.849-9.216-14.482-11.264-16.676-13.166-0.878-0.877-4.243-3.51-7.46-5.851-3.22-2.487-6.145-4.681-6.584-5.12-0.439-0.439-6.875-5.705-14.482-11.703-7.607-5.851-14.921-11.556-16.091-12.58-1.317-1.17-17.116-13.605-35.255-27.795-17.993-14.19-35.109-27.648-38.035-29.842-5.705-4.681-33.499-26.624-125.074-98.743-34.523-27.209-72.704-57.344-84.846-66.852-49.737-39.498-55.15-43.594-56.905-43.447-0.877 0-14.043 10.24-29.257 22.528z","data-spm-anchor-id":"a313x.7781069.0.i3"})]}),qq:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",className:"iconify iconify--ri",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 24 24",children:(0,z.jsx)("path",{fill:"currentColor",d:"M19.913 14.529a31.977 31.977 0 0 0-.675-1.886l-.91-2.246c0-.026.012-.468.012-.696C18.34 5.86 16.507 2 12 2S5.66 5.86 5.66 9.7c0 .229.011.671.012.697l-.91 2.246a32.777 32.777 0 0 0-.675 1.886c-.86 2.737-.581 3.87-.369 3.895c.455.054 1.771-2.06 1.771-2.06c0 1.224.637 2.822 2.016 3.976c-.515.157-1.147.399-1.554.695c-.365.267-.319.54-.253.65c.289.481 4.955.307 6.303.157c1.347.15 6.014.324 6.302-.158c.066-.11.112-.382-.253-.649c-.407-.296-1.039-.538-1.555-.696c1.379-1.153 2.016-2.751 2.016-3.976c0 0 1.316 2.115 1.771 2.06c.212-.025.49-1.157-.37-3.894"})}),wechat:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",className:"iconify iconify--ri",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 24 24",children:(0,z.jsx)("path",{fill:"currentColor",d:"M18.574 13.711a.91.91 0 0 0 .898-.898c0-.498-.399-.898-.898-.898s-.898.4-.898.898c0 .5.4.898.898.898zm-4.425 0a.91.91 0 0 0 .898-.898c0-.498-.4-.898-.898-.898c-.5 0-.898.4-.898.898c0 .5.399.898.898.898zm6.567 5.04a.347.347 0 0 0-.172.37c0 .048 0 .097.025.147c.098.417.294 1.081.294 1.106c0 .073.025.122.025.172a.22.22 0 0 1-.221.22c-.05 0-.074-.024-.123-.048l-1.449-.836a.799.799 0 0 0-.344-.098c-.073 0-.147 0-.196.024c-.688.197-1.4.295-2.161.295c-3.66 0-6.607-2.457-6.607-5.505c0-3.047 2.947-5.505 6.607-5.505c3.659 0 6.606 2.458 6.606 5.505c0 1.647-.884 3.146-2.284 4.154zM16.673 8.099a9.105 9.105 0 0 0-.28-.005c-4.174 0-7.606 2.86-7.606 6.505c0 .554.08 1.09.228 1.6h-.089a9.963 9.963 0 0 1-2.584-.368c-.074-.025-.148-.025-.222-.025a.832.832 0 0 0-.418.123l-1.748 1.005c-.05.025-.099.05-.148.05a.273.273 0 0 1-.27-.27c0-.074.024-.123.049-.197c.024-.024.246-.834.369-1.324c0-.05.024-.123.024-.172a.556.556 0 0 0-.221-.442C2.058 13.376 1 11.586 1 9.598C1 5.945 4.57 3 8.95 3c3.765 0 6.93 2.169 7.723 5.098zm-5.154.418c.573 0 1.026-.477 1.026-1.026c0-.573-.453-1.026-1.026-1.026s-1.026.453-1.026 1.026s.453 1.026 1.026 1.026zm-5.26 0c.573 0 1.027-.477 1.027-1.026c0-.573-.454-1.026-1.027-1.026c-.572 0-1.026.453-1.026 1.026s.454 1.026 1.026 1.026z"})}),weibo:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",className:"iconify iconify--ri",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 24 24",children:(0,z.jsx)("path",{fill:"currentColor",d:"M17.525 11.378c1.263.392 2.669 1.336 2.669 3.004c0 2.763-3.98 6.239-9.964 6.239c-4.565 0-9.23-2.213-9.23-5.852c0-1.902 1.204-4.102 3.277-6.177c2.773-2.77 6.004-4.033 7.219-2.816c.537.537.588 1.464.244 2.572c-.178.557.525.25.525.25c2.24-.938 4.196-.994 4.909.027c.38.543.343 1.306-.008 2.19c-.163.407.048.471.36.563zm-7.282 7.939c3.641-.362 6.401-2.592 6.167-4.983c-.237-2.391-3.382-4.038-7.023-3.677c-3.64.36-6.403 2.59-6.167 4.98c.237 2.394 3.382 4.039 7.023 3.68zM6.16 14.438c.754-1.527 2.712-2.39 4.446-1.94c1.793.463 2.707 2.154 1.976 3.8c-.744 1.682-2.882 2.578-4.695 1.993c-1.752-.566-2.493-2.294-1.727-3.853zm1.446 2.587c.568.257 1.325.013 1.676-.55c.346-.568.163-1.217-.407-1.459c-.563-.237-1.291.008-1.64.553c-.354.547-.189 1.202.371 1.456zm2.206-1.808c.219.092.501-.012.628-.231c.123-.22.044-.466-.178-.548c-.216-.084-.486.018-.613.232c-.123.214-.054.458.163.547zM19.873 9.5a.725.725 0 1 1-1.378-.451a1.38 1.38 0 0 0-.288-1.357a1.395 1.395 0 0 0-1.321-.425a.723.723 0 1 1-.303-1.416a2.836 2.836 0 0 1 3.29 3.649zm-3.916-6.575A5.831 5.831 0 0 1 21.5 4.72a5.836 5.836 0 0 1 1.22 5.704a.838.838 0 0 1-1.06.54a.844.844 0 0 1-.542-1.062a4.143 4.143 0 0 0-4.807-5.327a.845.845 0 0 1-.354-1.65z"})}),zhihu:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",className:"iconify iconify--ri",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 24 24",children:(0,z.jsx)("path",{fill:"currentColor",d:"m12.344 17.963l-1.688 1.074l-2.131-3.35c-.44 1.402-1.172 2.665-2.139 3.825c-.402.483-.82.918-1.301 1.375c-.155.147-.775.717-.878.82l-1.414-1.414c.139-.139.787-.735.915-.856c.43-.408.795-.79 1.142-1.206c1.266-1.518 2.03-3.21 2.137-5.231H3v-2h4V7h-.868c-.689 1.266-1.558 2.222-2.618 2.857L2.486 8.143c1.395-.838 2.425-2.604 3.038-5.36l1.952.434c-.14.633-.303 1.227-.489 1.783H11.5v2H9v4h2.5v2H9.185l3.159 4.963zm3.838-.07L17.298 17H19V7h-4v10h.736l.446.893zM13 5h8v14h-3l-2.5 2l-1-2H13V5z"})}),bilibili:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",className:"iconify iconify--ri",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 24 24",children:(0,z.jsx)("path",{fill:"currentColor",d:"M18.223 3.086a1.25 1.25 0 0 1 0 1.768L17.08 5.996h1.17A3.75 3.75 0 0 1 22 9.747v7.5a3.75 3.75 0 0 1-3.75 3.75H5.75A3.75 3.75 0 0 1 2 17.247v-7.5a3.75 3.75 0 0 1 3.75-3.75h1.166L5.775 4.855a1.25 1.25 0 1 1 1.767-1.768l2.652 2.652c.079.079.145.165.198.257h3.213c.053-.092.12-.18.199-.258l2.651-2.652a1.25 1.25 0 0 1 1.768 0zm.027 5.42H5.75a1.25 1.25 0 0 0-1.247 1.157l-.003.094v7.5c0 .659.51 1.199 1.157 1.246l.093.004h12.5a1.25 1.25 0 0 0 1.247-1.157l.003-.093v-7.5c0-.69-.56-1.25-1.25-1.25zm-10 2.5c.69 0 1.25.56 1.25 1.25v1.25a1.25 1.25 0 1 1-2.5 0v-1.25c0-.69.56-1.25 1.25-1.25zm7.5 0c.69 0 1.25.56 1.25 1.25v1.25a1.25 1.25 0 1 1-2.5 0v-1.25c0-.69.56-1.25 1.25-1.25z"})}),lark:(0,z.jsxs)("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"Lark"}),(0,z.jsx)("path",{d:"M8.813 5.477c1.038.836 2.286 2.045 3.3 3.495.171.23.377.576.457.71l.034.056a8.803 8.803 0 0 0-.922 1.3l-.271-.494C9.655 7.53 6.3 5.477 6.137 5.377a.447.447 0 0 1-.006-.004l-.666-.393-.107-.086a.499.499 0 0 1 .306-.885L6.084 4h7.997c.159.006.318.037.47.092.174.064.317.174.458.308.134.143.272.296.403.448.622.675 1.324 1.688 1.324 1.688-.573.193-1.349.736-1.349.736a5.095 5.095 0 0 0-.348-.54 20.665 20.665 0 0 0-1.037-1.255H8.813Z",fill:"currentColor"}),(0,z.jsx)("path",{d:"M18.482 7.507a5.42 5.42 0 0 1 4.04.717c.248.168.788.635.242 1.233-1.7 1.67-2.194 3.225-2.63 4.599-.278.873-.541 1.697-1.066 2.424-1.813 2.508-4.114 4-6.837 4.434-.561.089-1.132.131-1.7.131-3.958 0-7.498-2.035-8.75-2.844h.003l-.161-.107c-.534-.378-.61-.723-.623-.989V7.055a.486.486 0 0 1 .827-.317l.482.589c5.082 6.201 9.126 8.063 11.626 8.53 2.246.424 3.631-.165 4.022-.37.333-.51.534-1.143.764-1.865l.006-.021c.406-1.276.898-2.821 2.322-4.477a3.93 3.93 0 0 0-2.28-.168c-1.761.394-3.403 1.96-4.89 4.643a8.27 8.27 0 0 0-.341.671c-.724-.107-1.334-.65-1.334-.65.128-.269.22-.455.345-.672 1.718-3.125 3.714-4.962 5.933-5.441ZM2.477 16.889c1.145.744 5.341 3.232 9.532 2.563 1.56-.247 2.963-.915 4.196-1.99-2.771.254-7.557-.753-13.728-7.666v7.093Z",fill:"currentColor"})]}),x:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"X"}),(0,z.jsx)("path",{d:"M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"})]})},t6=e=>{let{link:t,popperStyle:n={}}=e,{icon:i,mode:r="link",content:a}=t,d="object"==typeof i?(0,z.jsx)("div",{dangerouslySetInnerHTML:{__html:i.svg}}):t5[i],[o,l]=(0,N.useState)(!1),s=()=>{l(!0)},c=()=>{l(!1)};return"link"===r?(0,z.jsx)("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"social-links",children:(0,z.jsx)("div",{className:`${t4.socialLinksIcon}`,children:d})},a):"text"===r?(0,z.jsxs)("div",{className:`${t4.socialLinksIcon} cursor-pointer relative mx-3`,onMouseEnter:s,onMouseLeave:c,children:[d,o?(0,z.jsx)("div",{style:e_({boxShadow:"var(--rp-shadow-3)",border:"1px solid var(--rp-c-divider-light)"},n),className:"z-[1] p-3 w-50 absolute right-0 bg-white dark:bg-dark",children:(0,z.jsx)("div",{className:"text-md",children:a})}):null]}):"img"===r?(0,z.jsxs)("div",{className:`${t4.socialLinksIcon} cursor-pointer relative`,onMouseEnter:s,onMouseLeave:c,children:[d,o?(0,z.jsx)("div",{className:"break-all z-[1] p-3 w-[50px] h-[50px] absolute right-0 bg-white dark:bg-dark rounded-xl",style:e_({boxShadow:"var(--rp-shadow-3)"},n),children:(0,z.jsx)("img",{src:a,alt:"img"})}):null]}):(0,z.jsx)("div",{})},t7=e=>{let{links:t,moreIconVisible:n=!1,mouseEnter:i}=e;return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{className:"flex-center h-full gap-x-4 transition-colors duration-300 md:mr-2",children:t.map((e,t)=>(0,z.jsx)(t6,{link:e,popperStyle:{top:"2.5rem"}},t))}),n?(0,z.jsx)("div",{className:"md:ml-1 p-2",onMouseEnter:i,children:(0,z.jsx)(tk,{icon:Q.default})}):null]})},t8=e=>{let{links:t}=e;return(0,z.jsx)("div",{style:{boxShadow:"var(--rp-shadow-3)",marginRight:"-2px",border:"1px solid var(--rp-c-divider-light)",background:"var(--rp-c-bg)"},className:"absolute top-8 right-0 z-1 p-3 w-32 rounded-2xl flex flex-wrap gap-4",children:t.map(e=>(0,z.jsx)(t6,{link:e,popperStyle:{top:"1.25rem"}},e.content))})},t9=({socialLinks:e})=>{let t=e.length>3,n=[],i=[];e.forEach((e,t)=>{t<3?n.push(e):i.push(e)});let[r,a]=(0,N.useState)(!1);return(0,z.jsxs)("div",{className:`social-links ${t4.menuItem} flex-center relative`,onMouseLeave:()=>a(!1),children:[(0,z.jsx)(t7,{links:n,moreIconVisible:t,mouseEnter:()=>a(!0)}),r?(0,z.jsx)(t8,{links:i}):null]})};function ne(){var e,t;let{siteData:n,page:i}=(0,C.usePageData)(),r=(0,C.useVersion)(),{pathname:a}=(0,C.useLocation)(),d=n.lang||"",o=n.multiVersion.default||"",l=Object.values(n.locales||n.themeConfig.locales||{}),s=(null==(e=n.route)?void 0:e.cleanUrls)||!1,c=l.length>1,{lang:u}=i,{base:h}=n;return c?{text:(0,z.jsx)(tk,{icon:J.default,style:{width:"18px",height:"18px"}}),items:l.map(e=>({text:null==e?void 0:e.label,link:(0,T.replaceLang)(a,{current:u,target:e.lang,default:d},{current:r,default:o},h,s)})),activeValue:null==(t=l.find(e=>u===e.lang))?void 0:t.label}:null}function nt(){var e;let{siteData:t}=(0,C.usePageData)(),n=(0,C.useVersion)(),{pathname:i}=(0,C.useLocation)(),r=(null==(e=t.route)?void 0:e.cleanUrls)||!1,a=t.multiVersion.default||"",d=t.multiVersion.versions||[],{base:o}=t;return{items:d.map(e=>({text:e,link:(0,T.replaceVersion)(i,{current:n,target:e,default:a},o,r)})),text:n,activeValue:n}}var nn={navScreen:"navScreen_457e8",active:"active_457e8",container:"container_457e8",navMenu:"navMenu_457e8",navMenuItem:"navMenuItem_457e8",navAppearance:"navAppearance_457e8",navScreenMenuGroup:"navScreenMenuGroup_457e8",open:"open_457e8",button:"button_457e8",buttonSpan:"buttonSpan_457e8",items:"items_457e8",down:"down_457e8"};function ni(e){let{activeValue:t}=e,[n,i]=(0,N.useState)(!1);function r({item:e}){return(0,z.jsx)("div",{className:"p-1 text-center",children:(0,z.jsx)("span",{className:"text-brand",children:e.text})})}function a({item:e}){return(0,z.jsx)("div",{className:"py-1 font-medium",children:(0,z.jsx)(th,{href:e.link,children:(0,z.jsx)("div",{children:(0,z.jsx)("div",{className:"flex justify-center",children:(0,z.jsx)("span",{children:e.text})})})})})}let d=e=>t===e.text?(0,z.jsx)(r,{item:e},e.link):(0,z.jsx)(a,{item:e},e.link),o=e=>(0,z.jsxs)("div",{children:["link"in e?d(e):(0,z.jsx)("p",{className:"font-bold text-gray-400 my-1 not:first:border",children:e.text}),e.items.map(d)]});return(0,z.jsxs)("div",{className:`${n?nn.open:""} ${nn.navScreenMenuGroup} relative`,children:[(0,z.jsxs)("button",{className:nn.button,onClick:()=>{i(!n)},children:[(0,z.jsx)("span",{className:nn.buttonSpan,children:e.text}),(0,z.jsx)(ee.default,{className:`${n?nn.open:""} ${nn.down} `})]}),(0,z.jsx)("div",{children:(0,z.jsx)("div",{className:nn.items,children:e.items.map(e=>(0,z.jsx)("div",{children:"items"in e?o(e):d(e)},e.text))})})]})}var nr=()=>{let e=ne();return(0,z.jsx)("div",{className:`${nn.navTranslations} flex text-sm font-bold justify-center`,children:(0,z.jsx)("div",{className:"mx-1.5 my-1",children:(0,z.jsx)(ni,e_({},e))})})},na=()=>{let e=nt();return(0,z.jsx)("div",{className:`${nn.navTranslations} flex text-sm font-bold justify-center`,children:(0,z.jsx)("div",{className:"mx-1.5 my-1",children:(0,z.jsx)(ni,e_({},e))})})};function nd(e){var t;let{isScreenOpen:n,siteData:i,pathname:r}=e,a=(0,N.useRef)(null),d=i.themeConfig.locales||[],o=d.length>1,l=i.multiVersion.versions.length>1,s=(0,et.useNavData)(),c=!1!==i.themeConfig.darkMode,u=(null==(t=null==i?void 0:i.themeConfig)?void 0:t.socialLinks)||[],h=u.length>0,p=d.map(e=>e.lang||"zh")||[],{base:x}=i;return(0,N.useEffect)(()=>(a.current&&n&&(0,G.disableBodyScroll)(a.current,{reserveScrollBarGap:!0}),()=>{(0,G.clearAllBodyScrollLocks)()}),[n]),(0,z.jsx)("div",{className:`${nn.navScreen} ${n?nn.active:""}`,ref:a,id:"navScreen",children:(0,z.jsxs)("div",{className:nn.container,children:[(0,z.jsx)(({menuItems:e})=>(0,z.jsx)("div",{className:nn.navMenu,children:e.map(e=>(0,z.jsx)("div",{className:`${nn.navMenuItem} w-full`,children:"link"in e?(0,z.jsx)(tQ,e_({pathname:r,base:x,langs:p},e),e.text):(0,z.jsx)("div",{className:"mx-3 last:mr-0",children:(0,z.jsx)(ni,eN(e_({},e),{items:"items"in e?e.items:e}))},e.text)},e.text))}),{menuItems:s}),(0,z.jsxs)("div",{className:"flex-center flex-col gap-2",children:[c&&(0,z.jsx)(()=>(0,z.jsx)("div",{className:`mt-2 ${nn.navAppearance} flex justify-center`,children:(0,z.jsx)(C.NoSSR,{children:(0,z.jsx)(t3,{})})}),{}),o&&(0,z.jsx)(nr,{}),l&&(0,z.jsx)(na,{}),h&&(0,z.jsx)(t9,{socialLinks:u})]})]})})}var no={navHamburger:"navHamburger_e7b06",active:"active_e7b06"};function nl(e){let{siteData:t,pathname:n}=e,{isScreenOpen:i,toggleScreen:r}=function(){let{pathname:e}=(0,C.useLocation)(),[t,n]=(0,N.useState)(!1);function i(){n(!0),window.addEventListener("resize",a)}function r(){n(!1),window.removeEventListener("resize",a)}function a(){window.outerWidth>=768&&r()}return(0,N.useEffect)(()=>{r()},[e]),{isScreenOpen:t,openScreen:i,closeScreen:r,toggleScreen:function(){t?r():i()}}}();return(0,z.jsxs)(N.Fragment,{children:[(0,z.jsx)(nd,{isScreenOpen:i,siteData:t,pathname:n}),(0,z.jsx)("button",{onClick:r,"aria-label":"mobile hamburger",className:`${i?no.active:""} ${no.navHamburger} text-gray-500`,children:(0,z.jsx)(tk,{icon:V.default,fill:"currentColor"})})]})}function ns({item:e}){return(0,z.jsxs)("div",{className:"rounded-2xl my-1 flex",style:{padding:"0.4rem 1.5rem 0.4rem 0.75rem"},children:[e.tag&&(0,z.jsx)(ty,{tag:e.tag}),(0,z.jsx)("span",{className:"text-brand",children:e.text})]},e.link)}function nc({item:e}){return(0,z.jsx)("div",{className:"font-medium my-1",children:(0,z.jsx)(th,{href:e.link,children:(0,z.jsx)("div",{className:"rounded-2xl hover:bg-mute",style:{padding:"0.4rem 1.5rem 0.4rem 0.75rem"},children:(0,z.jsxs)("div",{className:"flex",children:[e.tag&&(0,z.jsx)(ty,{tag:e.tag}),(0,z.jsx)("span",{children:e.text})]})})})},e.link)}function nu(e){let{activeValue:t,items:n,base:i="",link:r="",pathname:a=""}=e,[d,o]=(0,N.useState)(!1),l=e=>{let n=new RegExp(e.activeMatch||e.link).test((0,T.withoutBase)(a,i));return t===e.text||!t&&n?(0,z.jsx)(ns,{item:e},e.link):(0,z.jsx)(nc,{item:e},e.link)},s=e=>(0,z.jsxs)("div",{children:["link"in e?l(e):(0,z.jsx)("p",{className:"font-bold text-gray-400 my-1 not:first:border",children:e.text}),e.items.map(l)]});return(0,z.jsxs)("div",{className:"relative flex-center h-14",onMouseLeave:()=>o(!1),children:[(0,z.jsx)("button",{onMouseEnter:()=>o(!0),className:"rspress-nav-menu-group-button flex-center items-center font-medium text-sm text-text-1 hover:text-text-2 transition-colors duration-200",children:r?(0,z.jsx)(tQ,eN(e_({},e),{rightIcon:(0,z.jsx)(tk,{icon:ee.default})})):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)("span",{className:"text-sm font-medium flex",style:{marginRight:"2px"},children:[(0,z.jsx)(ty,{tag:e.tag}),e.text]}),(0,z.jsx)(tk,{icon:ee.default})]})}),(0,z.jsx)("div",{className:"rspress-nav-menu-group-content absolute mx-0.8 transition-opacity duration-300",style:{opacity:d?1:0,visibility:d?"visible":"hidden",right:0,top:"52px"},children:(0,z.jsx)("div",{className:"p-3 pr-2 w-full h-full max-h-100vh whitespace-nowrap",style:{boxShadow:"var(--rp-shadow-3)",zIndex:100,border:"1px solid var(--rp-c-divider-light)",borderRadius:"var(--rp-radius-large)",background:"var(--rp-c-bg)"},children:n.map(e=>(0,z.jsx)("div",{children:"items"in e?s(e):l(e)},e.text))})})]})}function nh(){let e=ne();return(0,z.jsx)("div",{className:`translation ${tg.menuItem} flex text-sm font-bold items-center px-3 py-2`,children:(0,z.jsx)("div",{children:(0,z.jsx)(nu,e_({},e))})})}function np(){let e=nt();return(0,z.jsx)("div",{className:`translation ${tg.menuItem} flex text-sm font-bold items-center px-3 py-2`,children:(0,z.jsx)("div",{children:(0,z.jsx)(nu,e_({},e))})})}function nx(e){var t;let{beforeNavTitle:n,afterNavTitle:i,beforeNav:r,afterNavMenu:a}=e,{siteData:d}=(0,C.usePageData)(),{base:o}=d,{pathname:l}=(0,C.useLocation)(),[s,c]=(0,N.useState)(!1),u=eq(),h=Object.values(d.locales||d.themeConfig.locales||{}),p=h.length>1,x=d.multiVersion.versions.length>1,f=d.themeConfig.socialLinks||[],m=f.length>0,g=h.map(e=>e.lang||"")||[],b=()=>{c(tr())};(0,N.useEffect)(()=>(window.addEventListener("resize",b),c(tr()),()=>{window.removeEventListener("resize",b)}),[]);let v=({menuItems:e})=>(0,z.jsx)("div",{className:"rspress-nav-menu menu h-14",children:e.map(e=>"items"in e||Array.isArray(e)?(0,z.jsx)("div",{className:"mx-3 last:mr-0",children:(0,z.jsx)(nu,eN(e_({},e),{base:o,pathname:l,langs:g,items:"items"in e?e.items:e}))},e.text):(0,z.jsx)(tQ,e_({pathname:l,langs:g,base:o},e),e.link))}),y=(0,et.useNavData)(),I=e=>{var t;return null!=(t=e.position)?t:"right"},k=y.filter(e=>"left"===I(e)),w=y.filter(e=>"right"===I(e)),j=(null==(t=null==d?void 0:d.themeConfig)?void 0:t.search)!==!1,P=!1!==d.themeConfig.darkMode;return(0,z.jsxs)(z.Fragment,{children:[r,(0,z.jsx)("div",{className:`${tg.navContainer} sticky rspress-nav px-6 ${u?tg.hidden:""}`,children:(0,z.jsxs)("div",{className:`${tg.container} flex justify-between items-center h-full`,children:[n,(0,z.jsx)(tb,{}),i,(0,z.jsxs)("div",{className:`${tg.content} flex flex-1 justify-end items-center`,children:[k.length>0?(0,z.jsx)("div",{className:tg.leftNav,children:(0,z.jsx)(v,{menuItems:k})}):null,(0,z.jsxs)("div",{className:tg.rightNav,children:[j&&(0,z.jsx)("div",{className:"flex sm:flex-1 items-center sm:pl-4 sm:pr-2",children:(0,z.jsx)(_.Search,{})}),(0,z.jsx)(v,{menuItems:w}),(0,z.jsxs)("div",{className:"flex-center flex-row",children:[p&&(0,z.jsx)(nh,{}),x&&(0,z.jsx)(np,{}),P&&(0,z.jsx)("div",{className:"mx-2",children:(0,z.jsx)(t3,{})}),m&&(0,z.jsx)(t9,{socialLinks:f})]})]}),a,(0,z.jsxs)("div",{className:tg.mobileNavMenu,children:[s&&j&&(0,z.jsx)(_.Search,{}),(0,z.jsx)(nl,{siteData:d,pathname:l})]})]})]})})]})}var nf={mask:"mask_6e282",modal:"modal_6e282",inputForm:"inputForm_6e282",input:"input_6e282",close:"close_6e282",searchHits:"searchHits_6e282",navSearchButton:"navSearchButton_6e282",searchWord:"searchWord_6e282",suggestItem:"suggestItem_6e282",suggestItemContainer:"suggestItemContainer_6e282",contentWrapper:"contentWrapper_6e282",mark:"mark_6e282",titleForContent:"titleForContent_6e282",actionIcon:"actionIcon_6e282",current:"current_6e282",tabClassName:"tabClassName_6e282",mobileNavSearchButton:"mobileNavSearchButton_6e282"},nm={container:"container_fa768",tabList:"tab-list_fa768",tab:"tab_fa768",notSelected:"not-selected_fa768",selected:"selected_fa768",noScrollbar:"no-scrollbar_fa768"},ng=e=>{var t;return(t=e)&&"object"==typeof t&&"label"in t?e.label||e.value:e};function nb(e){let{values:t,defaultValue:n,onChange:i,children:r,groupId:a,tabPosition:d="left",tabContainerClassName:o}=e,l=t||[];0===l.length&&(l=r.map(e=>{var t,n,i;return{label:null==(t=e.props)?void 0:t.label,value:(null==(n=e.props)?void 0:n.value)||(null==(i=e.props)?void 0:i.label)}}));let{tabData:s,setTabData:c}=(0,N.useContext)(tB),u=0;a&&void 0!==s[a]?u=s[a]:n&&(u=l.findIndex(e=>"string"==typeof e?e===n:!!e&&"object"==typeof e&&"value"in e&&e.value===n));let[h,p]=(0,N.useState)(u);return(0,z.jsxs)("div",{className:nm.container,children:[(0,z.jsx)("div",{className:o,children:l.length?(0,z.jsx)("div",{className:`${nm.tabList} ${nm.noScrollbar}`,style:{justifyContent:"center"===d?"center":"flex-start"},children:l.map((e,t)=>(0,z.jsx)("div",{className:`${nm.tab} ${h===t?nm.selected:nm.notSelected}`,onClick:()=>{null==i||i(t),p(t),a&&c(eN(e_({},s),{[a]:t}))},children:ng(e)},t))}):null}),(0,z.jsx)("div",{children:r[h]})]})}function nv(e){var{children:t}=e,n=eA(e,["children"]);return(0,z.jsx)("div",eN(e_({},n),{className:"rounded px-2",children:t}))}function ny({query:e}){return(0,z.jsxs)("div",{className:"flex flex-col items-center pt-8 pb-2",children:[(0,z.jsx)(tk,{icon:eo.default,className:"mb-4 opacity-80"}),(0,z.jsxs)("p",{className:"mb-2",children:["No results for ",(0,z.jsxs)("b",{children:['"',e,'"']}),"."]}),(0,z.jsx)("p",{children:"Please try again with a different keyword."})]})}var nI={title:eu.default,header:ec.default,content:el.default};function nk({suggestion:e,closeSearch:t,isCurrent:n,setCurrentSuggestionIndex:i,inCurrentDocIndex:r,scrollTo:a,suggestionIndex:d}){var o;let l=nI[e.type],s=r&&!(0,C.isProduction)()?e1(e.link):e.link,c=(0,N.useRef)(null);n&&a((null==(o=null==c?void 0:c.current)?void 0:o.offsetTop)-80);let u=(e,t)=>{let n=[],i=0;for(let o of t){var r,a,d;let{start:t,length:l}=o,s=e.slice(i,t);let c=(r=e,a=t,d=l,function(e,t,n){let i="",r=0,a=e.length;for(let d=0;dt+n);d++){;r>t&&(i+=e.charAt(d))}return i}(r.slice(a),0,d));n.push(s),n.push((0,z.jsx)("span",{className:nf.mark,children:c},t)),i=t+c.length}return i{if("header"===e.type||"title"===e.type){let{header:t,highlightInfoList:n}=e;return(0,z.jsx)("div",{className:"font-medium",children:u(t,n)})}return(0,z.jsx)("div",{className:"font-medium",children:e.header})})();break;case"content":h=(0,z.jsxs)(z.Fragment,{children:[(()=>{if("content"!==e.type)return(0,z.jsx)("div",{});let{statement:t,highlightInfoList:n}=e;return(0,z.jsx)("div",{className:"text-sm text-gray-light w-full",children:u(t,n)})})(),(0,z.jsx)("p",{className:nf.titleForContent,children:e.title})]})}return(0,z.jsx)("li",{className:`${nf.suggestItem} ${n?nf.current:""}`,onMouseEnter:i,ref:c,children:(0,z.jsx)("a",{href:s,onClick:e=>{t(),e.stopPropagation()},target:r?"_self":"_blank",children:(0,z.jsxs)("div",{className:nf.suggestItemContainer,children:[(0,z.jsx)("div",{className:nf.hitIcon,children:(0,z.jsx)(tk,{icon:l})}),(0,z.jsx)("div",{className:nf.contentWrapper,children:(0,z.jsx)("span",{children:h})}),(0,z.jsx)("div",{className:nf.actionIcon,children:(0,z.jsx)(tk,{icon:es.default})})]})})},e.link)}var nw={ARROW_UP:"ArrowUp",ARROW_DOWN:"ArrowDown",ENTER:"Enter",SEARCH:"KeyK",ESC:"Escape"};function nj({focused:e,setFocused:t}){let[n,i]=(0,N.useState)(""),[r,a]=(0,N.useState)([]),d=(0,N.useRef)(null),[o,l]=(0,N.useState)(!0),[s,c]=(0,N.useState)(0),u=(0,N.useRef)(null),h=(0,N.useRef)(null),[p,x]=(0,N.useState)(!1),f=e=>{var t;p&&(null==(t=null==h?void 0:h.current)||t.scrollTo({top:e}))},{siteData:m,page:{lang:g}}=(0,C.usePageData)(),{sidebar:b}=eH(),{search:v,title:y}=m,I=[{group:y,result:[],renderType:"default"}],[k,w]=(0,N.useState)([]),[j,P]=(0,N.useState)("default"),S=e=>eF(b,e).group;function E(){return eR(this,null,function*(){var e,t;if(!1===v)return;let n=new e9(eN(e_({indexName:y},v),{currentLang:g,extractGroupName:S}));u.current=n,yield Promise.all([u.current.init(),new Promise(e=>setTimeout(e,1e3))]),l(!1);let i=null==(e=d.current)?void 0:e.value;i&&a((yield null==(t=u.current)?void 0:t.match(i))||I)})}(0,N.useEffect)(()=>{let n=n=>{switch(n.code){case nw.SEARCH:(n.ctrlKey||n.metaKey)&&(n.preventDefault(),t(!e));break;case nw.ARROW_DOWN:e&&(n.preventDefault(),k&&"default"===j&&(x(!0),c((s+1)%k.length)));break;case nw.ARROW_UP:if(e&&(n.preventDefault(),"default"===j)){let e=k.length;x(!0),c((s-1+e)%e)}break;case nw.ENTER:if(s>=0&&"default"===j){let e=k[s];k===r[0].result?(window.location.href=(0,T.isProduction)()?e.link:e1(e.link),t(!1)):window.open(e.link)}break;case nw.ESC:t(!1)}};return document.addEventListener("keydown",n),()=>{document.removeEventListener("keydown",n)}},[c,t,k,s]),(0,N.useEffect)(()=>{e?(a(I),!u.current&&E()):i("")},[e]),(0,N.useEffect)(()=>{o||E()},[g]);let _=e=>eR(this,null,function*(){var t;let n=e;if(i(n),n){let e=[];if(er.beforeSearch){let e=yield er.beforeSearch(n);e&&(n=e)}let i=yield null==(t=u.current)?void 0:t.match(n);if(i&&e.push(...i),er.onSearch){let t=yield er.onSearch(n,e);t&&e.push(...t.map(e=>e_({renderType:"custom"},e)))}a(e||I),er.afterSearch&&(yield er.afterSearch(n,e)),e.length>0&&w(e[0].result)}}),A=(0,N.useMemo)(()=>(0,L.debounce)(_,150),[]),O=e=>(0,L.groupBy)(e,"group"),M=-1,B=e=>{if(0===e.length&&!o)return(0,z.jsx)("div",{className:"mt-4 flex-center",children:(0,z.jsx)("div",{className:"p-2 font-bold text-md",style:{color:"#2c3e50"},children:"No results found"})});let n=O(e);return(0,z.jsx)("ul",{className:nf.suggestList,children:Object.keys(n).map(e=>{let i=n[e]||[];return(0,z.jsx)("li",{children:(0,z.jsx)("ul",{className:"pb-2",children:i.map(e=>{let n=++M;return(0,z.jsx)(nk,{suggestionIndex:n,suggestion:e,isCurrent:n===s,setCurrentSuggestionIndex:()=>{x(!1),c(n)},closeSearch:()=>t(!1),inCurrentDocIndex:k===r[0].result,scrollTo:f},`${e.title}-${n}`)})})},e)})})};return(0,z.jsx)(z.Fragment,{children:e&&(0,ei.createPortal)((0,z.jsx)("div",{className:nf.mask,onClick:()=>t(!1),children:(0,z.jsxs)("div",{className:`${nf.modal}`,onClick:e=>{t(!0),e.stopPropagation()},children:[(0,z.jsxs)("div",{className:"flex items-center",children:[(0,z.jsxs)("div",{className:nf.inputForm,children:[(0,z.jsx)("label",{children:(0,z.jsx)(tk,{icon:en.default})}),(0,z.jsx)("input",{className:nf.input,ref:d,placeholder:"Search Docs","aria-label":"Search",autoComplete:"off",autoFocus:!0,onChange:e=>A(e.target.value)}),(0,z.jsx)("label",{children:(0,z.jsx)(tk,{icon:ea.default,className:nf.close,onClick:e=>{d.current&&(e.stopPropagation(),n?(d.current.value="",i("")):t(!1))}})})]}),(0,z.jsx)("h2",{className:"text-brand ml-2 sm:hidden cursor-pointer",onClick:e=>{e.stopPropagation(),t(!1)},children:"Cancel"})]}),n?(0,z.jsx)("div",{className:`${nf.searchHits} rspress-scrollbar`,ref:h,children:((e,t)=>{if(1===e.length){let t=e[0].result;return 0===t.length?(0,z.jsx)(ny,{query:n}):(0,z.jsx)("div",{children:B(t)})}let i=e.map(e=>t&&"remote"===t.mode?e2(t.searchIndexes||[]).find(t=>t.value===e.group).label:e.group);return(0,z.jsx)(nb,{values:i,tabContainerClassName:nf.tabClassName,onChange:t=>{w(e[t].result),c(0),P(e[t].renderType)},children:e.map(e=>(0,z.jsxs)(nv,{children:["default"===e.renderType&&B(e.result),"custom"===e.renderType&&er.render(e.result)]},e.group))})})(r,v)}):null,o&&(0,z.jsx)("div",{className:"flex-center",children:(0,z.jsx)("div",{className:"p-2 text-sm",children:(0,z.jsx)(tk,{icon:ed.default})})})]})}),document.getElementById("search-container"))})}function nP(){let[e,t]=(0,N.useState)(!1),[n,i]=(0,N.useState)(null),{searchPlaceholderText:r="Search Docs"}=(0,$.useLocaleSiteData)();return(0,N.useEffect)(()=>{i(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"\u2318":"Ctrl")},[]),(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{className:`rspress-nav-search-button ${nf.navSearchButton}`,onClick:()=>t(!0),children:(0,z.jsxs)("button",{children:[(0,z.jsx)(tk,{icon:en.default,width:"18",height:"18"}),(0,z.jsx)("p",{className:nf.searchWord,children:r}),(0,z.jsxs)("div",{style:{opacity:n?1:0},children:[(0,z.jsx)("span",{children:n}),(0,z.jsx)("span",{children:"K"})]})]})}),(0,z.jsx)("div",{className:nf.mobileNavSearchButton,onClick:()=>t(!0),children:(0,z.jsx)(tk,{icon:en.default})}),(0,z.jsx)(nj,{focused:e,setFocused:t})]})}var nS={badge:"badge_99dcf",info:"info_99dcf",warning:"warning_99dcf",danger:"danger_99dcf"};function nC(e){let{text:t,type:n="info"}=e;return(0,z.jsx)("span",{className:`inline-block rounded-full border border-solid border-transparent font-medium badge_99dcf ${nS[n]}`,children:t})}function nz(){let{siteData:e}=(0,C.usePageData)(),{message:t}=e.themeConfig.footer||{};return(0,z.jsx)("footer",{className:"absolute bottom-0 mt-12 py-8 px-6 sm:p-8 w-full border-t border-solid border-divider-light",children:(0,z.jsx)("div",{className:"m-auto w-full text-center",children:t&&(0,z.jsx)("div",{className:"font-meduim text-sm text-text-2",children:t})})})}function nE({children:e}){let t=e=>{let{className:t,meta:n}=e.props,i=function(e){var t,n;if(!e)return"";let i=e,r=/{[\d,-]*}/i;return(null==(t=r.exec(e))?void 0:t[0])&&(i=e.replace(r,"").trim()),null==(i=null!=(n=i.split("=")[1])?n:"")?void 0:i.replace(/["'`]/g,"")}(n);return(0,z.jsxs)("div",{className:t||"language-bash",children:[i&&(0,z.jsx)("div",{className:"rspress-code-title",children:i}),(0,z.jsx)("div",{className:"rspress-code-content rspress-scrollbar",children:e})]})};return Array.isArray(e)?(0,z.jsx)("div",{children:e.map(e=>t(e))}):t(e)}var n_={codeButtonGroup:"code-button-group_15153",codeCopyButton:"code-copy-button_15153",iconSuccess:"icon-success_15153",codeCopied:"code-copied_15153",iconCopy:"icon-copy_15153",iconWrapped:"icon-wrapped_15153",wrappedBtn:"wrapped-btn_15153",iconWrap:"icon-wrap_15153"},nN={doctype:{color:"var(--code-token-text)",fontStyle:"italic"},token:{color:"var(--code-token-text)"},comment:{color:"var(--code-token-comment)"},punctuation:{color:"var(--code-token-punctuation)"},property:{color:"var(--code-token-parameter)"},constant:{color:"var(--code-token-constant)"},string:{color:"var(--code-token-string)"},symbol:{color:"var(--code-token-symbol)"},variable:{color:"var(--code-token-variable)"},"attr-name":{color:"var(--code-token-symbol)"},"attr-value":{color:"var(--code-token-string-expression)"},builtin:{color:"var(--code-token-symbol)"},function:{color:"var(--code-token-function)"},keyword:{color:"var(--code-token-keyword)"},tag:{color:"var(--code-token-function)"},inserted:{color:"#22863a"},deleted:{color:"#b31d28"},regex:{color:"var(--code-token-keyword)"},key:{color:"var(--code-token-variable)"},title:{color:"var(--code-token-keyword)"},important:{color:"#EBCB8B",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},table:{display:"content"}},nA=!1;function nT(e){var t;let{siteData:n}=(0,C.usePageData)(),{meta:i,language:r,codeWrap:a}=e,{showLineNumbers:d}=n.markdown,o="",l=[];return i&&(o=(null==(t=/{[\d,-]*}/i.exec(i))?void 0:t[0])||"")&&(l=o.replace(/[{}]/g,"").split(",").map(e=>{let[t,n]=e.split("-");return n?Array.from({length:Number(n)-Number(t)+1},(e,n)=>n+Number(t)):Number(t)}).flat()),!nA&&(Object.keys(ex.default).forEach(e=>{ef.PrismLight.registerLanguage(e,ex.default[e])}),nA=!0),(0,z.jsx)(ef.PrismLight,{language:r,style:nN,wrapLines:!0,className:"code",wrapLongLines:a,customStyle:{backgroundColor:"inherit"},showLineNumbers:d||l.length>0,lineProps:e=>({style:eN(e_({},l.includes(e)?{backgroundColor:"var(--rp-code-line-highlight-color)"}:{}),{display:"block",padding:"0 1.25rem"})}),children:String(e.children).trim()})}var nL=new Map;function nO({codeBlockRef:e}){let t=(0,N.useRef)(null);return(0,z.jsxs)("button",{className:n_.codeCopyButton,onClick:()=>(function(e,t){let n="",i=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null),r=i.nextNode();for(;r;)!r.parentElement.classList.contains("linenumber")&&(n+=r.nodeValue),r=i.nextNode();if(em(n)&&t){t.classList.add(n_.codeCopied),clearTimeout(nL.get(t));let e=setTimeout(()=>{t.classList.remove(n_.codeCopied),t.blur(),nL.delete(t)},2e3);nL.set(t,e)}})(e.current,t.current),ref:t,children:[(0,z.jsx)(ev.SvgWrapper,{icon:eg.default,className:n_.iconCopy}),(0,z.jsx)(ev.SvgWrapper,{icon:eb.default,className:n_.iconSuccess})]})}function nM(e){var t;let{siteData:n}=(0,C.usePageData)(),i=null!=(t=e.codeHighlighter)?t:n.markdown.codeHighlighter,{defaultWrapCode:r}=n.markdown,[a,d]=(0,N.useState)(r),o=(0,N.useRef)(null),l=(0,N.useRef)(),{className:s}=e,c=null==s?void 0:s.replace(/language-/,"");if(!c)return(0,z.jsx)("code",e_({},e));let u=e=>{a?null==e||e.classList.remove(n_.wrappedBtn):null==e||e.classList.add(n_.wrappedBtn),d(!a)};return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{ref:l,children:(()=>{if("prism"===i)return(0,z.jsx)(nT,eN(e_({},e),{language:c,codeWrap:a}));return(0,z.jsx)("code",e_({},e))})()}),(0,z.jsxs)("div",{className:n_.codeButtonGroup,children:[(0,z.jsxs)("button",{ref:o,className:n_.codeWrapButton,onClick:()=>u(o.current),children:[(0,z.jsx)(ev.SvgWrapper,{icon:ep.default,className:n_.iconWrapped}),(0,z.jsx)(ev.SvgWrapper,{icon:eh.default,className:n_.iconWrap})]}),(0,z.jsx)(nO,{codeBlockRef:l})]})]})}function nB(e){return(0,z.jsxs)("svg",eN(e_({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 256 256"},e),{children:[(0,z.jsx)("path",{fill:"#C12127",d:"M0 256V0h256v256z"}),(0,z.jsx)("path",{fill:"#FFF",d:"M48 48h160v160h-32V80h-48v128H48z"})]}))}function nR(e){return(0,z.jsx)("svg",eN(e_({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 128 128"},e),{children:(0,z.jsxs)("g",{fill:"#2c8ebb",children:[(0,z.jsx)("path",{d:"M99.24 80.71C94.9 80.76 91.1 83 87.89 85c-6 3.71-9 3.47-9 3.47l-.1-.17c-.41-.67 1.92-6.68-.69-13.84c-2.82-7.83-7.3-9.72-6.94-10.32c1.53-2.59 5.36-6.7 6.89-14.36c.91-4.64.67-12.28-1.39-16.28c-.38-.74-3.78 1.24-3.78 1.24s-3.18-7.09-4.07-7.66c-2.87-1.84-6 7.61-6 7.61a14 14 0 0 0-11.71 4.5a9.64 9.64 0 0 1-3.85 2.27c-.41.14-.91.12-2.15 3.47c-1.9 5.07 3.24 10.81 3.24 10.81s-6.13 4.33-8.4 9.72a24.78 24.78 0 0 0-1.75 11.68s-4.36 3.78-4.64 7.68a12.87 12.87 0 0 0 1.77 7.83a1.94 1.94 0 0 0 2.63.91s-2.9 3.38-.19 4.81c2.47 1.29 6.63 2 8.83-.19c1.6-1.6 1.92-5.17 2.51-6.63c.14-.34.62.57 1.08 1a10 10 0 0 0 1.36 1s-3.9 1.68-2.3 5.51c.53 1.27 2.42 2.08 5.51 2.06c1.15 0 13.76-.72 17.12-1.53a4.33 4.33 0 0 0 2.61-1.46a63 63 0 0 0 15.49-7c4.74-3.09 6.68-3.93 10.51-4.84c3.16-.75 2.95-5.65-1.24-5.58z"}),(0,z.jsx)("path",{d:"M64 2a62 62 0 1 0 62 62A62 62 0 0 0 64 2zm37.3 87.83c-3.35.81-4.91 1.44-9.41 4.36a67 67 0 0 1-15.56 7.18a8.71 8.71 0 0 1-3.64 1.77c-3.81.93-16.88 1.63-17.91 1.63h-.24c-4 0-6.27-1.24-7.49-2.54c-3.4 1.7-7.8 1-11-.69a5.55 5.55 0 0 1-3-3.9a6 6 0 0 1 0-2.06a6.66 6.66 0 0 1-.79-1A16.38 16.38 0 0 1 30 84.52c.29-3.73 2.87-7.06 4.55-8.83A28.56 28.56 0 0 1 36.61 64a26.82 26.82 0 0 1 6.82-9c-1.65-2.78-3.33-7.06-1.7-11.42c1.17-3.11 2.13-4.84 4.24-5.58a6.84 6.84 0 0 0 2.51-1.34A17.65 17.65 0 0 1 60.34 31c.19-.48.41-1 .65-1.46c1.6-3.4 3.3-5.31 5.29-6a4.88 4.88 0 0 1 4.4.5c.65.43 1.48 1 3.9 6a4.69 4.69 0 0 1 2.85-.1a3.81 3.81 0 0 1 2.39 1.94c2.47 4.74 2.8 13.19 1.72 18.62a33.8 33.8 0 0 1-5.84 13.31a25.73 25.73 0 0 1 5.77 9.43a25.42 25.42 0 0 1 1.41 10.41A28.7 28.7 0 0 0 86 81.91c3.06-1.89 7.68-4.74 13.19-4.81a6.62 6.62 0 0 1 7 5.7a6.35 6.35 0 0 1-4.89 7.03z"})]})}))}function nD(e){return(0,z.jsxs)("svg",eN(e_({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 128 128"},e),{children:[(0,z.jsx)("path",{fill:"#f8ab00",d:"M0 .004V40h39.996V.004Zm43.996 0V40h40V.004Zm44.008 0V40H128V.004Zm0 43.996v39.996H128V44Z"}),(0,z.jsx)("path",{fill:"#4c4c4c",d:"M43.996 44v39.996h40V44ZM0 87.996v40h39.996v-40Zm43.996 0v40h40v-40Zm44.008 0v40H128v-40Z"})]}))}function nH(e){return(0,z.jsxs)("svg",eN(e_({id:"Bun",width:"1.2em",height:"1.2em",viewBox:"0 0 80 70"},e),{children:[(0,z.jsx)("path",{id:"Shadow",d:"M71.09,20.74c-.16-.17-.33-.34-.5-.5s-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5A26.46,26.46,0,0,1,75.5,35.7c0,16.57-16.82,30.05-37.5,30.05-11.58,0-21.94-4.23-28.83-10.86l.5.5.5.5.5.5.5.5.5.5.5.5.5.5C19.55,65.3,30.14,69.75,42,69.75c20.68,0,37.5-13.48,37.5-30C79.5,32.69,76.46,26,71.09,20.74Z"}),(0,z.jsxs)("g",{id:"Body",children:[(0,z.jsx)("path",{id:"Background",d:"M73,35.7c0,15.21-15.67,27.54-35,27.54S3,50.91,3,35.7C3,26.27,9,17.94,18.22,13S33.18,3,38,3s8.94,4.13,19.78,10C67,17.94,73,26.27,73,35.7Z",style:{fill:"#fbf0df"}}),(0,z.jsx)("path",{id:"Bottom_Shadow","data-name":"Bottom Shadow",d:"M73,35.7a21.67,21.67,0,0,0-.8-5.78c-2.73,33.3-43.35,34.9-59.32,24.94A40,40,0,0,0,38,63.24C57.3,63.24,73,50.89,73,35.7Z",style:{fill:"#f6dece"}}),(0,z.jsx)("path",{id:"Light_Shine","data-name":"Light Shine",d:"M24.53,11.17C29,8.49,34.94,3.46,40.78,3.45A9.29,9.29,0,0,0,38,3c-2.42,0-5,1.25-8.25,3.13-1.13.66-2.3,1.39-3.54,2.15-2.33,1.44-5,3.07-8,4.7C8.69,18.13,3,26.62,3,35.7c0,.4,0,.8,0,1.19C9.06,15.48,20.07,13.85,24.53,11.17Z",style:{fill:"#fffefc"}}),(0,z.jsx)("path",{id:"Top",d:"M35.12,5.53A16.41,16.41,0,0,1,29.49,18c-.28.25-.06.73.3.59,3.37-1.31,7.92-5.23,6-13.14C35.71,5,35.12,5.12,35.12,5.53Zm2.27,0A16.24,16.24,0,0,1,39,19c-.12.35.31.65.55.36C41.74,16.56,43.65,11,37.93,5,37.64,4.74,37.19,5.14,37.39,5.49Zm2.76-.17A16.42,16.42,0,0,1,47,17.12a.33.33,0,0,0,.65.11c.92-3.49.4-9.44-7.17-12.53C40.08,4.54,39.82,5.08,40.15,5.32ZM21.69,15.76a16.94,16.94,0,0,0,10.47-9c.18-.36.75-.22.66.18-1.73,8-7.52,9.67-11.12,9.45C21.32,16.4,21.33,15.87,21.69,15.76Z",style:{fill:"#ccbea7",fillRule:"evenodd"}}),(0,z.jsx)("path",{id:"Outline",d:"M38,65.75C17.32,65.75.5,52.27.5,35.7c0-10,6.18-19.33,16.53-24.92,3-1.6,5.57-3.21,7.86-4.62,1.26-.78,2.45-1.51,3.6-2.19C32,1.89,35,.5,38,.5s5.62,1.2,8.9,3.14c1,.57,2,1.19,3.07,1.87,2.49,1.54,5.3,3.28,9,5.27C69.32,16.37,75.5,25.69,75.5,35.7,75.5,52.27,58.68,65.75,38,65.75ZM38,3c-2.42,0-5,1.25-8.25,3.13-1.13.66-2.3,1.39-3.54,2.15-2.33,1.44-5,3.07-8,4.7C8.69,18.13,3,26.62,3,35.7,3,50.89,18.7,63.25,38,63.25S73,50.89,73,35.7C73,26.62,67.31,18.13,57.78,13,54,11,51.05,9.12,48.66,7.64c-1.09-.67-2.09-1.29-3-1.84C42.63,4,40.42,3,38,3Z"})]}),(0,z.jsxs)("g",{id:"Mouth",children:[(0,z.jsx)("g",{id:"Background-2","data-name":"Background",children:(0,z.jsx)("path",{d:"M45.05,43a8.93,8.93,0,0,1-2.92,4.71,6.81,6.81,0,0,1-4,1.88A6.84,6.84,0,0,1,34,47.71,8.93,8.93,0,0,1,31.12,43a.72.72,0,0,1,.8-.81H44.26A.72.72,0,0,1,45.05,43Z",style:{fill:"#b71422"}})}),(0,z.jsxs)("g",{id:"Tongue",children:[(0,z.jsx)("path",{id:"Background-3","data-name":"Background",d:"M34,47.79a6.91,6.91,0,0,0,4.12,1.9,6.91,6.91,0,0,0,4.11-1.9,10.63,10.63,0,0,0,1-1.07,6.83,6.83,0,0,0-4.9-2.31,6.15,6.15,0,0,0-5,2.78C33.56,47.4,33.76,47.6,34,47.79Z",style:{fill:"#ff6164"}}),(0,z.jsx)("path",{id:"Outline-2","data-name":"Outline",d:"M34.16,47a5.36,5.36,0,0,1,4.19-2.08,6,6,0,0,1,4,1.69c.23-.25.45-.51.66-.77a7,7,0,0,0-4.71-1.93,6.36,6.36,0,0,0-4.89,2.36A9.53,9.53,0,0,0,34.16,47Z"})]}),(0,z.jsx)("path",{id:"Outline-3","data-name":"Outline",d:"M38.09,50.19a7.42,7.42,0,0,1-4.45-2,9.52,9.52,0,0,1-3.11-5.05,1.2,1.2,0,0,1,.26-1,1.41,1.41,0,0,1,1.13-.51H44.26a1.44,1.44,0,0,1,1.13.51,1.19,1.19,0,0,1,.25,1h0a9.52,9.52,0,0,1-3.11,5.05A7.42,7.42,0,0,1,38.09,50.19Zm-6.17-7.4c-.16,0-.2.07-.21.09a8.29,8.29,0,0,0,2.73,4.37A6.23,6.23,0,0,0,38.09,49a6.28,6.28,0,0,0,3.65-1.73,8.3,8.3,0,0,0,2.72-4.37.21.21,0,0,0-.2-.09Z"})]}),(0,z.jsxs)("g",{id:"Face",children:[(0,z.jsx)("ellipse",{id:"Right_Blush","data-name":"Right Blush",cx:"53.22",cy:"40.18",rx:"5.85",ry:"3.44",style:{fill:"#febbd0"}}),(0,z.jsx)("ellipse",{id:"Left_Bluch","data-name":"Left Bluch",cx:"22.95",cy:"40.18",rx:"5.85",ry:"3.44",style:{fill:"#febbd0"}}),(0,z.jsx)("path",{id:"Eyes",d:"M25.7,38.8a5.51,5.51,0,1,0-5.5-5.51A5.51,5.51,0,0,0,25.7,38.8Zm24.77,0A5.51,5.51,0,1,0,45,33.29,5.5,5.5,0,0,0,50.47,38.8Z",style:{fillRule:"evenodd"}}),(0,z.jsx)("path",{id:"Iris",d:"M24,33.64a2.07,2.07,0,1,0-2.06-2.07A2.07,2.07,0,0,0,24,33.64Zm24.77,0a2.07,2.07,0,1,0-2.06-2.07A2.07,2.07,0,0,0,48.75,33.64Z",style:{fill:"#fff",fillRule:"evenodd"}})]})]}))}function nF(e){if(!(null==e?void 0:e.includes("install")))return e;let t=e.split(" ").filter(e=>!e.startsWith("-")&&!e.startsWith("--")).join(" ");return"yarn install"===t||"bun install"===t?e:e.replace("install","add")}function n$({command:e,additionalTabs:t=[]}){let n;let i={npm:(0,z.jsx)(nB,{}),yarn:(0,z.jsx)(nR,{}),pnpm:(0,z.jsx)(nD,{}),bun:(0,z.jsx)(nH,{})};return t.forEach(e=>{i[e.tool]=e.icon}),"string"==typeof e?(n={npm:`npm ${e}`,yarn:`yarn ${e}`,pnpm:`pnpm ${e}`,bun:`bun ${e}`},t.forEach(t=>{n[t.tool]=`${t.tool} ${e}`})):n=e,n.yarn&&(n.yarn=nF(n.yarn)),n.bun&&(n.bun=nF(n.bun)),(0,z.jsx)(nb,{values:Object.entries(n).map(([e])=>(0,z.jsxs)("div",{style:{display:"flex",alignItems:"center",fontSize:15},children:[i[e],(0,z.jsx)("span",{style:{marginLeft:6,marginBottom:2},children:e})]},e)),children:Object.entries(n).map(([e,t])=>(0,z.jsx)(nv,{children:(0,z.jsx)(nE,{children:(0,z.jsx)(nM,{className:"language-js",codeHighlighter:"prism",children:t})})},e))})}var nW={sourceCode:"sourceCode_bf1b0"};function nK(e){let{href:t,platform:n="github"}=e,{sourceCodeText:i="Source"}=eH();return(0,z.jsx)("div",{className:"inline-block rounded border border-solid border-gray-300 text-gray-400 sourceCode_bf1b0",children:(0,z.jsxs)("a",{href:t,target:"_blank",className:"flex items-center content-center transition-all duration-300 text-xs block px-2 py-1 ",children:[(0,z.jsx)("span",{className:"mr-2 inline-flex w-4 h-4",children:(0,z.jsx)(tk,{icon:"gitlab"===n?eI.default:ey.default})}),(0,z.jsx)("span",{children:i})]})})}var nU={rspressSteps:"rspressSteps_38f64"};function nq({children:e}){return(0,z.jsx)("div",{className:"ml-4 mb-11 border-l pl-6 rspressSteps_38f64 [counter-reset:step]",children:e})}var nV={title:"title_3b154",blockquote:"blockquote_3b154",link:"link_3b154","inline-link":"inline-link_3b154",inlineLink:"inline-link_3b154"},nG=e=>(0,z.jsx)("h1",eN(e_({},e),{className:`text-3xl mb-10 leading-10 tracking-tight ${nV.title}`})),nZ=e=>(0,z.jsx)("h2",eN(e_({},e),{className:`mt-14 mb-6 text-2xl tracking-tight ${nV.title}`})),nY=e=>(0,z.jsx)("h3",eN(e_({},e),{className:`mt-10 mb-2 leading-7 text-xl ${nV.title}`})),nX=e=>(0,z.jsx)("h4",eN(e_({},e),{className:`mt-8 leading-6 text-base ${nV.title}`})),nQ=e=>(0,z.jsx)("h5",eN(e_({},e),{className:nV.title})),nJ=e=>(0,z.jsx)("h6",eN(e_({},e),{className:nV.title})),n1=e=>(0,z.jsx)("ol",eN(e_({},e),{className:"list-decimal pl-5 my-4 leading-7"})),n0=e=>(0,z.jsx)("ul",eN(e_({},e),{className:"list-disc pl-5 my-4 leading-7"})),n2=e=>(0,z.jsx)("li",eN(e_({},e),{className:"[&:not(:first-child)]:mt-2"})),n3=e=>(0,z.jsx)("table",eN(e_({},e),{className:"block border-collapse text-base my-5 overflow-x-auto leading-7 border-gray-light-2"})),n4=e=>(0,z.jsx)("tr",eN(e_({},e),{className:"border border-solid transition-colors duration-500 even:bg-soft border-gray-light-2"})),n5=e=>(0,z.jsx)("td",eN(e_({},e),{className:"border border-solid px-4 py-2 border-gray-light-2"})),n6=e=>(0,z.jsx)("th",eN(e_({},e),{className:"border border-solid px-4 py-2 text-text-1 text-base font-semibold border-gray-light-2"})),n7=e=>(0,z.jsx)("hr",eN(e_({},e),{className:"my-12 border-t bordder-solid border-divider-light"})),n8=e=>{let{href:t="",className:n=""}=e,{normalizeLinkHref:i}=(0,$.usePathUtils)();return n.includes("header-anchor")||t.startsWith("#")?(0,z.jsx)("a",eN(e_({},e),{className:`${nV.link} ${n}`})):(0,z.jsx)(ek.Link,eN(e_({},e),{className:`${n} ${nV.link} ${nV["inline-link"]}`,href:i(t)}))},n9=e=>(0,z.jsx)("p",eN(e_({},e),{className:"my-4 leading-7"})),ie=e=>(0,z.jsx)("blockquote",eN(e_({},e),{className:`border-l-2 border-solid border-divider pl-4 my-6 transition-colors duration-500 ${nV.blockquote}`})),it=e=>(0,z.jsx)("strong",eN(e_({},e),{className:"font-semibold"})),ii=e=>(0,z.jsx)("img",eN(e_({},e),{src:(0,C.normalizeImagePath)(e.src||"")}));function ir(){return{h1:nG,h2:nZ,h3:nY,h4:nX,h5:nQ,h6:nJ,ul:n0,ol:n1,li:n2,table:n3,td:n5,th:n6,tr:n4,hr:n7,p:n9,blockquote:ie,strong:it,a:n8,code:nM,pre:nE,img:ii}}var ia={Layout:t$,NotFoundLayout:eD,HomeLayout:tX,setup:eZ}},28628:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return i.default}}),n("2064");var i=n("91330");n.es(i,t)},49555:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return d}});var i=n("13393");let r=/\s?|(]*>|]*>|]+>)+/i,a=RegExp(i.map(e=>`<${e}\\b[^>]*>`).join("|"),"i");function d(e){return e=e.trim().slice(0,1e3),r.test(e)||a.test(e)}},10924:function(e){"use strict";e.exports=JSON.parse('{"AElig":"\xc6","AMP":"&","Aacute":"\xc1","Acirc":"\xc2","Agrave":"\xc0","Aring":"\xc5","Atilde":"\xc3","Auml":"\xc4","COPY":"\xa9","Ccedil":"\xc7","ETH":"\xd0","Eacute":"\xc9","Ecirc":"\xca","Egrave":"\xc8","Euml":"\xcb","GT":">","Iacute":"\xcd","Icirc":"\xce","Igrave":"\xcc","Iuml":"\xcf","LT":"<","Ntilde":"\xd1","Oacute":"\xd3","Ocirc":"\xd4","Ograve":"\xd2","Oslash":"\xd8","Otilde":"\xd5","Ouml":"\xd6","QUOT":"\\"","REG":"\xae","THORN":"\xde","Uacute":"\xda","Ucirc":"\xdb","Ugrave":"\xd9","Uuml":"\xdc","Yacute":"\xdd","aacute":"\xe1","acirc":"\xe2","acute":"\xb4","aelig":"\xe6","agrave":"\xe0","amp":"&","aring":"\xe5","atilde":"\xe3","auml":"\xe4","brvbar":"\xa6","ccedil":"\xe7","cedil":"\xb8","cent":"\xa2","copy":"\xa9","curren":"\xa4","deg":"\xb0","divide":"\xf7","eacute":"\xe9","ecirc":"\xea","egrave":"\xe8","eth":"\xf0","euml":"\xeb","frac12":"\xbd","frac14":"\xbc","frac34":"\xbe","gt":">","iacute":"\xed","icirc":"\xee","iexcl":"\xa1","igrave":"\xec","iquest":"\xbf","iuml":"\xef","laquo":"\xab","lt":"<","macr":"\xaf","micro":"\xb5","middot":"\xb7","nbsp":"\xa0","not":"\xac","ntilde":"\xf1","oacute":"\xf3","ocirc":"\xf4","ograve":"\xf2","ordf":"\xaa","ordm":"\xba","oslash":"\xf8","otilde":"\xf5","ouml":"\xf6","para":"\xb6","plusmn":"\xb1","pound":"\xa3","quot":"\\"","raquo":"\xbb","reg":"\xae","sect":"\xa7","shy":"\xad","sup1":"\xb9","sup2":"\xb2","sup3":"\xb3","szlig":"\xdf","thorn":"\xfe","times":"\xd7","uacute":"\xfa","ucirc":"\xfb","ugrave":"\xf9","uml":"\xa8","uuml":"\xfc","yacute":"\xfd","yen":"\xa5","yuml":"\xff"}')},33222:function(e){"use strict";e.exports=JSON.parse('{"0":"\uFFFD","128":"\u20AC","130":"\u201A","131":"\u0192","132":"\u201E","133":"\u2026","134":"\u2020","135":"\u2021","136":"\u02C6","137":"\u2030","138":"\u0160","139":"\u2039","140":"\u0152","142":"\u017D","145":"\u2018","146":"\u2019","147":"\u201C","148":"\u201D","149":"\u2022","150":"\u2013","151":"\u2014","152":"\u02DC","153":"\u2122","154":"\u0161","155":"\u203A","156":"\u0153","158":"\u017E","159":"\u0178"}')},48606:function(e){"use strict";e.exports=JSON.parse('["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","search","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"]')}}]); \ No newline at end of file diff --git a/modern-js/builder/static/js/9521.19af8cde.js.LICENSE.txt b/modern-js/builder/static/js/7860.b69ddd1b.js.LICENSE.txt similarity index 99% rename from modern-js/builder/static/js/9521.19af8cde.js.LICENSE.txt rename to modern-js/builder/static/js/7860.b69ddd1b.js.LICENSE.txt index e5f92cbef0..0e8ade7552 100644 --- a/modern-js/builder/static/js/9521.19af8cde.js.LICENSE.txt +++ b/modern-js/builder/static/js/7860.b69ddd1b.js.LICENSE.txt @@ -1,1026 +1,1026 @@ -/*! @theme-assets/sun */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-tools.mdx */ -/*! react/jsx-runtime */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-node-polyfill.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/builder-types.mdx */ +/*! ./lang/clike */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-source.mdx */ +/*! @rspress/runtime */ -/*! property-information/html */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/introduction.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/custom-webpack-config.md */ +/*! core-js/modules/esnext.iterator.find.js */ -/*! react */ +/*! @rspress/core/theme */ -/*! ./info */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/browserslist.md */ -/*! react */ +/*! @theme-assets/down */ -/*! @rspress/runtime */ +/*! @babel/runtime/helpers/defineProperty */ -/*! @theme */ +/*! refractor/lang/less.js */ -/*! core-js/modules/esnext.async-iterator.map.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/hmr.md */ -/*! lodash-es */ +/*! react-dom/client */ -/*! @theme-assets/small-menu */ +/** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT + * @author Lea Verou + * @namespace + * @public + */ + +/*! virtual-routes */ + +/*! react/jsx-runtime */ /*! react */ -/*! core-js/modules/esnext.iterator.map.js */ +/*! @rspress/theme-default */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-experiments.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-dev.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/plugin-hooks.mdx */ +/*! react */ -/*! ./util/create */ +/*! refractor/lang/css.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/browserslist.md */ +/*! react/jsx-runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-vue.mdx */ +/*! @theme-assets/translator */ -/*! @theme-assets/github */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-tools.mdx */ -/*! refractor/lang/xml-doc.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/glossary.mdx */ -/*! ./NoSSR */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/typescript.md */ + +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-html.mdx */ /*! react/jsx-runtime */ -/*! @babel/runtime/helpers/toConsumableArray */ +/*! @theme-assets/menu */ -/*! ./types */ +/*! hastscript */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-output.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/index.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-image-compress.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/framework/vue3.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/hmr.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/storybook.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/html-template.md */ +/*! ./prism-light */ -/*! core-js/modules/esnext.async-iterator.map.js */ +/*! space-separated-tokens */ -/*! nprogress */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/features.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/builder-core.mdx */ -/*! ./lib/index.js */ +/*! react/jsx-runtime */ -/*! #theme/components/SvgWrapper */ +/*! #theme/logic */ -/*! virtual-search-hooks */ +/*! react-syntax-highlighter/dist/esm/languages/prism/markdown */ -/*! core-js/modules/es.array.includes.js */ +/*! @rspress/shared */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-esbuild.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/general.md */ -/*! core-js/modules/esnext.async-iterator.filter.js */ +/*! core-js/modules/esnext.iterator.map.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/css-usage.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/storybook.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/typescript.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-dev.mdx */ /*! react */ -/*! #theme/logic/useUISwitch */ - -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/custom-webpack-config.md */ - -/*! core-js/modules/esnext.iterator.find.js */ +/*! ./util/case-insensitive-transform */ -/*! ./lib/html */ +/*! ./lib/xmlns */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-performance.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/index.md */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/html-template.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/plugin-core.mdx */ +/*! Bundled license information: -/*! core-js/modules/esnext.iterator.filter.js */ +lodash-es/lodash.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) +*/ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/index.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/exceptions.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-swc.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-vue.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/plugin-core.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-experiments.mdx */ /*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-experiments.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/custom-webpack-config.md */ -/*! core-js/modules/web.url-search-params.size.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/css-usage.md */ -/*! react/jsx-runtime */ +/*! react-helmet-async */ -/*! is-alphabetical */ +/*! ./html */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/builder-cli.mdx */ +/*! @theme-assets/header */ -/*! react-syntax-highlighter/dist/esm/languages/prism/json */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/plugin-hooks.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/builder-config.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-stylus.mdx */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/general.md */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/optimization/split-chunk.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/builder-types.mdx */ +/*! @theme-assets/arrow-down */ -/*! @mdx-js/react */ +/*! core-js/modules/esnext.async-iterator.map.js */ -/*! ./usePathUtils */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/builder-instance.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/optimization/split-chunk.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/glossary.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/glossary.mdx */ +/*! react/jsx-runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-esbuild.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/general.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/custom-webpack-config.md */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/introduction.md */ +/*! react/jsx-runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/builder-instance.mdx */ +/*! react */ -/*! ./highlight */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-vue2.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/exceptions.md */ +/*! react */ /*! react/jsx-runtime */ -/*! property-information/normalize */ +/*! react/jsx-runtime */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/debug/debug-mode.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/html-template.md */ +/*! ./typescript.js */ -/*! #theme/logic/useRedirect4FirstVisit */ +/*! ./usePathUtils */ -/*! @rspress/shared */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/index.md */ -/*! refractor/lang/yaml.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/framework/vue3.mdx */ -/*! core-js/modules/web.url-search-params.delete.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/browserslist.md */ -/*! react */ +/*! #theme/components/Link */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/browser-compatibility.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/features.mdx */ -/*! refractor/core */ +/*! @rspress/runtime */ -/*! ./lib/ReactPropTypesSecret */ +/*! refractor/lang/bash.js */ -/*! ./util/create */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/rspack-start.mdx */ -/*! react/jsx-runtime */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-stylus.mdx */ -/*! react-syntax-highlighter/dist/esm/languages/prism/tsx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/hmr.md */ -/*! @theme-assets/header */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-vue.mdx */ -/*! react */ +/*! is-decimal */ -/*! ./bundle */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/hmr.md */ -/*! ./create-element */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/index.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/plugin-core.mdx */ +/*! react-syntax-highlighter/dist/esm/languages/prism/yaml */ -/*! xtend */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-output.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/builder-cli.mdx */ +/*! @babel/runtime/helpers/defineProperty */ -/*! core-js/modules/esnext.iterator.constructor.js */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/rspack-start.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-esbuild.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/builder-config.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/quick-start.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/builder-core.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/general.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/index.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/html-template.md */ -/*! virtual-site-data */ +/*! core-js/modules/esnext.iterator.constructor.js */ -/*! react/jsx-runtime */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-source.mdx */ -/*! ./defined-info */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-source.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-swc.mdx */ +/*! virtual-site-data */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/quick-start.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/framework/vue2.mdx */ -/*! ./useLocaleSiteData */ +/*! ./lib/util/defined-info */ -/*! ../../normalize */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-source.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/index.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-performance.mdx */ -/*! ./utils */ +/*! ./lib/util/info */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-dev.mdx */ +/*! flexsearch */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/hmr.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/build-target.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/glossary.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/builder-cli.mdx */ -/*! #theme/components/Link */ +/*! ./util/types */ -/*! prismjs/components/prism-core */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/typescript.md */ -/*! is-hexadecimal */ +/*! react */ -/*! ./factoryWithThrowingShims */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/custom-webpack-config.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-security.mdx */ +/*! @theme-assets/loading */ -/*! html-tags */ +/*! ./util/create */ -/*! @rspress/runtime */ +/*! react/jsx-runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/plugin-hooks.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-swc.mdx */ -/*! ./lang/markup */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-performance.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/browser-compatibility.md */ +/*! ./html-tags.json */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-image-compress.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/plugin-core.mdx */ /*! @rspress/runtime */ -/*! property-information/find */ +/*! react-syntax-highlighter/dist/esm/languages/prism/diff */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/introduction.md */ +/*! refractor/lang/diff.js */ -/*! react-syntax-highlighter */ +/*! medium-zoom 1.0.8 | MIT License | https://github.com/francoischalifour/medium-zoom */ -/*! ./Content */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/typescript.md */ +/*! toggle-selection */ -/*! react */ +/*! react/jsx-runtime */ -/*! character-reference-invalid */ +/*! core-js/modules/web.url-search-params.delete.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/framework/vue3.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/plugin-core.mdx */ -/*! react-syntax-highlighter/dist/esm/languages/prism/markdown */ +/*! ./utils */ -/*! ./hooks */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/glossary.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/hmr.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/custom-webpack-config.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/index.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/build-target.md */ -/*! react */ +/*! #theme/logic/sideEffects */ -/*! react/jsx-runtime */ +/*! @theme-assets/github */ /*! react */ -/*! ./lang/clike */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-image-compress.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/general.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-esbuild.mdx */ -/*! react/jsx-runtime */ +/*! virtual-routes */ -/*! virtual-site-data */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/introduction.md */ -/*! @theme-assets/loading */ +/*! core-js/modules/web.url-search-params.has.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-vue.mdx */ +/*! ./schema */ -/*! @babel/runtime/helpers/defineProperty */ +/*! @theme-assets/search */ -/*! refractor/lang/less.js */ +/*! ./util/create */ -/** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT - * @author Lea Verou - * @namespace - * @public - */ +/*! @theme-assets/close */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/list.md */ +/*! @theme-assets/arrow-right */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/exceptions.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/hmr.md */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-performance.mdx */ -/*! react/jsx-runtime */ +/*! react */ /*! react */ -/*! refractor/lang/css.js */ +/*! @rspress/runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/general.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/quick-start.mdx */ /*! @rspress/shared */ -/*! #theme/logic */ +/*! htmr */ -/*! core-js/modules/esnext.iterator.constructor.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/typescript.md */ -/*! body-scroll-lock */ +/*! react-syntax-highlighter/dist/esm/languages/prism/xml-doc */ -/*! htmr */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-output.mdx */ +/*! react-router-dom */ -/*! ./MediumZoom.css */ +/*! ./schema */ -/*! hastscript */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/plugin-core.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/glossary.mdx */ +/*! core-js/modules/esnext.iterator.map.js */ -/*! @rspress/core/runtime */ +/*! @babel/runtime/helpers/objectWithoutProperties */ -/*! virtual-site-data */ +/*! #theme/logic/useNav */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/general.md */ +/*! ./MediumZoom.css */ -/*! ./prism-light */ +/*! react */ -/*! react-router-dom */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/builder-config.mdx */ -/*! space-separated-tokens */ +/*! is-decimal */ -/*! virtual-prism-languages */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/features.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-vue2.mdx */ +/*! nprogress */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/storybook.mdx */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/optimization/split-chunk.md */ +/*! shallowequal */ + +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-dev.mdx */ + +/*! @theme-assets/wrapped */ + +/*! react */ /*! @rspress/runtime */ -/*! @theme-assets/search */ +/*! is-html */ -/*! @theme-assets/close */ +/*! core-js/modules/esnext.iterator.map.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/builder-types.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/rspack-start.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/builder-core.mdx */ +/*! react-dom */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/index.md */ +/*! virtual-site-data */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/framework/vue3.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-vue.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/browser-compatibility.md */ +/*! ./lib/xlink */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/quick-start.mdx */ -/*! ./util/case-insensitive-transform */ +/*! react-router-dom */ -/*! ./lib/xmlns */ +/*! prop-types */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/debug/debug-mode.md */ +/*! core-js/modules/esnext.async-iterator.map.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/introduction.mdx */ +/*! react-syntax-highlighter/dist/esm/languages/prism/typescript */ -/*! react-dom/client */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-security.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/custom-webpack-config.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/framework/vue2.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-experiments.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-swc.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/list.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/plugin-hooks.mdx */ -/*! core-js/modules/esnext.async-iterator.find.js */ +/*! parse-entities */ -/*! @rspress/theme-default */ +/*! ./util/create */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-vue.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/plugin-hooks.mdx */ -/*! core-js/modules/web.url-search-params.delete.js */ +/*! @rspress/runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/rspack-start.mdx */ +/*! refractor/lang/javascript.js */ -/*! react-syntax-highlighter/dist/esm/languages/prism/yaml */ +/*! ./factory */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/hmr.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/framework/vue3.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-output.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-node-polyfill.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/quick-start.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/features.md */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-tools.mdx */ -/*! ./html */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/introduction.md */ -/*! react */ +/*! @theme-assets/wrap */ -/*! react */ +/*! character-entities-legacy */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-esbuild.mdx */ +/*! core-js/modules/esnext.async-iterator.map.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/builder-core.mdx */ +/*! ./lib/xml */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/glossary.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/builder-config.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/framework/vue2.mdx */ +/*! react-syntax-highlighter/dist/esm/languages/prism/less */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/general.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-node-polyfill.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/plugin-core.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/optimization/split-chunk.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-vue2.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-security.mdx */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/debug/debug-mode.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/builder-cli.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/introduction.mdx */ -/*! @theme-assets/down */ +/*! invariant */ -/*! react-dom */ +/*! lodash-es */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-stylus.mdx */ +/*! react/jsx-runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/storybook.mdx */ +/*! @theme-assets/title */ -/*! ./typescript.js */ +/*! core-js/modules/esnext.async-iterator.filter.js */ -/*! virtual-routes */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/hmr.md */ -/*! react */ +/*! @theme-assets/success */ -/*! @theme */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/css-usage.md */ -/*! ./utils */ +/*! hast-util-parse-selector */ -/*! refractor/lang/bash.js */ +/*! ./lib/aria */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/typescript.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-output.mdx */ -/*! @theme-assets/translator */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/browser-compatibility.md */ +/*! core-js/modules/es.array.includes.js */ -/*! react-syntax-highlighter/dist/esm/languages/prism/diff */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/plugin-hooks.mdx */ -/*! @rspress/runtime */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/list.md */ -/*! react/jsx-runtime */ +/*! @rspress/core/runtime */ -/*! react */ +/*! react-dom */ -/*! @theme-assets/menu */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-experiments.mdx */ -/*! is-decimal */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-source.mdx */ -/*! react/jsx-runtime */ +/*! nprogress/nprogress.css */ -/*! @theme-assets/wrap */ +/*! virtual-search-index-hash */ -/*! @babel/runtime/helpers/defineProperty */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/node_modules/.pnpm/@rspress+plugin-medium-zoom@1.14.0_@rspress+runtime@1.14.0/node_modules/@rspress/plugin-medium-zoom/src/components/MediumZoom.tsx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-dev.mdx */ -/*! #theme/logic */ +/*! ./utils */ /*! react */ -/*! @rspress/shared */ +/*! react/jsx-runtime */ -/*! react */ +/*! react-syntax-highlighter/dist/esm/languages/prism/scss */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/framework/vue2.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-node-polyfill.mdx */ + +/*! ./useLocaleSiteData */ /*! react/jsx-runtime */ -/*! @theme-assets/title */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/build-target.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/hmr.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/browser-compatibility.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/introduction.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/build-target.md */ -/*! ./lib/util/defined-info */ +/*! refractor/lang/json.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-html.mdx */ +/*! lodash-es */ /*! react/jsx-runtime */ -/*! ./lib/util/info */ - -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/quick-start.mdx */ +/*! @theme-assets/copy */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/framework/vue2.mdx */ +/*! @theme-assets/jump */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/debug/debug-mode.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/builder-types.mdx */ -/*! react/jsx-runtime */ +/*! core-js/modules/web.url-search-params.size.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-vue2.mdx */ +/*! react-syntax-highlighter/dist/esm/languages/prism/javascript */ /*! @rspress/runtime */ -/*! ./util/types */ - -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-html.mdx */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/builder-types.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/rem.md */ -/*! react-syntax-highlighter/dist/esm/languages/prism/xml-doc */ +/*! react */ -/*! ./util/create */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-security.mdx */ +/*! ./checkForListedLanguage */ -/*! react-helmet-async */ +/*! copy-to-clipboard */ -/*! ./html-tags.json */ +/*! refractor/lang/markdown.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-html.mdx */ +/*! core-js/modules/esnext.iterator.filter.js */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/list.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/define.md */ +/*! @theme-assets/file */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/builder-config.mdx */ +/*! refractor/lang/tsx.js */ -/*! @theme-assets/arrow-down */ +/*! ./util/case-insensitive-transform */ -/*! refractor/lang/diff.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/custom-webpack-config.md */ -/*! medium-zoom 1.0.8 | MIT License | https://github.com/francoischalifour/medium-zoom */ +/*! react/jsx-runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/features.md */ +/*! ./decode-entity */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-node-polyfill.mdx */ +/*! react/jsx-runtime */ -/*! toggle-selection */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/typescript.md */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/glossary.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/rem.md */ +/*! react-syntax-highlighter/dist/esm/languages/prism/css */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/builder-cli.mdx */ +/*! @rspress/runtime */ -/*! core-js/modules/esnext.async-iterator.filter.js */ +/*! @theme-assets/empty */ -/*! @rspress/runtime */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/exceptions.md */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/plugin-core.mdx */ -/*! ./hooks */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/introduction.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-tools.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/define.md */ -/*! @rspress/core/theme */ +/*! @rspress/runtime */ -/*! virtual-global-components */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-esbuild.mdx */ -/*! @theme-assets/jump */ +/*! @rspress/runtime */ -/*! ./schema */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/builder-core.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-vue.mdx */ +/*! ./bundle */ -/*! ./util/create */ +/*! react-fast-compare */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/hmr.md */ +/*! @theme-assets/moon */ -/*! react */ +/*! react/jsx-runtime */ -/*! react-syntax-highlighter/dist/esm/languages/prism/typescript */ +/*! @theme */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/css-usage.md */ +/*! core-js/modules/esnext.iterator.constructor.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/framework/vue2.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-performance.mdx */ -/*! is-html */ +/*! ./jsx.js */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-stylus.mdx */ -/*! @rspress/shared */ +/*! is-alphanumerical */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-tools.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/browser-compatibility.md */ -/*! @theme-assets/file */ +/*! ./case-sensitive-transform */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-tools.mdx */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-html.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-experiments.mdx */ -/*! Bundled license information: +/*! @babel/runtime/helpers/extends */ -lodash-es/lodash.js: - (** - * @license - * Lodash (Custom Build) - * Build: `lodash modularize exports="es" -o ./` - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - *) -*/ +/*! ./hooks */ -/*! react */ +/*! @rspress/shared */ -/*! react-router-dom */ +/*! @theme-assets/sun */ -/*! ./schema */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/features.md */ -/*! @babel/runtime/helpers/objectWithoutProperties */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/features.mdx */ -/*! @theme-assets/empty */ +/*! @theme-assets/small-menu */ -/*! medium-zoom */ +/*! comma-separated-tokens */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-dev.mdx */ +/*! react-lazy-with-preload */ -/*! react-syntax-highlighter/dist/esm/languages/prism/less */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/index.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-esbuild.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-tools.mdx */ -/*! is-decimal */ +/*! core-js/modules/esnext.iterator.constructor.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/features.md */ +/*! medium-zoom */ -/*! react-helmet-async */ +/*! html-tags */ -/*! virtual-routes */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-node-polyfill.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/features.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/optimization/split-chunk.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/builder-instance.mdx */ -/*! core-js/modules/esnext.iterator.filter.js */ +/*! ./index.module.scss */ -/*! virtual-site-data */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/framework/vue2.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/builder-config.mdx */ +/*! @rspress/runtime */ -/*! shallowequal */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-vue2.mdx */ -/*! react/jsx-runtime */ +/*! ./util/types */ -/*! virtual-routes */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/framework/vue2.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-experiments.mdx */ +/*! ./normalize */ /*! react/jsx-runtime */ -/*! @rspress/runtime */ - -/*! flexsearch */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/introduction.mdx */ -/*! @rspress/runtime */ +/*! react/jsx-runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/html-template.md */ +/*! @rspress/shared */ -/*! core-js/modules/esnext.iterator.find.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/rem.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/list.md */ +/*! react-helmet-async */ /*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-stylus.mdx */ - -/*! ./lib/xlink */ +/*! ./utils */ -/*! prop-types */ +/*! #theme/components/SvgWrapper */ -/*! react */ +/*! refractor/lang/scss.js */ -/*! react/jsx-runtime */ +/*! @theme */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/css-usage.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/debug/debug-mode.md */ -/*! parse-entities */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/builder-types.mdx */ -/*! ./util/create */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/builder-cli.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/optimization/split-chunk.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/framework/vue3.mdx */ -/*! core-js/modules/esnext.iterator.constructor.js */ +/*! react/jsx-runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-dev.mdx */ +/*! react */ -/*! refractor/lang/javascript.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/browser-compatibility.md */ -/*! ./factory */ +/*! refractor/lang/typescript.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/builder-instance.mdx */ +/*! #theme/logic/useUISwitch */ -/*! react-syntax-highlighter/dist/esm/languages/prism/scss */ +/*! ./lang/css */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-node-polyfill.mdx */ +/*! react-syntax-highlighter/dist/esm/languages/prism/bash */ -/*! #theme/logic/sideEffects */ +/*! react/jsx-runtime */ /*! virtual-site-data */ -/*! character-entities-legacy */ - -/*! ./lib/xml */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-image-compress.mdx */ -/*! core-js/modules/esnext.iterator.map.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/rem.md */ /*! @rspress/shared */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/introduction.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/build-target.md */ +/*! ./lang/javascript */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/build-target.md */ +/*! virtual-site-data */ -/*! core-js/modules/web.url-search-params.has.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/define.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-stylus.mdx */ +/*! react */ -/*! @theme-assets/arrow-right */ +/*! ./lib/util/merge */ -/*! react-syntax-highlighter/dist/esm/languages/prism/javascript */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/builder-core.mdx */ -/*! invariant */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/index.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/builder-instance.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/hmr.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-stylus.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/quick-start.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/index.mdx */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/rem.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/hmr.md */ -/*! hast-util-parse-selector */ +/*! @rspress/shared */ -/*! ./useLocaleSiteData */ +/*! property-information/html */ -/*! ./lib/aria */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/rspack-start.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/features.mdx */ +/*! ./info */ /*! react */ -/*! #theme/logic/useNav */ +/*! nprogress */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-source.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/define.md */ -/*! core-js/modules/esnext.async-iterator.map.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-security.mdx */ -/*! react/jsx-runtime */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/css-usage.md */ /*! react */ -/*! react-syntax-highlighter/dist/esm/languages/prism/css */ +/*! core-js/modules/esnext.async-iterator.find.js */ -/*! react/jsx-runtime */ +/*! ./util/create */ -/*! react-dom */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/exceptions.md */ +/*! @rspress/runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/introduction.md */ +/*! @mdx-js/react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-performance.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-image-compress.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/html-template.md */ +/*! refractor/lang/xml-doc.js */ /*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-source.mdx */ - -/*! nprogress */ +/*! ./NoSSR */ -/*! @theme-assets/wrapped */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-source.mdx */ +/*! core-js/modules/esnext.iterator.constructor.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/rem.md */ +/*! @babel/runtime/helpers/toConsumableArray */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/define.md */ +/*! ./types */ -/*! is-html */ +/*! ./useLocaleSiteData */ -/*! ./bundle.css */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/browser-compatibility.md */ -/*! refractor/lang/json.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-esbuild.mdx */ -/*! ./sideEffects */ +/*! #theme/logic/useRedirect4FirstVisit */ -/*! react/jsx-runtime */ +/*! core-js/modules/esnext.async-iterator.find.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/browserslist.md */ +/*! core-js/modules/web.url-search-params.delete.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/build-target.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/features.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-performance.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/index.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-tools.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/exceptions.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/features.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/list.md */ /*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/browserslist.md */ - -/*! ./checkForListedLanguage */ +/*! core-js/modules/web.url-search-params.has.js */ -/*! refractor/lang/markdown.js */ +/*! react/jsx-runtime */ -/*! react-lazy-with-preload */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/builder-types.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/index.md */ +/*! ./bundle.css */ -/*! ./useLocaleSiteData */ +/*! ./sideEffects */ -/*! refractor/lang/tsx.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/storybook.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/features.md */ +/*! react/jsx-runtime */ -/*! ./util/case-insensitive-transform */ +/*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-image-compress.mdx */ +/*! react/jsx-runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/features.md */ +/*! ./lib/html */ -/*! ./decode-entity */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-output.mdx */ /*! ./App */ -/*! virtual-routes */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-vue.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-vue2.mdx */ +/*! react */ -/*! ./useHiddenNav */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/optimization/split-chunk.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/define.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/html-template.md */ /*! react */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/build-target.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/builder-core.mdx */ -/*! core-js/modules/esnext.async-iterator.find.js */ +/*! react */ -/*! @rspress/runtime */ +/*! @theme */ -/*! react/jsx-runtime */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-output.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/rspack-start.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-image-compress.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-performance.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/introduction.mdx */ -/*! react-fast-compare */ +/*! is-alphabetical */ -/*! @rspress/runtime */ +/*! virtual-routes */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-swc.mdx */ +/*! ./lib/index.js */ -/*! @theme-assets/success */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/features.mdx */ -/*! core-js/modules/esnext.iterator.constructor.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/css-usage.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/rem.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-experiments.mdx */ -/*! ./jsx.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/builder-instance.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/typescript.md */ +/*! react-syntax-highlighter */ -/*! is-alphanumerical */ +/*! react/jsx-runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-swc.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-stylus.mdx */ -/*! ./case-sensitive-transform */ +/*! ./highlight */ -/*! @babel/runtime/helpers/extends */ +/*! property-information/normalize */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/list.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/storybook.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/framework/vue3.mdx */ +/*! refractor/lang/yaml.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/builder-instance.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-vue2.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/hmr.md */ +/*! ./useLocaleSiteData */ -/*! react/jsx-runtime */ +/*! @theme-assets/gitlab */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/browserslist.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/rem.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/debug/debug-mode.md */ +/*! refractor/core */ -/*! comma-separated-tokens */ +/*! ./lib/ReactPropTypesSecret */ -/*! nprogress/nprogress.css */ +/*! ./util/create */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-dev.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/index.md */ -/*! virtual-search-index-hash */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/browserslist.md */ /*! react/jsx-runtime */ -/*! react-syntax-highlighter/dist/esm/languages/prism/bash */ +/*! react */ -/*! htmr */ +/*! ./useHiddenNav */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-image-compress.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/browserslist.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/introduction.mdx */ +/*! react */ -/*! react/jsx-runtime */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/builder-cli.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/introduction.md */ +/*! ./create-element */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/plugin-hooks.mdx */ +/*! body-scroll-lock */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-security.mdx */ +/*! react-syntax-highlighter/dist/esm/languages/prism/json */ -/*! lodash-es */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/builder-config.mdx */ -/*! @theme-assets/copy */ +/*! htmr */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/hmr.md */ +/*! xtend */ -/*! ./util/types */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/builder-types.mdx */ -/*! react/jsx-runtime */ +/*! /home/runner/work/modern.js/modern.js/node_modules/.pnpm/@rspress+plugin-medium-zoom@1.15.0_@rspress+runtime@1.15.0/node_modules/@rspress/plugin-medium-zoom/src/components/MediumZoom.tsx */ -/*! core-js/modules/web.url-search-params.size.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/optimization/split-chunk.md */ -/*! core-js/modules/web.url-search-params.has.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/exceptions.md */ -/*! ./normalize */ +/*! virtual-prism-languages */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/quick-start.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/html-template.md */ /*! react/jsx-runtime */ -/*! react-helmet-async */ +/*! virtual-global-components */ -/*! copy-to-clipboard */ +/*! virtual-site-data */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-node-polyfill.mdx */ +/*! ./defined-info */ -/*! react */ +/*! react/jsx-runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/storybook.mdx */ +/*! ../../normalize */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/rspack-start.mdx */ +/*! core-js/modules/esnext.async-iterator.filter.js */ -/*! ./utils */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/debug/debug-mode.md */ -/*! refractor/lang/scss.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-vue2.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/advanced/define.md */ +/*! prismjs/components/prism-core */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/builder-core.mdx */ +/*! is-hexadecimal */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/framework/vue3.mdx */ +/*! ./factoryWithThrowingShims */ -/*! react/jsx-runtime */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/rspack-start.mdx */ -/*! react/jsx-runtime */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-html.mdx */ -/*! core-js/modules/esnext.iterator.map.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/define.md */ -/*! @rspress/runtime */ +/*! ./lang/markup */ -/*! ./index.module.scss */ +/*! core-js/modules/esnext.iterator.filter.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/advanced/storybook.mdx */ +/*! property-information/find */ -/*! refractor/lang/typescript.js */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/plugins/plugin-swc.mdx */ -/*! ./lang/css */ +/*! ./Content */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/index.mdx */ +/*! core-js/modules/esnext.iterator.find.js */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-security.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/faq/hmr.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/debug/debug-mode.md */ +/*! react-syntax-highlighter/dist/esm/languages/prism/tsx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/introduction.mdx */ +/*! virtual-search-hooks */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/plugin-hooks.mdx */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/config-html.mdx */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-html.mdx */ -/*! @theme-assets/moon */ +/*! character-reference-invalid */ -/*! ./lang/javascript */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/plugin-swc.mdx */ -/*! @rspress/shared */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/builder-cli.mdx */ -/*! ./lib/util/merge */ +/*! #theme/logic */ -/*! react */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/plugins/list.md */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/features.mdx */ +/*! core-js/modules/web.url-search-params.size.js */ -/*! @theme */ +/*! react-helmet-async */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/faq/exceptions.md */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/api/builder-instance.mdx */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-output.mdx */ +/*! react/jsx-runtime */ -/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/guide/basic/css-usage.md */ +/*! ./hooks */ -/*! react/jsx-runtime */ +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/zh/api/config-security.mdx */ + +/*! is-html */ + +/*! virtual-routes */ -/*! @theme-assets/gitlab */ \ No newline at end of file +/*! /home/runner/work/modern.js/modern.js/packages/document/builder-doc/docs/en/guide/basic/builder-config.mdx */ \ No newline at end of file diff --git a/modern-js/builder/static/js/9521.19af8cde.js b/modern-js/builder/static/js/9521.19af8cde.js deleted file mode 100644 index 961c06e363..0000000000 --- a/modern-js/builder/static/js/9521.19af8cde.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 9521.19af8cde.js.LICENSE.txt */ -(self.webpackChunk_modern_js_builder_doc=self.webpackChunk_modern_js_builder_doc||[]).push([["9521"],{80085:function(e,t,n){"use strict";n.r(t),n.d(t,{Content:function(){return u}});var i=n("39980"),r=n("2363"),a=n("35383"),d=n("13328"),o=n("60209"),l=n("36083");let{routes:s}=n("99593"),c=(0,r.memo)(function(e){let t=e.el;return d.default?.themeConfig?.enableContentAnimation&&(t=(0,l.useViewTransition)(e.el)),t},(e,t)=>e.el===t.el),u=({fallback:e=(0,i.jsx)(i.Fragment,{})})=>{let{pathname:t}=(0,a.useLocation)(),n=(0,a.matchRoutes)(s,(0,o.normalizeRoutePath)(t));if(!n)return(0,i.jsx)("div",{});let d=n[0].route.element;return(0,i.jsx)(r.Suspense,{fallback:e,children:(0,i.jsx)(c,{el:d})})}},47738:function(e,t,n){"use strict";n.r(t),n.d(t,{NoSSR:function(){return a}});var i=n("39980"),r=n("2363");function a(e){let{children:t}=e,[n,a]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{a(!0)},[]),n)?(0,i.jsx)(i.Fragment,{children:t}):null}},36083:function(e,t,n){"use strict";n.r(t),n.d(t,{DataContext:function(){return a},ThemeContext:function(){return d},useLang:function(){return l},usePageData:function(){return o},useVersion:function(){return s},useViewTransition:function(){return c}});var i=n("2363"),r=n("61850");let a=(0,i.createContext)({}),d=(0,i.createContext)({});function o(){return(0,i.useContext)(a).data}function l(){return(0,i.useContext)(a).data.page.lang||""}function s(){return(0,i.useContext)(a).data.page.version||""}function c(e){let[t,n]=(0,i.useState)(e);return(0,i.useLayoutEffect)(()=>{document.startViewTransition&&t!==e?document.startViewTransition(()=>{(0,r.flushSync)(()=>{n(e)}),window.dispatchEvent(new Event("RspressReloadContent"))}):((0,r.flushSync)(()=>{n(e)}),window.dispatchEvent(new Event("RspressReloadContent")))},[e]),t}},69423:function(e,t,n){"use strict";n.r(t),n.d(t,{BrowserRouter:function(){return d.BrowserRouter},NoSSR:function(){return o.NoSSR},isEqualPath:function(){return a.isEqualPath},isProduction:function(){return a.isProduction},matchRoutes:function(){return d.matchRoutes},normalizeHrefInRuntime:function(){return a.normalizeHrefInRuntime},normalizeImagePath:function(){return a.normalizeImagePath},normalizeRoutePath:function(){return a.normalizeRoutePath},removeBase:function(){return a.removeBase},useLocation:function(){return d.useLocation},useNavigate:function(){return d.useNavigate},withBase:function(){return a.withBase}});var i=n("36083");n.es(i,t);var r=n("80085");n.es(r,t);var a=n("60209"),d=n("35383");n("20288");var o=n("47738")},60209:function(e,t,n){"use strict";n.r(t),n.d(t,{isEqualPath:function(){return l},isProduction:function(){return r.isProduction},normalizeHrefInRuntime:function(){return s},normalizeImagePath:function(){return c},normalizeRoutePath:function(){return a},removeBase:function(){return o},withBase:function(){return d}});var i=n("13328"),r=n("87429");function a(e){return decodeURIComponent(e).replace(/\.html$/,"").replace(/\/index$/,"/")}function d(e="/"){return(0,r.withBase)(e,i.default.base)}function o(e){return(0,r.removeBase)(e,i.default.base)}function l(e,t){return d(s((0,r.removeHash)(e)))===d(s((0,r.removeHash)(t)))}function s(e){let t=!!i.default?.route?.cleanUrls;return(0,r.normalizeHref)(e,t)}function c(e){return!(0,r.isProduction)()||(0,r.isExternalUrl)(e)||(0,r.isDataUrl)(e)?e:d(e)}},12555:function(e,t,n){"use strict";n.r(t),n.d(t,{clearAllBodyScrollLocks:function(){return v},disableBodyScroll:function(){return b}});var i=!1;if("undefined"!=typeof window){var r={get passive(){i=!0;return}};window.addEventListener("testPassive",null,r),window.removeEventListener("testPassive",null,r)}var a="undefined"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1),d=[],o=!1,l=-1,s=void 0,c=void 0,u=void 0,h=function(e){return d.some(function(t){return!!(t.options.allowTouchMove&&t.options.allowTouchMove(e))||!1})},p=function(e){var t=e||window.event;return!!h(t.target)||!!(t.touches.length>1)||(t.preventDefault&&t.preventDefault(),!1)},x=function(e){if(void 0===u){var t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;if(t&&n>0){var i=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right"),10);u=document.body.style.paddingRight,document.body.style.paddingRight=i+n+"px"}}void 0===s&&(s=document.body.style.overflow,document.body.style.overflow="hidden")},f=function(){void 0!==u&&(document.body.style.paddingRight=u,u=void 0),void 0!==s&&(document.body.style.overflow=s,s=void 0)},m=function(){if(void 0!==c){var e=-parseInt(document.body.style.top,10),t=-parseInt(document.body.style.left,10);document.body.style.position=c.position,document.body.style.top=c.top,document.body.style.left=c.left,window.scrollTo(t,e),c=void 0}},g=function(e,t){var n,i=e.targetTouches[0].clientY-l;if(h(e.target))return!1;if(t&&0===t.scrollTop&&i>0)return p(e);return(n=t)&&n.scrollHeight-n.scrollTop<=n.clientHeight&&i<0?p(e):(e.stopPropagation(),!0)},b=function(e,t){if(!e){console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");return}!d.some(function(t){return t.targetElement===e})&&(d=[].concat(function(e){if(!Array.isArray(e))return Array.from(e);for(var t=0,n=Array(e.length);t=i&&(document.body.style.top=-(t+e))})},300)}}):x(t),a&&(e.ontouchstart=function(e){1===e.targetTouches.length&&(l=e.targetTouches[0].clientY)},e.ontouchmove=function(t){1===t.targetTouches.length&&g(t,e)},!o&&(document.addEventListener("touchmove",p,i?{passive:!1}:void 0),o=!0)))},v=function(){a&&(d.forEach(function(e){e.targetElement.ontouchstart=null,e.targetElement.ontouchmove=null}),o&&(document.removeEventListener("touchmove",p,i?{passive:!1}:void 0),o=!1),l=-1),a?m():f(),d=[]}},429:function(e,t){"use strict";t.parse=function(e){for(var t,n=[],i=String(e||""),r=i.indexOf(","),a=0,d=!1;!d;)-1===r&&(r=i.length,d=!0),((t=i.slice(a,r).trim())||!d)&&n.push(t),a=r+1,r=i.indexOf(",",a);return n},t.stringify=function(e,t){var n=t||{},i=!1===n.padLeft?"":" ",r=n.padRight?" ":"";return""===e[e.length-1]&&(e=e.concat("")),e.join(r+","+i).trim()}},79522:function(e,t,n){"use strict";var i=n("48456"),r={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,a,d,o,l,s,c,u,h=!1;!t&&(t={}),d=t.debug||!1;try{if(l=i(),s=document.createRange(),c=document.getSelection(),(u=document.createElement("span")).textContent=e,u.ariaHidden="true",u.style.all="unset",u.style.position="fixed",u.style.top=0,u.style.clip="rect(0, 0, 0, 0)",u.style.whiteSpace="pre",u.style.webkitUserSelect="text",u.style.MozUserSelect="text",u.style.msUserSelect="text",u.style.userSelect="text",u.addEventListener("copy",function(n){if(n.stopPropagation(),t.format){if(n.preventDefault(),void 0===n.clipboardData){d&&console.warn("unable to use e.clipboardData"),d&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=r[t.format]||r.default;window.clipboardData.setData(i,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e)}t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))}),document.body.appendChild(u),s.selectNodeContents(u),c.addRange(s),!document.execCommand("copy"))throw Error("copy command was unsuccessful");h=!0}catch(i){d&&console.error("unable to copy using execCommand: ",i),d&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),h=!0}catch(i){;d&&console.error("unable to copy using clipboardData: ",i),d&&console.error("falling back to prompt"),n="message"in t?t.message:"Copy to clipboard: #{key}, Enter",a=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C",o=n.replace(/#{\s*key\s*}/g,a),window.prompt(o,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(s):c.removeAllRanges()),u&&document.body.removeChild(u),l()}return h}},85653:function(e,t){"use strict";var n,i,r;let a;n="FlexSearch",i=function e(t){let n;function i(e,t){let n=t?t.id:e&&e.id;this.id=n||0===n?n:E++,this.init(e,t),o(this,"index",function(){return this.a?Object.keys(this.a.index[this.a.keys[0]].c):Object.keys(this.c)}),o(this,"length",function(){return this.index.length})}function r(e,t,n,i){return this.u!==this.g&&(this.o=this.o.concat(n),this.u++,i&&this.o.length>=i&&(this.u=this.g),this.u===this.g&&(this.cache&&this.j.set(t,this.o),this.F&&this.F(this.o))),this}function a(e,t){let n=e.length,i=y(t),r=[];for(let a=0,d=0;a=d&&((e=(e=e[o-(r+.5>>0)])[n]||(e[n]=[]))[e.length]=i),r)}function u(e,t){if(e){let n=Object.keys(e);for(let i=0,r=n.length;i(e=e.length-t.length)?1:e?-1:0}function x(e,t){return e=e[n],e<(t=t[n])?-1:e>t?1:0}function f(e,t){let i=n.length;for(let r=0;rt?1:0}function m(e,t,n){return e?{page:e,next:t?""+t:null,result:n}:n}function g(e,t,n,i,r,a,d){let o,l=[];if(!0===n){n="0";var s=""}else s=n&&n.split(":");let c=e.length;if(1d&&(s=0),(o=(s=s||0)+t)=this.m.length&&(this.C=0),this.m[this.C].postMessage({add:!0,id:e,content:t}),this.c[d]=""+this.C,n&&n(),this;if(!r){if(this.async&&"function"!=typeof importScripts){let r=this;return(d=new Promise(function(n){setTimeout(function(){r.add(e,t,null,i,!0),r=null,n()})}),n)?(d.then(n),this):d}if(n)return this.add(e,t,null,i,!0),n(),this}if(!(t=this.encode(t)).length)return this;r=y(n=this.f)?n(t):t.split(this.split),this.filter&&(r=a(r,this.filter));let p=j();p._ctx=j();let x=r.length,f=this.threshold,m=this.depth,g=this.b,b=this.i,v=this.D;for(let t=0;th;n--)c(b,p,u=o.substring(h,n),e,t,s,f,g-1)}break;default:if(l=c(b,p,o,e,1,s,f,g-1),m&&1=f)for(l=p._ctx[o]||(p._ctx[o]=j()),o=this.h[o]||(this.h[o]=w(g-(f||0))),0>(s=t-m)&&(s=0),(u=t+m+1)>x&&(u=x);sr;n--)i=a[n-1],a[n]=i,t[i]=n;a[r]=e,t[e]=r}}}return t},e}();return i}(function(){let e={},t="undefined"!=typeof Blob&&"undefined"!=typeof URL&&URL.createObjectURL;return function(n,i,r,a,d){return r=t?URL.createObjectURL(new Blob(["("+r.toString()+")()"],{type:"text/javascript"})):n+".min.js",e[n+="-"+i]||(e[n]=[]),e[n][d]=new Worker(r),e[n][d].onmessage=a,e[n][d]}}()),r=this,(a=r.define)&&a.amd?a([],function(){return i}):(a=r.modules)?a[n.toLowerCase()]=i:"object"==typeof t?e.exports=i:r[n]=i},43451:function(e){"use strict";e.exports=function(e,n){for(var i,r,a,d=e||"",o=n||"div",l={},s=0;s-1}var d=["itemScope"];function o(t,n,i,r){void 0===r&&(r=null);var a=i[t],d=i._;return a?e.createElement(a,n,r):d?d(t,n,r):e.createElement(t,n,r)}return function(e,i){if(void 0===i&&(i={}),"string"!=typeof e)throw TypeError("Expected HTML string");var a=document.createElement("div");a.innerHTML=e.trim();var d=Array.from(a.childNodes).map(function(e,a){return function e(i,a,d){var l,s,c,u,h=d.transform||{},p=d.preserveAttributes||[],x=d.dangerouslySetChildren||["style"],f=h._;if(8===i.nodeType)return null;if(3===i.nodeType){var m=i.textContent;return f?f(m):m}for(var g={},b=i.attributes,v=0;v1){var r,d=(r=i[0].trim(),/^-ms-/.test(r)&&(r=r.substr(1)),r.startsWith("--")?r:t(r)),o=(n=i.slice(1).join(":").trim(),/^\d+$/.test(n)?Number(n):n.replace(/'/g,'"'));a[d]=o}}),a);else{var o=s[n],h=""===o||String(o).toLowerCase()===i.toLowerCase();e[d.name]=d.isBoolean?h:o}return e},{})),k=Array.from(i.childNodes).map(function(t,i){return n.indexOf(y)>-1&&3===t.nodeType&&(t.textContent=t.textContent.trim(),""===t.textContent)?null:e(t,a+"."+i,d)}).filter(Boolean);if(x.indexOf(y)>-1){var w=i.innerHTML;return w&&("style"!==y&&"script"!==y&&(w=w.replace(/"/g,""")),I.dangerouslySetInnerHTML={__html:w.trim()}),o(y,I,h)}return o(y,I,h,0===k.length?null:k)}(e,String(a),i)}).filter(Boolean);return 1===d.length?d[0]:d}},"object"==typeof t?e.exports=r(n("2363")):"function"==typeof define&&define.amd?define(["react"],r):(i=i||self).htmr=r(i.React)},24546:function(e){"use strict";e.exports=function(e,t,n,i,r,a,d,o){if(!e){var l;if(void 0===t)l=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,i,r,a,d,o],c=0;(l=Error(t.replace(/%s/g,function(){return s[c++]}))).name="Invariant Violation"}throw l.framesToPop=1,l}}},54761:function(e){"use strict";e.exports=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90}},29975:function(e,t,n){"use strict";var i=n("54761"),r=n("67525");e.exports=function(e){return i(e)||r(e)}},67525:function(e){"use strict";e.exports=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57}},72201:function(e){"use strict";e.exports=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57}},60366:function(e,t,n){"use strict";n.r(t);var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=window.Promise||function(e){function t(){}e(t,t)},u=function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=e.target,n=function(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,n=void 0;if(v.container){if(v.container instanceof Object)t=(e=i({},e,v.container)).width-e.left-e.right-2*v.margin,n=e.height-e.top-e.bottom-2*v.margin;else{var r=(a(v.container)?v.container:document.querySelector(v.container)).getBoundingClientRect();e=i({},e,{width:r.width,height:r.height,left:r.left,top:r.top})}}t=t||e.width-2*v.margin,n=n||e.height-2*v.margin;var o=y.zoomedHd||y.original,l=d(o)?t:o.naturalWidth||t,s=d(o)?n:o.naturalHeight||n,c=o.getBoundingClientRect(),u=c.top,h=c.left,p=c.width,x=c.height,f=Math.min(Math.min(Math.max(p,l),t)/p,Math.min(Math.max(x,s),n)/x),m=(-h+(t-p)/2+v.margin+e.left)/f,g=(-u+(n-x)/2+v.margin+e.top)/f,b="scale("+f+") translate3d("+m+"px, "+g+"px, 0)";y.zoomed.style.transform=b,y.zoomedHd&&(y.zoomedHd.style.transform=b)};return new r(function(e){if(t&&-1===f.indexOf(t)){e(k);return}if(y.zoomed){e(k);return}if(t)y.original=t;else if(f.length>0){var i=f;y.original=i[0]}else{e(k);return}if(y.original.dispatchEvent(c("medium-zoom:open",{detail:{zoom:k}})),b=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,g=!0,y.zoomed=s(y.original),document.body.appendChild(I),v.template){var r=a(v.template)?v.template:document.querySelector(v.template);y.template=document.createElement("div"),y.template.appendChild(r.content.cloneNode(!0)),document.body.appendChild(y.template)}if(y.original.parentElement&&"PICTURE"===y.original.parentElement.tagName&&y.original.currentSrc&&(y.zoomed.src=y.original.currentSrc),document.body.appendChild(y.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),y.original.classList.add("medium-zoom-image--hidden"),y.zoomed.classList.add("medium-zoom-image--opened"),y.zoomed.addEventListener("click",p),y.zoomed.addEventListener("transitionend",function t(){g=!1,y.zoomed.removeEventListener("transitionend",t),y.original.dispatchEvent(c("medium-zoom:opened",{detail:{zoom:k}})),e(k)}),y.original.getAttribute("data-zoom-src")){y.zoomedHd=y.zoomed.cloneNode(),y.zoomedHd.removeAttribute("srcset"),y.zoomedHd.removeAttribute("sizes"),y.zoomedHd.removeAttribute("loading"),y.zoomedHd.src=y.zoomed.getAttribute("data-zoom-src"),y.zoomedHd.onerror=function(){clearInterval(d),console.warn("Unable to reach the zoom image target "+y.zoomedHd.src),y.zoomedHd=null,n()};var d=setInterval(function(){y.zoomedHd.complete&&(clearInterval(d),y.zoomedHd.classList.add("medium-zoom-image--opened"),y.zoomedHd.addEventListener("click",p),document.body.appendChild(y.zoomedHd),n())},10)}else if(y.original.hasAttribute("srcset")){y.zoomedHd=y.zoomed.cloneNode(),y.zoomedHd.removeAttribute("sizes"),y.zoomedHd.removeAttribute("loading");var o=y.zoomedHd.addEventListener("load",function(){y.zoomedHd.removeEventListener("load",o),y.zoomedHd.classList.add("medium-zoom-image--opened"),y.zoomedHd.addEventListener("click",p),document.body.appendChild(y.zoomedHd),n()})}else n()})},p=function(){return new r(function(e){if(g||!y.original){e(k);return}g=!0,document.body.classList.remove("medium-zoom--opened"),y.zoomed.style.transform="",y.zoomedHd&&(y.zoomedHd.style.transform=""),y.template&&(y.template.style.transition="opacity 150ms",y.template.style.opacity=0),y.original.dispatchEvent(c("medium-zoom:close",{detail:{zoom:k}})),y.zoomed.addEventListener("transitionend",function t(){y.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(y.zoomed),y.zoomedHd&&document.body.removeChild(y.zoomedHd),document.body.removeChild(I),y.zoomed.classList.remove("medium-zoom-image--opened"),y.template&&document.body.removeChild(y.template),g=!1,y.zoomed.removeEventListener("transitionend",t),y.original.dispatchEvent(c("medium-zoom:closed",{detail:{zoom:k}})),y.original=null,y.zoomed=null,y.zoomedHd=null,y.template=null,e(k)})})},x=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target;return y.original?p():h({target:t})},f=[],m=[],g=!1,b=0,v=n,y={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(t)?v=t:(t||"string"==typeof t)&&u(t);var I=l((v=i({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},v)).background);document.addEventListener("click",function(e){var t=e.target;if(t===I){p();return}-1!==f.indexOf(t)&&x({target:t})}),document.addEventListener("keyup",function(e){var t=e.key||e.keyCode;("Escape"===t||"Esc"===t||27===t)&&p()}),document.addEventListener("scroll",function(){if(!g&&y.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(b-e)>v.scrollOffset&&setTimeout(p,150)}}),window.addEventListener("resize",p);var k={open:h,close:p,toggle:x,update:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.background&&(I.style.background=e.background),e.container&&e.container instanceof Object&&(e.container=i({},v.container,e.container)),e.template){var t=a(e.template)?e.template:document.querySelector(e.template);e.template=t}return v=i({},v,e),f.forEach(function(e){e.dispatchEvent(c("medium-zoom:update",{detail:{zoom:k}}))}),k},clone:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e(i({},v,t))},attach:u,detach:function(){for(var e=arguments.length,t=Array(e),n=0;n0?t.reduce(function(e,t){return[].concat(e,o(t))},[]):f;return i.forEach(function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(c("medium-zoom:detach",{detail:{zoom:k}}))}),f=f.filter(function(e){return -1===i.indexOf(e)}),k},on:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return f.forEach(function(i){i.addEventListener("medium-zoom:"+e,t,n)}),m.push({type:"medium-zoom:"+e,listener:t,options:n}),k},off:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return f.forEach(function(i){i.removeEventListener("medium-zoom:"+e,t,n)}),m=m.filter(function(n){return!(n.type==="medium-zoom:"+e&&n.listener.toString()===t.toString())}),k},getOptions:function(){return v},getImages:function(){return f},getZoomedImage:function(){return y.original}};return k}},47841:function(e,t){var n,i;n=this,i=function(){var e,t,n,i={};i.version="0.2.0";var r=i.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
    '};function a(e,t,n){return en?n:e}function d(e){return(-1+e)*100}i.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},i.status=null,i.set=function(e){var t=i.isStarted();e=a(e,r.minimum,1),i.status=1===e?null:e;var n=i.render(!t),d=n.querySelector(r.barSelector),s=r.speed,c=r.easing;return n.offsetWidth,o(function(t){""===r.positionUsing&&(r.positionUsing=i.getPositioningCSS()),l(d,function(e,t,n){var i;if("translate3d"===r.positionUsing)i={transform:"translate3d("+(-1+e)*100+"%,0,0)"};else if("translate"===r.positionUsing)i={transform:"translate("+(-1+e)*100+"%,0)"};else i={"margin-left":(-1+e)*100+"%"};return i.transition="all "+t+"ms "+n,i}(e,s,c)),1===e?(l(n,{transition:"none",opacity:1}),n.offsetWidth,setTimeout(function(){l(n,{transition:"all "+s+"ms linear",opacity:0}),setTimeout(function(){i.remove(),t()},s)},s)):setTimeout(t,s)}),this},i.isStarted=function(){return"number"==typeof i.status},i.start=function(){!i.status&&i.set(0);var e=function(){setTimeout(function(){i.status&&(i.trickle(),e())},r.trickleSpeed)};return r.trickle&&e(),this},i.done=function(e){return e||i.status?i.inc(.3+.5*Math.random()).set(1):this},i.inc=function(e){var t=i.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),i.set(t)):i.start()},i.trickle=function(){return i.inc(Math.random()*r.trickleRate)},e=0,t=0,i.promise=function(n){return n&&"resolved"!==n.state()?(0===t&&i.start(),e++,t++,n.always(function(){0==--t?(e=0,i.done()):i.set((e-t)/e)}),this):this},i.render=function(e){if(i.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var n,a=t.querySelector(r.barSelector),d=e?"-100":function(e){return(-1+e)*100}(i.status||0),o=document.querySelector(r.parent);return l(a,{transition:"all 0 linear",transform:"translate3d("+d+"%,0,0)"}),!r.showSpinner&&(n=t.querySelector(r.spinnerSelector))&&p(n),o!=document.body&&c(o,"nprogress-custom-parent"),o.appendChild(t),t},i.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},i.isRendered=function(){return!!document.getElementById("nprogress")},i.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective" in e?"translate3d":t+"Transform" in e?"translate":"margin"};var o=(n=[],function(e){n.push(e),1==n.length&&!function e(){var t=n.shift();t&&t(e)}()}),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(n,i,r){i=function(n){return t[n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})]||(t[n]=function(t){var n=document.body.style;if(t in n)return t;for(var i,r=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);r--;)if((i=e[r]+a)in n)return i;return t}(n))}(i),n.style[i]=r}return function(e,t){var i,r,a=arguments;if(2==a.length)for(i in t)void 0!==(r=t[i])&&t.hasOwnProperty(i)&&n(e,i,r);else n(e,a[1],a[2])}}();function s(e,t){return("string"==typeof e?e:h(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=h(e),i=n+t;!s(n,t)&&(e.className=i.substring(1))}function u(e,t){var n,i=h(e);s(e,t)&&(n=i.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function h(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return i},"function"==typeof define&&define.amd?define(i):"object"==typeof t?e.exports=i():n.NProgress=i()},55144:function(e){"use strict";var t;e.exports=function(e){var n,i="&"+e+";";return(t=t||document.createElement("i")).innerHTML=i,(59!==(n=t.textContent).charCodeAt(n.length-1)||"semi"===e)&&n!==i&&n}},82668:function(e,t,n){"use strict";var i=n("10924"),r=n("33222"),a=n("67525"),d=n("72201"),o=n("29975"),l=n("55144");e.exports=function(e,t){var n,a,d={};for(a in!t&&(t={}),h)n=t[a],d[a]=null==n?h[a]:n;return(d.position.indent||d.position.start)&&(d.indent=d.position.indent||[],d.position=d.position.start),function(e,t){var n,a,d,h,v,y,I,k,w,j,P,S,C,z,E,_,N,A,T,L=t.additional,O=t.nonTerminated,M=t.text,B=t.reference,R=t.warning,D=t.textContext,H=t.referenceContext,F=t.warningContext,$=t.position,W=t.indent||[],K=e.length,U=0,q=-1,V=$.column||1,G=$.line||1,Z="",Y=[];for("string"==typeof L&&(L=L.charCodeAt(0)),_=X(),k=R?function(e,t){var n=X();n.column+=t,n.offset+=t,R.call(F,b[e],n,e)}:u,U--,K++;++U=55296&&e<=57343||e>1114111}(y=parseInt(h,m[z]))?(k(7,A),y=c(65533)):y in r?(k(6,A),y=r[y]):(j="",function(e){return e>=1&&e<=8||11===e||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||(65535&e)==65535||(65535&e)==65534}(y)&&k(6,A),y>65535&&(y-=65536,j+=c(y>>>10|55296),y=56320|1023&y),y=j+c(y))):z!==p&&k(4,A);y?(Q(),_=X(),U=T-1,V+=T-C+1,Y.push(y),N=X(),N.offset++,B&&B.call(H,y,{start:_,end:N},e.slice(C-1,T)),_=N):(h=e.slice(C-1,T),Z+=h,V+=h.length,U=T-1)}else 10===v&&(G++,q++,V=0),v==v?(Z+=c(v),V++):Q();return Y.join("");function X(){return{line:G,column:V,offset:U+($.offset||0)}}function Q(){Z&&(Y.push(Z),M&&M.call(D,Z,{start:_,end:X()}),Z="")}}(e,d)};var s={}.hasOwnProperty,c=String.fromCharCode,u=Function.prototype,h={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},p="named",x="hexadecimal",f="decimal",m={};m[x]=16,m[f]=10;var g={};g[p]=o,g[f]=a,g[x]=d;var b={};b[1]="Named character references must be terminated by a semicolon",b[2]="Numeric character references must be terminated by a semicolon",b[3]="Named character references cannot be empty",b[4]="Numeric character references cannot be empty",b[5]="Named character references must be known",b[6]="Numeric character references cannot be disallowed",b[7]="Numeric character references cannot be outside the permissible Unicode range"},3921:function(e,t,n){var i=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,i={},r={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=c.reach));k+=I.value.length,I=I.next){var w,j=I.value;if(n.length>t.length)return;if(!(j instanceof a)){var P=1;if(g){if(!(w=d(y,k,t,m))||w.index>=t.length)break;var S=w.index,C=w.index+w[0].length,z=k;for(z+=I.value.length;S>=z;)z+=(I=I.next).value.length;if(z-=I.value.length,k=z,I.value instanceof a)continue;for(var E=I;E!==n.tail&&(zc.reach&&(c.reach=T);var L=I.prev;if(N&&(L=l(n,L,N),k+=N.length),function(e,t,n){for(var i=t.next,r=0;r1){var O={cause:u+","+p,reach:T};e(t,n,i,I.prev,k,O),c&&O.reach>c.reach&&(c.reach=O.reach)}}}}}}(e,s,t,s.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(s)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var i,a=0;i=n[a++];)i(t)}},Token:a};function a(e,t,n,i){this.type=e,this.content=t,this.alias=n,this.length=0|(i||"").length}function d(e,t,n,i){e.lastIndex=t;var r=e.exec(n);if(r&&i&&r[1]){var a=r[1].length;r.index+=a,r[0]=r[0].slice(a)}return r}e.Prism=r,a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var i="";return t.forEach(function(t){i+=e(t,n)}),i}var a={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},d=t.alias;d&&(Array.isArray(d)?Array.prototype.push.apply(a.classes,d):a.classes.push(d)),r.hooks.run("wrap",a);var o="";for(var l in a.attributes)o+=" "+l+'="'+(a.attributes[l]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+o+">"+a.content+""};function o(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function l(e,t,n){var i=t.next,r={value:n,prev:t,next:i};return t.next=r,i.prev=r,e.length++,r}if(!e.document)return e.addEventListener?(!r.disableWorkerMessageHandler&&e.addEventListener("message",function(t){var n=JSON.parse(t.data),i=n.language,a=n.code,d=n.immediateClose;e.postMessage(r.highlight(a,r.languages[i],i)),d&&e.close()},!1),r):r;var s=r.util.currentScript();function c(){!r.manual&&r.highlightAll()}if(s&&(r.filename=s.src,s.hasAttribute("data-manual")&&(r.manual=!0)),!r.manual){var u=document.readyState;"loading"===u||"interactive"===u&&s&&s.defer?document.addEventListener("DOMContentLoaded",c):window.requestAnimationFrame?window.requestAnimationFrame(c):window.setTimeout(c,16)}return r}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=i),void 0!==n.g&&(n.g.Prism=i)},52504:function(e,t,n){"use strict";var i=n("62265");function r(){}function a(){}a.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,a,d){if(d!==i){var o=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw o.name="Invariant Violation",o}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:r};return n.PropTypes=n,n}},23698:function(e,t,n){e.exports=n("52504")()},62265:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},62616:function(e,t,n){"use strict";var i=n("22275"),r=n("6492"),a=n("23811"),d="data";e.exports=function(e,t){var n=i(t),h=t,p=a;return n in e.normal?e.property[e.normal[n]]:(n.length>4&&n.slice(0,4)===d&&o.test(t)&&("-"===t.charAt(4)?h=function(e){var t=e.slice(5).replace(l,u);return d+t.charAt(0).toUpperCase()+t.slice(1)}(t):t=function(e){var t=e.slice(4);return l.test(t)?e:("-"!==(t=t.replace(s,c)).charAt(0)&&(t="-"+t),d+t)}(t),p=r),new p(h,t))};var o=/^data[-\w.:]+$/i,l=/-[a-z]/g,s=/[A-Z]/g;function c(e){return"-"+e.toLowerCase()}function u(e){return e.charAt(1).toUpperCase()}},46093:function(e,t,n){"use strict";var i=n("96399"),r=n("59283"),a=n("87430"),d=n("62376"),o=n("35531"),l=n("11006");e.exports=i([a,r,d,o,l])},35531:function(e,t,n){"use strict";var i=n("13077"),r=n("79469"),a=i.booleanish,d=i.number,o=i.spaceSeparated;e.exports=r({transform:function(e,t){return"role"===t?t:"aria-"+t.slice(4).toLowerCase()},properties:{ariaActiveDescendant:null,ariaAtomic:a,ariaAutoComplete:null,ariaBusy:a,ariaChecked:a,ariaColCount:d,ariaColIndex:d,ariaColSpan:d,ariaControls:o,ariaCurrent:null,ariaDescribedBy:o,ariaDetails:null,ariaDisabled:a,ariaDropEffect:o,ariaErrorMessage:null,ariaExpanded:a,ariaFlowTo:o,ariaGrabbed:a,ariaHasPopup:null,ariaHidden:a,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:o,ariaLevel:d,ariaLive:null,ariaModal:a,ariaMultiLine:a,ariaMultiSelectable:a,ariaOrientation:null,ariaOwns:o,ariaPlaceholder:null,ariaPosInSet:d,ariaPressed:a,ariaReadOnly:a,ariaRelevant:null,ariaRequired:a,ariaRoleDescription:o,ariaRowCount:d,ariaRowIndex:d,ariaRowSpan:d,ariaSelected:a,ariaSetSize:d,ariaSort:null,ariaValueMax:d,ariaValueMin:d,ariaValueNow:d,ariaValueText:null,role:null}})},11006:function(e,t,n){"use strict";var i=n("13077"),r=n("79469"),a=n("12561"),d=i.boolean,o=i.overloadedBoolean,l=i.booleanish,s=i.number,c=i.spaceSeparated,u=i.commaSeparated;e.exports=r({space:"html",attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},transform:a,mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:u,acceptCharset:c,accessKey:c,action:null,allow:null,allowFullScreen:d,allowPaymentRequest:d,allowUserMedia:d,alt:null,as:null,async:d,autoCapitalize:null,autoComplete:c,autoFocus:d,autoPlay:d,capture:d,charSet:null,checked:d,cite:null,className:c,cols:s,colSpan:null,content:null,contentEditable:l,controls:d,controlsList:c,coords:s|u,crossOrigin:null,data:null,dateTime:null,decoding:null,default:d,defer:d,dir:null,dirName:null,disabled:d,download:o,draggable:l,encType:null,enterKeyHint:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:d,formTarget:null,headers:c,height:s,hidden:d,high:s,href:null,hrefLang:null,htmlFor:c,httpEquiv:c,id:null,imageSizes:null,imageSrcSet:u,inputMode:null,integrity:null,is:null,isMap:d,itemId:null,itemProp:c,itemRef:c,itemScope:d,itemType:c,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:d,low:s,manifest:null,max:null,maxLength:s,media:null,method:null,min:null,minLength:s,multiple:d,muted:d,name:null,nonce:null,noModule:d,noValidate:d,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforePrint:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextMenu:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:d,optimum:s,pattern:null,ping:c,placeholder:null,playsInline:d,poster:null,preload:null,readOnly:d,referrerPolicy:null,rel:c,required:d,reversed:d,rows:s,rowSpan:s,sandbox:c,scope:null,scoped:d,seamless:d,selected:d,shape:null,size:s,sizes:null,slot:null,span:s,spellCheck:l,src:null,srcDoc:null,srcLang:null,srcSet:u,start:s,step:null,style:null,tabIndex:s,target:null,title:null,translate:null,type:null,typeMustMatch:d,useMap:null,value:l,width:s,wrap:null,align:null,aLink:null,archive:c,axis:null,background:null,bgColor:null,border:s,borderColor:null,bottomMargin:s,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:d,declare:d,event:null,face:null,frame:null,frameBorder:null,hSpace:s,leftMargin:s,link:null,longDesc:null,lowSrc:null,marginHeight:s,marginWidth:s,noResize:d,noHref:d,noShade:d,noWrap:d,object:null,profile:null,prompt:null,rev:null,rightMargin:s,rules:null,scheme:null,scrolling:l,standby:null,summary:null,text:null,topMargin:s,valueType:null,version:null,vAlign:null,vLink:null,vSpace:s,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:d,disableRemotePlayback:d,prefix:null,property:null,results:s,security:null,unselectable:null}})},12561:function(e,t,n){"use strict";var i=n("56073");e.exports=function(e,t){return i(e,t.toLowerCase())}},56073:function(e){"use strict";e.exports=function(e,t){return t in e?e[t]:t}},79469:function(e,t,n){"use strict";var i=n("22275"),r=n("23673"),a=n("6492");e.exports=function(e){var t,n,d=e.space,o=e.mustUseProperty||[],l=e.attributes||{},s=e.properties,c=e.transform,u={},h={};for(t in s)n=new a(t,c(l,t),s[t],d),-1!==o.indexOf(t)&&(n.mustUseProperty=!0),u[t]=n,h[i(t)]=t,h[i(n.attribute)]=t;return new r(u,h,d)}},6492:function(e,t,n){"use strict";var i=n("23811"),r=n("13077");e.exports=o,o.prototype=new i,o.prototype.defined=!0;var a=["boolean","booleanish","overloadedBoolean","number","commaSeparated","spaceSeparated","commaOrSpaceSeparated"],d=a.length;function o(e,t,n,o){var l,s=-1;for(function(e,t,n){n&&(e[t]=n)}(this,"space",o),i.call(this,e,t);++s=0||(r[n]=e[n]);return r}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},b={rel:["amphtml","canonical","alternate"]},v={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},I=Object.keys(g).map(function(e){return g[e]}),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},w=Object.keys(k).reduce(function(e,t){return e[k[t]]=t,e},{}),j=function(e,t){for(var n=e.length-1;n>=0;n-=1){var i=e[n];if(Object.prototype.hasOwnProperty.call(i,t))return i[t]}return null},P=function(e){var t=j(e,g.TITLE),n=j(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,function(){return t});var i=j(e,"defaultTitle");return t||i||void 0},S=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return p({},e,t)},{})},C=function(e,t,n){var i={};return n.filter(function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)}).map(function(t){return t[e]}).reverse().reduce(function(e,n){var r={};n.filter(function(e){for(var n,a=Object.keys(e),d=0;d/g,">").replace(/"/g,""").replace(/'/g,"'")},L=function(e){return Object.keys(e).reduce(function(t,n){var i=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+i:i},"")},O=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce(function(t,n){return t[k[n]||n]=e[n],t},t)},M=function(e,t){return t.map(function(t,n){var i,a=((i={key:n})["data-rh"]=!0,i);return Object.keys(t).forEach(function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]}),r().createElement(e,a)})},B=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){var e,n,i,a;return n=t.titleAttributes,(i={key:e=t.title})["data-rh"]=!0,a=O(n,i),[r().createElement(g.TITLE,a,e)]},toString:function(){var i,r,a,d,o,l;return i=e,r=t.title,a=t.titleAttributes,d=n,o=L(a),l=E(r),o?"<"+i+' data-rh="true" '+o+">"+T(l,d)+"":"<"+i+' data-rh="true">'+T(l,d)+""}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return O(t)},toString:function(){return L(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){var i,r,a;return i=e,r=t,a=n,r.reduce(function(e,t){var n=Object.keys(t).filter(function(e){return!("innerHTML"===e||"cssText"===e)}).reduce(function(e,n){var i=void 0===t[n]?n:n+'="'+T(t[n],a)+'"';return e?e+" "+i:i},""),r=t.innerHTML||t.cssText||"",d=-1===A.indexOf(i);return e+"<"+i+' data-rh="true" '+n+(d?"/>":">"+r+"")},"")}}}},R=function(e){var t=e.baseTag,n=e.bodyAttributes,i=e.encode,r=e.htmlAttributes,a=e.noscriptTags,d=e.styleTags,o=e.title,l=e.titleAttributes,s=e.linkTags,c=e.metaTags,u=e.scriptTags,h={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var p,x,f,m,I,k,w,j=(x=(p=e).linkTags,f=p.scriptTags,m=p.encode,I=_(p.metaTags,y),k=_(x,b),w=_(f,v),{priorityMethods:{toComponent:function(){return[].concat(M(g.META,I.priority),M(g.LINK,k.priority),M(g.SCRIPT,w.priority))},toString:function(){return B(g.META,I.priority,m)+" "+B(g.LINK,k.priority,m)+" "+B(g.SCRIPT,w.priority,m)}},metaTags:I.default,linkTags:k.default,scriptTags:w.default});h=j.priorityMethods,s=j.linkTags,c=j.metaTags,u=j.scriptTags}return{priority:h,base:B(g.BASE,t,i),bodyAttributes:B("bodyAttributes",n,i),htmlAttributes:B("htmlAttributes",r,i),link:B(g.LINK,s,i),meta:B(g.META,c,i),noscript:B(g.NOSCRIPT,a,i),script:B(g.SCRIPT,u,i),style:B(g.STYLE,d,i),title:B(g.TITLE,{title:void 0===o?"":o,titleAttributes:l},i)}},D=[],H=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?D:n.instances},add:function(e){(n.canUseDOM?D:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?D:n.instances).indexOf(e);(n.canUseDOM?D:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=R({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},F=r().createContext({}),$=d().shape({setHelmet:d().func,helmetInstances:d().shape({get:d().func,add:d().func,remove:d().func})}),W=function(e){function t(n){var i;return(i=e.call(this,n)||this).helmetData=new H(i.props.context,t.canUseDOM),i}return x(t,e),t.prototype.render=function(){return r().createElement(F.Provider,{value:this.helmetData.value},this.props.children)},t}(i.Component);W.canUseDOM="undefined"!=typeof document,W.propTypes={context:d().shape({helmet:d().shape()}),children:d().node.isRequired},W.defaultProps={context:{}},W.displayName="HelmetProvider";var K=function(e,t){var n,i=document.head||document.querySelector(g.HEAD),r=i.querySelectorAll(e+"[data-rh]"),a=[].slice.call(r),d=[];return t&&t.length&&t.forEach(function(t){var i=document.createElement(e);for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&("innerHTML"===r?i.innerHTML=t.innerHTML:"cssText"===r?i.styleSheet?i.styleSheet.cssText=t.cssText:i.appendChild(document.createTextNode(t.cssText)):i.setAttribute(r,void 0===t[r]?"":t[r]));i.setAttribute("data-rh","true"),a.some(function(e,t){return n=t,i.isEqualNode(e)})?a.splice(n,1):d.push(i)}),a.forEach(function(e){return e.parentNode.removeChild(e)}),d.forEach(function(e){return i.appendChild(e)}),{oldTags:a,newTags:d}},U=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var i=n.getAttribute("data-rh"),r=i?i.split(","):[],a=[].concat(r),d=Object.keys(t),o=0;o=0;u-=1)n.removeAttribute(a[u]);r.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==d.join(",")&&n.setAttribute("data-rh",d.join(","))}},q=function(e,t){var n,i,r=e.baseTag,a=e.htmlAttributes,d=e.linkTags,o=e.metaTags,l=e.noscriptTags,s=e.onChangeClientState,c=e.scriptTags,u=e.styleTags,h=e.title,p=e.titleAttributes;U(g.BODY,e.bodyAttributes),U(g.HTML,a),n=h,i=p,void 0!==n&&document.title!==n&&(document.title=E(n)),U(g.TITLE,i);var x={baseTag:K(g.BASE,r),linkTags:K(g.LINK,d),metaTags:K(g.META,o),noscriptTags:K(g.NOSCRIPT,l),scriptTags:K(g.SCRIPT,c),styleTags:K(g.STYLE,u)},f={},m={};Object.keys(x).forEach(function(e){var t=x[e],n=t.newTags,i=t.oldTags;n.length&&(f[e]=n),i.length&&(m[e]=x[e].oldTags)}),t&&t(),s(e,f,m)},V=null,G=function(e){function t(){for(var t,n=arguments.length,i=Array(n),r=0;r elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,i=e.arrayTypeChildren;return p({},i,((t={})[n.type]=[].concat(i[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,i=e.child,r=e.newProps,a=e.newChildProps,d=e.nestedChildren;switch(i.type){case g.TITLE:return p({},r,((t={})[i.type]=d,t.titleAttributes=p({},a),t));case g.BODY:return p({},r,{bodyAttributes:p({},a)});case g.HTML:return p({},r,{htmlAttributes:p({},a)});default:return p({},r,((n={})[i.type]=p({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach(function(t){var i;n=p({},n,((i={})[t]=e[t],i))}),n},n.warnOnInvalidChildren=function(e,t){return c()(I.some(function(t){return e.type===t}),"function"==typeof e.type?"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+I.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),c()(!t||"string"==typeof t||Array.isArray(t)&&!t.some(function(e){return"string"!=typeof e}),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``} ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,i={};return r().Children.forEach(e,function(e){if(e&&e.props){var r=e.props,a=r.children,d=m(r,Z),o=Object.keys(d).reduce(function(e,t){return e[w[t]||t]=d[t],e},{}),l=e.type;switch("symbol"==typeof l?l=l.toString():n.warnOnInvalidChildren(e,a),l){case g.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:i=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:i,newChildProps:o,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:o,nestedChildren:a})}}}),this.mapArrayTypeChildrenToProps(i,t)},n.render=function(){var e=this.props,t=e.children,n=m(e,Y),i=p({},n),a=n.helmetData;return t&&(i=this.mapChildrenToProps(t,i)),!a||a instanceof H||(a=new H(a.context,a.instances)),a?r().createElement(G,p({},i,{context:a.value,helmetData:void 0})):r().createElement(F.Consumer,null,function(e){return r().createElement(G,p({},i,{context:e}))})},t}(i.Component);X.propTypes={base:d().object,bodyAttributes:d().object,children:d().oneOfType([d().arrayOf(d().node),d().node]),defaultTitle:d().string,defer:d().bool,encodeSpecialCharacters:d().bool,htmlAttributes:d().object,link:d().arrayOf(d().object),meta:d().arrayOf(d().object),noscript:d().arrayOf(d().object),onChangeClientState:d().func,script:d().arrayOf(d().object),style:d().arrayOf(d().object),title:d().string,titleAttributes:d().object,titleTemplate:d().string,prioritizeSeoTags:d().bool,helmetData:d().object},X.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},X.displayName="Helmet"},22897:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.lazyWithPreload=void 0;var i=n("2363");function r(e){var t,n,r=(0,i.lazy)(e),a=(0,i.forwardRef)(function(e,n){var a=(0,i.useRef)(null!=t?t:r);return(0,i.createElement)(a.current,Object.assign(n?{ref:n}:{},e))});return a.preload=function(){return!n&&(n=e().then(function(e){return t=e.default})),n},a}t.lazyWithPreload=r,t.default=r},68965:function(e,t,n){"use strict";function i(e,t){return -1!==e.listLanguages().indexOf(t)}n.r(t),n.d(t,{default:function(){return i}})},51414:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return u}});var i=n("83197"),r=n("99553"),a=n("2363"),d=n.n(a);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function l(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return(function(e){if(0===e.length||1===e.length)return e;var t,n,i=e.join(".");if(!s[i]){;s[i]=0===(n=(t=e).length)||1===n?t:2===n?[t[0],t[1],"".concat(t[0],".").concat(t[1]),"".concat(t[1],".").concat(t[0])]:3===n?[t[0],t[1],t[2],"".concat(t[0],".").concat(t[1]),"".concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[0]),"".concat(t[1],".").concat(t[2]),"".concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[1],".").concat(t[0])]:n>=4?[t[0],t[1],t[2],t[3],"".concat(t[0],".").concat(t[1]),"".concat(t[0],".").concat(t[2]),"".concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[0]),"".concat(t[1],".").concat(t[2]),"".concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[1]),"".concat(t[2],".").concat(t[3]),"".concat(t[3],".").concat(t[0]),"".concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[0]),"".concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[1],".").concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[2],".").concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[3],".").concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[2],".").concat(t[1],".").concat(t[0])]:void 0}return s[i]})(e.filter(function(e){return"token"!==e})).reduce(function(e,t){return l(l({},e),n[t])},t)}(c.className,Object.assign({},c.style,void 0===r?{}:r),n)})}else b=l(l({},c),{},{className:c.className.join(" ")});var w=v(t.children);return d().createElement(p,(0,i.default)({key:o},b),w)}}},40458:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return y}});var i=n("86608"),r=n("31476"),a=n("99553"),d=n("2363"),o=n.n(d),l=n("51414"),s=n("68965"),c=["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","showInlineLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","wrapLongLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"];function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function h(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=0;a2&&void 0!==arguments[2]?arguments[2]:[];return t||d.length>0?function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return g({children:e,lineNumber:t,lineNumberStyle:l,largestLineNumber:o,showInlineLineNumbers:a,lineProps:n,className:r,showLineNumbers:i,wrapLongLines:s})}(e,r,d):function(e,t){if(i&&t&&a){var n=m(l,t,o);e.unshift(f(t,n))}return e}(e,r)}for(;b>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:i},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:i},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:i.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:i.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var r=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=i.variable[1].inside,d=0;d]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}}e.exports=t,t.displayName="clike",t.aliases=[]},17520:function(e){"use strict";function t(e){var t,n,i;n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/,(t=e).languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},t.languages.css.atrule.inside.rest=t.languages.css,(i=t.languages.markup)&&(i.tag.addInlined("style","css"),i.tag.addAttribute("style","css"))}e.exports=t,t.displayName="css",t.aliases=[]},63610:function(e){"use strict";function t(e){var t,n;(t=e).languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]},Object.keys(n={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"}).forEach(function(e){var i=n[e],r=[];!/^\w+$/.test(e)&&r.push(/\w+/.exec(e)[0]),"diff"===e&&r.push("bold"),t.languages.diff[e]={pattern:RegExp("^(?:["+i+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:r,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(e)[0]}}}}),Object.defineProperty(t.languages.diff,"PREFIXES",{value:n})}e.exports=t,t.displayName="diff",t.aliases=[]},59551:function(e){"use strict";function t(e){e.languages.javascript=e.languages.extend("clike",{"class-name":[e.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|")+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),e.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,e.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:e.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:e.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:e.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:e.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:e.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),e.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:e.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),e.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),e.languages.markup&&(e.languages.markup.tag.addInlined("script","javascript"),e.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),e.languages.js=e.languages.javascript}e.exports=t,t.displayName="javascript",t.aliases=["js"]},7091:function(e){"use strict";function t(e){e.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},e.languages.webmanifest=e.languages.json}e.exports=t,t.displayName="json",t.aliases=["webmanifest"]},17942:function(e){"use strict";function t(e){!function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,i=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,r=/(?:\{*\.{3}(?:[^{}]|)*\})/.source;function a(e,t){return RegExp(e=e.replace(//g,function(){return n}).replace(//g,function(){return i}).replace(//g,function(){return r}),t)}r=a(r).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var d=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(d).join(""):""},o=function(t){for(var n=[],i=0;i0&&n[n.length-1].tagName===d(r.content[0].content[1])&&n.pop():"/>"===r.content[r.content.length-1].content||n.push({tagName:d(r.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===r.type&&"{"===r.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===r.type&&"}"===r.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof r)&&n.length>0&&0===n[n.length-1].openedBraces){var l=d(r);i0&&("string"==typeof t[i-1]||"plain-text"===t[i-1].type)&&(l=d(t[i-1])+l,t.splice(i-1,1),i--),t[i]=new e.Token("plain-text",l,null,l)}r.content&&"string"!=typeof r.content&&o(r.content)}};e.hooks.add("after-tokenize",function(e){("jsx"===e.language||"tsx"===e.language)&&o(e.tokens)})}(e)}e.exports=t,t.displayName="jsx",t.aliases=[]},89693:function(e){"use strict";function t(e){e.languages.less=e.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),e.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}})}e.exports=t,t.displayName="less",t.aliases=[]},19463:function(e){"use strict";function t(e){!function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,function(){return t}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var i=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,r=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return i}),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+r+a+"(?:"+r+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+r+a+")(?:"+r+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(i),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+r+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+r+"$"),inside:{"table-header":{pattern:RegExp(i),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(t){["url","bold","italic","strike","code-snippet"].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add("after-tokenize",function(e){("markdown"===e.language||"md"===e.language)&&function e(t){if(t&&"string"!=typeof t)for(var n=0,i=t.length;n",quot:'"'},l=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(e)}e.exports=t,t.displayName="markdown",t.aliases=["md"]},47264:function(e){"use strict";function t(e){e.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},e.languages.markup.tag.inside["attr-value"].inside.entity=e.languages.markup.entity,e.languages.markup.doctype.inside["internal-subset"].inside=e.languages.markup,e.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.value.replace(/&/,"&"))}),Object.defineProperty(e.languages.markup.tag,"addInlined",{value:function(t,n){var i={};i["language-"+n]={pattern:/(^$)/i,lookbehind:!0,inside:e.languages[n]},i.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:i}};r["language-"+n]={pattern:/[\s\S]+/,inside:e.languages[n]};var a={};a[t]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return t}),"i"),lookbehind:!0,greedy:!0,inside:r},e.languages.insertBefore("markup","cdata",a)}}),Object.defineProperty(e.languages.markup.tag,"addAttribute",{value:function(t,n){e.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+t+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:e.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),e.languages.html=e.languages.markup,e.languages.mathml=e.languages.markup,e.languages.svg=e.languages.markup,e.languages.xml=e.languages.extend("markup",{}),e.languages.ssml=e.languages.xml,e.languages.atom=e.languages.xml,e.languages.rss=e.languages.xml}e.exports=t,t.displayName="markup",t.aliases=["html","mathml","svg","xml","ssml","atom","rss"]},31337:function(e){"use strict";function t(e){e.languages.scss=e.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),e.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),e.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),e.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),e.languages.scss.atrule.inside.rest=e.languages.scss}e.exports=t,t.displayName="scss",t.aliases=[]},89455:function(e,t,n){"use strict";var i=n("17942"),r=n("63847");function a(e){var t,n,a;e.register(i),e.register(r),n=(t=e).util.clone(t.languages.typescript),t.languages.tsx=t.languages.extend("jsx",n),delete t.languages.tsx.parameter,delete t.languages.tsx["literal-property"],(a=t.languages.tsx.tag).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+a.pattern.source+")",a.pattern.flags),a.lookbehind=!0}e.exports=a,a.displayName="tsx",a.aliases=[]},63847:function(e){"use strict";function t(e){var t,n;(t=e).languages.typescript=t.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),t.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete t.languages.typescript.parameter,delete t.languages.typescript["literal-property"],n=t.languages.extend("typescript",{}),delete n["class-name"],t.languages.typescript["class-name"].inside=n,t.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:n}}}}),t.languages.ts=t.languages.typescript}e.exports=t,t.displayName="typescript",t.aliases=["ts"]},14646:function(e){"use strict";function t(e){!function(e){function t(t,n){e.languages[t]&&e.languages.insertBefore(t,"comment",{"doc-comment":n})}var n=e.languages.markup.tag,i={pattern:/\/\/\/.*/,greedy:!0,alias:"comment",inside:{tag:n}};t("csharp",i),t("fsharp",i),t("vbnet",{pattern:/'''.*/,greedy:!0,alias:"comment",inside:{tag:n}})}(e)}e.exports=t,t.displayName="xmlDoc",t.aliases=[]},70660:function(e){"use strict";function t(e){!function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,i="(?:"+n.source+"(?:[ ]+"+t.source+")?|"+t.source+"(?:[ ]+"+n.source+")?)",r=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function d(e,t){return t=(t||"").replace(/m/g,"")+"m",RegExp(/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,function(){return i}).replace(/<>/g,function(){return e}),t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,function(){return i})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,function(){return i}).replace(/<>/g,function(){return"(?:"+r+"|"+a+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:d(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:d(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:d(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:d(a),lookbehind:!0,greedy:!0},number:{pattern:d(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(e)}e.exports=t,t.displayName="yaml",t.aliases=["yml"]},65241:function(e){e.exports=function(e,t,n,i){var r=n?n.call(i,e,t):void 0;if(void 0!==r)return!!r;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),d=Object.keys(t);if(a.length!==d.length)return!1;for(var o=Object.prototype.hasOwnProperty.bind(t),l=0;l{let n=e=>e.replace(/\/$/,"").toLowerCase();return(0,d.isEqualPath)(n(t.routePath),n(e))}),s=encodeURIComponent(o),u=(null===(r=n.default.__RSPRESS_PAGE_META)||void 0===r?void 0:r[s])||{},{toc:h=[],title:p="",frontmatter:x={},...f}=c.MDX_REGEXP.test(t.filePath)?u:n;return{siteData:a.default,page:{...f,pagePath:o,...l,pageType:(null==x?void 0:x.pageType)||"doc",title:p,frontmatter:x,toc:h}}}}function f(e){let{helmetContext:t}=e,{setData:n,data:i}=(0,l.useContext)(d.DataContext),a=i.page.frontmatter||{},{pathname:c,search:p}=(0,d.useLocation)(),f=new URLSearchParams(p),m="globalUIComponents",g=!1===a[m]||"0"===f.get(m);return(0,l.useLayoutEffect)(()=>{(async function e(){try{let e=await x((0,d.normalizeRoutePath)(c));n(e)}catch(e){console.log(e)}})()},[c,n]),(0,r.jsxs)(o.HelmetProvider,{context:t,children:[(0,r.jsx)(h.Layout,{}),!g&&u.default.map((e,t)=>{if(!Array.isArray(e))return s().createElement(e,{key:t});{let[n,i]=e;return s().createElement(n,{key:t,...i})}})]})}},51810:function(e,t,n){"use strict";n.r(t),n.d(t,{renderInBrowser:function(){return u}});var i=n("39980"),r=n("2363"),a=n("87429"),d=n("13328"),o=n("69423"),l=n("3439");let s=d.default.ssg,{default:c}=n("75962");async function u(){let e=document.getElementById("root"),t=async()=>{let e=await (0,l.initPageData)((0,o.normalizeRoutePath)(window.location.pathname));return function(){let[t,n]=(0,r.useState)(e),[a,d]=(0,r.useState)("light");return(0,i.jsx)(o.ThemeContext.Provider,{value:{theme:a,setTheme:d},children:(0,i.jsx)(o.DataContext.Provider,{value:{data:t,setData:n},children:(0,i.jsx)(o.BrowserRouter,{children:(0,i.jsx)(l.App,{})})})})}},d=await t();{let{createRoot:t,hydrateRoot:r}=n("30417");(0,a.isProduction)()&&s?r(e,(0,i.jsx)(d,{})):t(e).render((0,i.jsx)(d,{}))}}u().then(()=>{c.setup()})},14841:function(e,t,n){"use strict";n.r(t);var i=n("69423");n.es(i,t)},39474:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return i.default}});var i=n("51501");n.es(i,t)},24373:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return d}});var i=n("69423"),r=n("60366"),a=n("2363");function d(e){let{pathname:t}=(0,i.useLocation)(),{selector:n=".rspress-doc img",options:d={}}=e;return(0,a.useEffect)(()=>{setTimeout(()=>{let e=document.querySelectorAll(n);(0,r.default)(e,d)},100)},[t]),null}n("80648")},54218:function(e,t,n){"use strict";n.r(t),n.d(t,{Link:function(){return u}});var i=n("39980");n("2363");var r=n("69423"),a=n("47841"),d=n.n(a),o=n("99593"),l=n("87429"),s=n("99816"),c=n("29310");function u(e){let{href:t="/",children:n,className:a="",onNavigate:u,...h}=e,p=(0,l.isExternalUrl)(t),x=p?"_blank":"",f=p?"noopener noreferrer":void 0,m=p?t:(0,r.withBase)((0,r.normalizeHrefInRuntime)(t)),g=(0,r.useNavigate)(),{pathname:b}=(0,r.useLocation)(),v=(0,r.isEqualPath)(b,m),y=async e=>{if(0!==e.button||e.currentTarget.target&&"_self"!==e.currentTarget.target||e.metaKey||e.shiftKey||e.altKey||e.ctrlKey)return;e.preventDefault();let t=m.split("#")[1];if(!p&&v&&t){let e=document.getElementById(t);e&&(0,c.scrollToTarget)(e,!0);return}if(!v){let e=(0,r.matchRoutes)(o.routes,(0,r.normalizeRoutePath)(m));if(null==e?void 0:e.length){let t=setTimeout(()=>{d().start()},200);await e[0].route.preload(),clearTimeout(t),d().done()}null==u||u(),g(m,{replace:!1})}};return p?(0,i.jsx)("a",{...h,href:m,target:x,rel:f,className:`${s.link} ${a}`,children:n}):(0,i.jsx)("a",{...h,className:`${s.link} ${a} cursor-pointer`,rel:f,target:x,onClick:y,href:m,children:n})}d().configure({showSpinner:!1})},3245:function(e,t,n){"use strict";n.r(t),n.d(t,{SvgWrapper:function(){return r}});var i=n("39980");function r(e){let{icon:t,...n}=e;return"string"==typeof t?(0,i.jsx)("img",{src:t,alt:"",...n}):(0,i.jsx)(t,{...n})}},29310:function(e,t,n){"use strict";n.r(t),n.d(t,{scrollToTarget:function(){return r.scrollToTarget},useLocaleSiteData:function(){return i.useLocaleSiteData},usePathUtils:function(){return a.usePathUtils}});var i=n("34310"),r=n("75686"),a=n("14135"),d=n("41288");n.es(d,t)},75686:function(e,t,n){"use strict";n.r(t),n.d(t,{DEFAULT_NAV_HEIGHT:function(){return i},scrollToTarget:function(){return r}}),n("59186"),n("78394"),n("64667"),n("6868"),n("4331");let i=72;function r(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i,r=parseInt(window.getComputedStyle(e).paddingTop,10),a=window.scrollY+e.getBoundingClientRect().top-n-r;window.scrollTo({left:0,top:Math.round(a),...t?{behavior:"smooth"}:{}})}},62154:function(e,t,n){"use strict";n.r(t),n.d(t,{useEnableNav:function(){return a}});var i=n("2363"),r=n("69423");function a(){let{siteData:{themeConfig:e},page:{frontmatter:t={}}}=(0,r.usePageData)(),n=((null==t?void 0:t.navbar)??!0)&&(null==e?void 0:e.hideNavbar)!=="always",[a,d]=(0,i.useState)(n);return[a,d]}},34310:function(e,t,n){"use strict";n.r(t),n.d(t,{useLocaleSiteData:function(){return r}}),n("81660"),n("71874"),n("64667");var i=n("69423");function r(){var e;let t=(0,i.usePageData)(),{page:{lang:n}}=t,r=(null==t?void 0:null===(e=t.siteData)||void 0===e?void 0:e.themeConfig)??{},a=t.siteData.lang??"",d=null==r?void 0:r.locales;return d&&0!==d.length?{...d.find(e=>e.lang===n),langRoutePrefix:n===a?"/":n}:{nav:r.nav,sidebar:r.sidebar,prevPageText:r.prevPageText,nextPageText:r.nextPageText,sourceCodeText:r.sourceCodeText,searchPlaceholderText:r.searchPlaceholderText}}},50287:function(e,t,n){"use strict";n.r(t),n.d(t,{useNavData:function(){return a}}),n("2363");var i=n("69423"),r=n("34310");function a(){let{nav:e}=(0,r.useLocaleSiteData)(),t=(0,i.useVersion)();return Array.isArray(e)?e:[...e[t.length>0?t:"default"]]}},14135:function(e,t,n){"use strict";n.r(t),n.d(t,{usePathUtils:function(){return a}}),n("59186"),n("78394"),n("64667");var i=n("87429"),r=n("69423");function a(){let e=(0,r.useLang)(),t=(0,r.useVersion)(),n=(0,r.usePageData)(),a=n.siteData.lang,d=n.siteData.multiVersion.default;return{normalizeLinkHref:n=>{let o=n;if(!a&&!d||(0,i.isExternalUrl)(o)||o.startsWith("#"))return o;{let n=(o=(0,r.removeBase)(o)).split("/").filter(Boolean),i="",l="",s="";return d&&(t!==d?(i=t,n[0]===t&&n.shift()):n[0]===d&&n.shift()),a&&(e!==a?(l=e,n[0]===e&&n.shift()):n[0]===a&&n.shift()),s=n.join("/"),(0,r.normalizeHrefInRuntime)((0,r.withBase)([i,l,s].filter(Boolean).join("/")))}}}}},54701:function(e,t,n){"use strict";n.r(t),n.d(t,{useRedirect4FirstVisit:function(){return a}}),n("6868"),n("4331"),n("20964");var i=n("69423"),r=n("2363");function a(){let{siteData:e,page:t}=(0,i.usePageData)(),n=e.lang||"",a=Object.values(e.themeConfig.locales||{}).map(e=>e.lang)||[],d=t.lang;(0,r.useEffect)(()=>{if(!n)return;let{pathname:e}=window.location,t=(0,i.removeBase)(e),r="rspress-visited";if(localStorage.getItem(r))return;localStorage.setItem(r,"1");let o=window.navigator.language.split("-")[0];a.includes(o)&&o!==d&&(o===n?window.location.replace(e.replace(`/${d}`,"")):d===n?window.location.replace((0,i.withBase)(`/${o}${t}`)):window.location.replace(e.replace(`/${d}`,`/${o}`)))},[])}},51460:function(e,t,n){"use strict";n.r(t),n.d(t,{useUISwitch:function(){return s}}),n("72104"),n("1676"),n("50882");var i,r,a=n("2363"),d=n("69423"),o=n("62154"),l=n("34310");function s(){let{page:e,siteData:t}=(0,d.usePageData)(),{frontmatter:n}=e,{themeConfig:i}=t,r=(0,l.useLocaleSiteData)(),s=(0,d.useLocation)(),c=(null==n?void 0:n.overview)??!1,u=()=>{let e="undefined"==typeof window||window.top===window.self;return((null==n?void 0:n.outline)??(null==i?void 0:i.outline)??e)&&!c},[h,p]=(0,o.useEnableNav)(),[x,f]=(0,a.useState)(u()),[m,g]=(0,a.useState)((null==n?void 0:n.footer)??!0),b=r.sidebar||{},v=(null==n?void 0:n.sidebar)!==!1&&Object.keys(b).length>0;return(0,a.useEffect)(()=>{f(u())},[e,t]),(0,a.useEffect)(()=>{let e=new URLSearchParams(s.search),t=document.documentElement.style,n=t.getPropertyValue("--rp-sidebar-width"),i=t.getPropertyValue("--rp-aside-width"),r=e.get("navbar"),a=e.get("sidebar"),d=e.get("outline"),o=e.get("footer");return"0"===r&&p(!1),"0"===a&&document.documentElement.style.setProperty("--rp-sidebar-width","0px"),"0"===d&&document.documentElement.style.setProperty("--rp-aside-width","0px"),"0"===o&&g(!1),()=>{document.documentElement.style.setProperty("--rp-sidebar-width",n),document.documentElement.style.setProperty("--rp-aside-width",i),p(h),g(m)}},[s.search]),{showAside:x,showNavbar:h,showSidebar:v,showDocFooter:m}}(r=i||(i={})).Show="1",r.Hide="0"},41288:function(e,t,n){"use strict";n.r(t),n.d(t,{getLogoUrl:function(){return o},renderHtmlOrText:function(){return l},renderInlineMarkdown:function(){return s}}),n("2363");var i=n("93371"),r=n.n(i),a=n("49555"),d=n("71082");function o(e,t){return"string"==typeof e?e:"dark"===t?e.dark:e.light}function l(e){return e?(0,d.isNumber)(e)?e:(0,a.default)(e)?r()(e):e:""}function s(e){return l(e.replace(/\*\*(.*?)\*\*/g,"$1").replace(/`(.*?)`/g,"$1"))}},28526:function(e,t,n){"use strict";n.r(t);var i=n("14841");n.es(i,t)},36852:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return i.default}});var i=n("39474");n.es(i,t)},49915:function(e,t,n){"use strict";n.r(t);var i=n("24373");t.default=[[i.default,{}]]},16288:function(e,t,n){"use strict";n.r(t);var i=n("68450"),r=n("78036"),a=n("35009"),d=n("69611"),o=n("41143"),l=n("51088"),s=n("89648"),c=n("94744"),u=n("12417"),h=n("61691"),p=n("29027"),x=n("5646");t.default={js:i.default,ts:r.default,jsx:a.default,tsx:a.default,json:d.default,css:o.default,scss:l.default,less:s.default,xml:c.default,diff:u.default,yaml:h.default,md:p.default,mdx:a.default,bash:x.default}},99593:function(e,t,n){"use strict";n.r(t),n.d(t,{routes:function(){return eQ}});var i=n("2363"),r=n.n(i),a=n("22897");let d=(0,a.lazyWithPreload)(()=>n.e("9723").then(n.bind(n,"19253"))),o=(0,a.lazyWithPreload)(()=>n.e("1813").then(n.bind(n,"71916"))),l=(0,a.lazyWithPreload)(()=>n.e("5675").then(n.bind(n,"7304"))),s=(0,a.lazyWithPreload)(()=>n.e("6790").then(n.bind(n,"24044"))),c=(0,a.lazyWithPreload)(()=>n.e("936").then(n.bind(n,"24528"))),u=(0,a.lazyWithPreload)(()=>n.e("2881").then(n.bind(n,"98806"))),h=(0,a.lazyWithPreload)(()=>n.e("8267").then(n.bind(n,"3480"))),p=(0,a.lazyWithPreload)(()=>n.e("9041").then(n.bind(n,"95191"))),x=(0,a.lazyWithPreload)(()=>n.e("4549").then(n.bind(n,"13908"))),f=(0,a.lazyWithPreload)(()=>n.e("8725").then(n.bind(n,"18751"))),m=(0,a.lazyWithPreload)(()=>n.e("3082").then(n.bind(n,"74219"))),g=(0,a.lazyWithPreload)(()=>n.e("2967").then(n.bind(n,"21795"))),b=(0,a.lazyWithPreload)(()=>n.e("762").then(n.bind(n,"58058"))),v=(0,a.lazyWithPreload)(()=>n.e("6383").then(n.bind(n,"63014"))),y=(0,a.lazyWithPreload)(()=>n.e("2643").then(n.bind(n,"18505"))),I=(0,a.lazyWithPreload)(()=>n.e("9330").then(n.bind(n,"91366"))),k=(0,a.lazyWithPreload)(()=>n.e("2907").then(n.bind(n,"69421"))),w=(0,a.lazyWithPreload)(()=>n.e("851").then(n.bind(n,"21593"))),j=(0,a.lazyWithPreload)(()=>n.e("9512").then(n.bind(n,"75797"))),P=(0,a.lazyWithPreload)(()=>n.e("9387").then(n.bind(n,"79769"))),S=(0,a.lazyWithPreload)(()=>n.e("3633").then(n.bind(n,"39116"))),C=(0,a.lazyWithPreload)(()=>n.e("214").then(n.bind(n,"72877"))),z=(0,a.lazyWithPreload)(()=>n.e("1028").then(n.bind(n,"13814"))),E=(0,a.lazyWithPreload)(()=>n.e("4601").then(n.bind(n,"97885"))),_=(0,a.lazyWithPreload)(()=>n.e("3600").then(n.bind(n,"20634"))),N=(0,a.lazyWithPreload)(()=>n.e("1876").then(n.bind(n,"45734"))),A=(0,a.lazyWithPreload)(()=>n.e("1796").then(n.bind(n,"66221"))),T=(0,a.lazyWithPreload)(()=>n.e("6216").then(n.bind(n,"20614"))),L=(0,a.lazyWithPreload)(()=>n.e("1787").then(n.bind(n,"76711"))),O=(0,a.lazyWithPreload)(()=>n.e("6161").then(n.bind(n,"86018"))),M=(0,a.lazyWithPreload)(()=>n.e("8521").then(n.bind(n,"57566"))),B=(0,a.lazyWithPreload)(()=>n.e("1052").then(n.bind(n,"42153"))),R=(0,a.lazyWithPreload)(()=>n.e("8822").then(n.bind(n,"54982"))),D=(0,a.lazyWithPreload)(()=>n.e("3264").then(n.bind(n,"18362"))),H=(0,a.lazyWithPreload)(()=>n.e("4209").then(n.bind(n,"69540"))),F=(0,a.lazyWithPreload)(()=>n.e("6335").then(n.bind(n,"85162"))),$=(0,a.lazyWithPreload)(()=>n.e("6283").then(n.bind(n,"86621"))),W=(0,a.lazyWithPreload)(()=>Promise.all([n.e("6212"),n.e("6020")]).then(n.bind(n,"98166"))),K=(0,a.lazyWithPreload)(()=>n.e("4080").then(n.bind(n,"22683"))),U=(0,a.lazyWithPreload)(()=>Promise.all([n.e("6212"),n.e("3569")]).then(n.bind(n,"79904"))),q=(0,a.lazyWithPreload)(()=>n.e("7652").then(n.bind(n,"11549"))),V=(0,a.lazyWithPreload)(()=>n.e("1729").then(n.bind(n,"12341"))),G=(0,a.lazyWithPreload)(()=>n.e("3617").then(n.bind(n,"35145"))),Z=(0,a.lazyWithPreload)(()=>n.e("4291").then(n.bind(n,"78696"))),Y=(0,a.lazyWithPreload)(()=>n.e("195").then(n.bind(n,"87755"))),X=(0,a.lazyWithPreload)(()=>n.e("7149").then(n.bind(n,"78330"))),Q=(0,a.lazyWithPreload)(()=>n.e("7717").then(n.bind(n,"89052"))),J=(0,a.lazyWithPreload)(()=>n.e("3669").then(n.bind(n,"14110"))),ee=(0,a.lazyWithPreload)(()=>n.e("742").then(n.bind(n,"37518"))),et=(0,a.lazyWithPreload)(()=>n.e("958").then(n.bind(n,"68401"))),en=(0,a.lazyWithPreload)(()=>n.e("9942").then(n.bind(n,"69050"))),ei=(0,a.lazyWithPreload)(()=>n.e("1971").then(n.bind(n,"71749"))),er=(0,a.lazyWithPreload)(()=>n.e("8916").then(n.bind(n,"34170"))),ea=(0,a.lazyWithPreload)(()=>n.e("8507").then(n.bind(n,"50060"))),ed=(0,a.lazyWithPreload)(()=>n.e("9174").then(n.bind(n,"37284"))),eo=(0,a.lazyWithPreload)(()=>n.e("6815").then(n.bind(n,"22361"))),el=(0,a.lazyWithPreload)(()=>n.e("3664").then(n.bind(n,"87030"))),es=(0,a.lazyWithPreload)(()=>n.e("6425").then(n.bind(n,"48471"))),ec=(0,a.lazyWithPreload)(()=>n.e("7251").then(n.bind(n,"10316"))),eu=(0,a.lazyWithPreload)(()=>n.e("4923").then(n.bind(n,"64342"))),eh=(0,a.lazyWithPreload)(()=>n.e("2806").then(n.bind(n,"44004"))),ep=(0,a.lazyWithPreload)(()=>n.e("9519").then(n.bind(n,"95291"))),ex=(0,a.lazyWithPreload)(()=>n.e("3756").then(n.bind(n,"38110"))),ef=(0,a.lazyWithPreload)(()=>n.e("4522").then(n.bind(n,"24441"))),em=(0,a.lazyWithPreload)(()=>n.e("6792").then(n.bind(n,"93647"))),eg=(0,a.lazyWithPreload)(()=>n.e("926").then(n.bind(n,"95626"))),eb=(0,a.lazyWithPreload)(()=>n.e("3078").then(n.bind(n,"81636"))),ev=(0,a.lazyWithPreload)(()=>n.e("2913").then(n.bind(n,"75643"))),ey=(0,a.lazyWithPreload)(()=>n.e("1489").then(n.bind(n,"95801"))),eI=(0,a.lazyWithPreload)(()=>n.e("4").then(n.bind(n,"22691"))),ek=(0,a.lazyWithPreload)(()=>n.e("3855").then(n.bind(n,"13274"))),ew=(0,a.lazyWithPreload)(()=>n.e("1419").then(n.bind(n,"78938"))),ej=(0,a.lazyWithPreload)(()=>n.e("918").then(n.bind(n,"19402"))),eP=(0,a.lazyWithPreload)(()=>n.e("3777").then(n.bind(n,"11424"))),eS=(0,a.lazyWithPreload)(()=>n.e("9895").then(n.bind(n,"18101"))),eC=(0,a.lazyWithPreload)(()=>n.e("1197").then(n.bind(n,"58844"))),ez=(0,a.lazyWithPreload)(()=>n.e("13").then(n.bind(n,"82126"))),eE=(0,a.lazyWithPreload)(()=>n.e("2934").then(n.bind(n,"58648"))),e_=(0,a.lazyWithPreload)(()=>n.e("1219").then(n.bind(n,"33198"))),eN=(0,a.lazyWithPreload)(()=>n.e("8766").then(n.bind(n,"90143"))),eA=(0,a.lazyWithPreload)(()=>n.e("285").then(n.bind(n,"57114"))),eT=(0,a.lazyWithPreload)(()=>n.e("4978").then(n.bind(n,"11476"))),eL=(0,a.lazyWithPreload)(()=>n.e("3725").then(n.bind(n,"97785"))),eO=(0,a.lazyWithPreload)(()=>n.e("3217").then(n.bind(n,"38850"))),eM=(0,a.lazyWithPreload)(()=>n.e("4951").then(n.bind(n,"56232"))),eB=(0,a.lazyWithPreload)(()=>n.e("5828").then(n.bind(n,"44852"))),eR=(0,a.lazyWithPreload)(()=>n.e("5212").then(n.bind(n,"62887"))),eD=(0,a.lazyWithPreload)(()=>Promise.all([n.e("6212"),n.e("9622")]).then(n.bind(n,"4298"))),eH=(0,a.lazyWithPreload)(()=>n.e("3817").then(n.bind(n,"63830"))),eF=(0,a.lazyWithPreload)(()=>Promise.all([n.e("6212"),n.e("1049")]).then(n.bind(n,"79320"))),e$=(0,a.lazyWithPreload)(()=>n.e("2332").then(n.bind(n,"81188"))),eW=(0,a.lazyWithPreload)(()=>n.e("7285").then(n.bind(n,"10866"))),eK=(0,a.lazyWithPreload)(()=>n.e("5574").then(n.bind(n,"38008"))),eU=(0,a.lazyWithPreload)(()=>n.e("4505").then(n.bind(n,"54078"))),eq=(0,a.lazyWithPreload)(()=>n.e("3683").then(n.bind(n,"49774"))),eV=(0,a.lazyWithPreload)(()=>n.e("2129").then(n.bind(n,"81031"))),eG=(0,a.lazyWithPreload)(()=>n.e("8092").then(n.bind(n,"72427"))),eZ=(0,a.lazyWithPreload)(()=>n.e("458").then(n.bind(n,"59098"))),eY=(0,a.lazyWithPreload)(()=>n.e("131").then(n.bind(n,"22407"))),eX=(0,a.lazyWithPreload)(()=>n.e("9681").then(n.bind(n,"50642"))),eQ=[{path:"/builder/en/api/builder-core",element:r().createElement(d),filePath:"en/api/builder-core.mdx",preload:async()=>(await d.preload(),n.e("9723").then(n.bind(n,"19253"))),lang:"en",version:""},{path:"/builder/en/api/builder-instance",element:r().createElement(o),filePath:"en/api/builder-instance.mdx",preload:async()=>(await o.preload(),n.e("1813").then(n.bind(n,"71916"))),lang:"en",version:""},{path:"/builder/en/api/builder-types",element:r().createElement(l),filePath:"en/api/builder-types.mdx",preload:async()=>(await l.preload(),n.e("5675").then(n.bind(n,"7304"))),lang:"en",version:""},{path:"/builder/en/api/config-dev",element:r().createElement(s),filePath:"en/api/config-dev.mdx",preload:async()=>(await s.preload(),n.e("6790").then(n.bind(n,"24044"))),lang:"en",version:""},{path:"/builder/en/api/config-experiments",element:r().createElement(c),filePath:"en/api/config-experiments.mdx",preload:async()=>(await c.preload(),n.e("936").then(n.bind(n,"24528"))),lang:"en",version:""},{path:"/builder/en/api/config-html",element:r().createElement(u),filePath:"en/api/config-html.mdx",preload:async()=>(await u.preload(),n.e("2881").then(n.bind(n,"98806"))),lang:"en",version:""},{path:"/builder/en/api/config-output",element:r().createElement(h),filePath:"en/api/config-output.mdx",preload:async()=>(await h.preload(),n.e("8267").then(n.bind(n,"3480"))),lang:"en",version:""},{path:"/builder/en/api/config-performance",element:r().createElement(p),filePath:"en/api/config-performance.mdx",preload:async()=>(await p.preload(),n.e("9041").then(n.bind(n,"95191"))),lang:"en",version:""},{path:"/builder/en/api/config-security",element:r().createElement(x),filePath:"en/api/config-security.mdx",preload:async()=>(await x.preload(),n.e("4549").then(n.bind(n,"13908"))),lang:"en",version:""},{path:"/builder/en/api/config-source",element:r().createElement(f),filePath:"en/api/config-source.mdx",preload:async()=>(await f.preload(),n.e("8725").then(n.bind(n,"18751"))),lang:"en",version:""},{path:"/builder/en/api/config-tools",element:r().createElement(m),filePath:"en/api/config-tools.mdx",preload:async()=>(await m.preload(),n.e("3082").then(n.bind(n,"74219"))),lang:"en",version:""},{path:"/builder/en/api/",element:r().createElement(g),filePath:"en/api/index.mdx",preload:async()=>(await g.preload(),n.e("2967").then(n.bind(n,"21795"))),lang:"en",version:""},{path:"/builder/en/api/plugin-core",element:r().createElement(b),filePath:"en/api/plugin-core.mdx",preload:async()=>(await b.preload(),n.e("762").then(n.bind(n,"58058"))),lang:"en",version:""},{path:"/builder/en/api/plugin-hooks",element:r().createElement(v),filePath:"en/api/plugin-hooks.mdx",preload:async()=>(await v.preload(),n.e("6383").then(n.bind(n,"63014"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/browser-compatibility",element:r().createElement(y),filePath:"en/guide/advanced/browser-compatibility.md",preload:async()=>(await y.preload(),n.e("2643").then(n.bind(n,"18505"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/browserslist",element:r().createElement(I),filePath:"en/guide/advanced/browserslist.md",preload:async()=>(await I.preload(),n.e("9330").then(n.bind(n,"91366"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/custom-webpack-config",element:r().createElement(k),filePath:"en/guide/advanced/custom-webpack-config.md",preload:async()=>(await k.preload(),n.e("2907").then(n.bind(n,"69421"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/define",element:r().createElement(w),filePath:"en/guide/advanced/define.md",preload:async()=>(await w.preload(),n.e("851").then(n.bind(n,"21593"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/hmr",element:r().createElement(j),filePath:"en/guide/advanced/hmr.md",preload:async()=>(await j.preload(),n.e("9512").then(n.bind(n,"75797"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/rem",element:r().createElement(P),filePath:"en/guide/advanced/rem.md",preload:async()=>(await P.preload(),n.e("9387").then(n.bind(n,"79769"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/rspack-start",element:r().createElement(S),filePath:"en/guide/advanced/rspack-start.mdx",preload:async()=>(await S.preload(),n.e("3633").then(n.bind(n,"39116"))),lang:"en",version:""},{path:"/builder/en/guide/advanced/storybook",element:r().createElement(C),filePath:"en/guide/advanced/storybook.mdx",preload:async()=>(await C.preload(),n.e("214").then(n.bind(n,"72877"))),lang:"en",version:""},{path:"/builder/en/guide/basic/build-target",element:r().createElement(z),filePath:"en/guide/basic/build-target.md",preload:async()=>(await z.preload(),n.e("1028").then(n.bind(n,"13814"))),lang:"en",version:""},{path:"/builder/en/guide/basic/builder-cli",element:r().createElement(E),filePath:"en/guide/basic/builder-cli.mdx",preload:async()=>(await E.preload(),n.e("4601").then(n.bind(n,"97885"))),lang:"en",version:""},{path:"/builder/en/guide/basic/builder-config",element:r().createElement(_),filePath:"en/guide/basic/builder-config.mdx",preload:async()=>(await _.preload(),n.e("3600").then(n.bind(n,"20634"))),lang:"en",version:""},{path:"/builder/en/guide/basic/css-usage",element:r().createElement(N),filePath:"en/guide/basic/css-usage.md",preload:async()=>(await N.preload(),n.e("1876").then(n.bind(n,"45734"))),lang:"en",version:""},{path:"/builder/en/guide/basic/html-template",element:r().createElement(A),filePath:"en/guide/basic/html-template.md",preload:async()=>(await A.preload(),n.e("1796").then(n.bind(n,"66221"))),lang:"en",version:""},{path:"/builder/en/guide/basic/typescript",element:r().createElement(T),filePath:"en/guide/basic/typescript.md",preload:async()=>(await T.preload(),n.e("6216").then(n.bind(n,"20614"))),lang:"en",version:""},{path:"/builder/en/guide/debug/debug-mode",element:r().createElement(L),filePath:"en/guide/debug/debug-mode.md",preload:async()=>(await L.preload(),n.e("1787").then(n.bind(n,"76711"))),lang:"en",version:""},{path:"/builder/en/guide/faq/exceptions",element:r().createElement(O),filePath:"en/guide/faq/exceptions.md",preload:async()=>(await O.preload(),n.e("6161").then(n.bind(n,"86018"))),lang:"en",version:""},{path:"/builder/en/guide/faq/features",element:r().createElement(M),filePath:"en/guide/faq/features.md",preload:async()=>(await M.preload(),n.e("8521").then(n.bind(n,"57566"))),lang:"en",version:""},{path:"/builder/en/guide/faq/general",element:r().createElement(B),filePath:"en/guide/faq/general.md",preload:async()=>(await B.preload(),n.e("1052").then(n.bind(n,"42153"))),lang:"en",version:""},{path:"/builder/en/guide/faq/hmr",element:r().createElement(R),filePath:"en/guide/faq/hmr.md",preload:async()=>(await R.preload(),n.e("8822").then(n.bind(n,"54982"))),lang:"en",version:""},{path:"/builder/en/guide/features",element:r().createElement(D),filePath:"en/guide/features.mdx",preload:async()=>(await D.preload(),n.e("3264").then(n.bind(n,"18362"))),lang:"en",version:""},{path:"/builder/en/guide/framework/vue2",element:r().createElement(H),filePath:"en/guide/framework/vue2.mdx",preload:async()=>(await H.preload(),n.e("4209").then(n.bind(n,"69540"))),lang:"en",version:""},{path:"/builder/en/guide/framework/vue3",element:r().createElement(F),filePath:"en/guide/framework/vue3.mdx",preload:async()=>(await F.preload(),n.e("6335").then(n.bind(n,"85162"))),lang:"en",version:""},{path:"/builder/en/guide/glossary",element:r().createElement($),filePath:"en/guide/glossary.mdx",preload:async()=>(await $.preload(),n.e("6283").then(n.bind(n,"86621"))),lang:"en",version:""},{path:"/builder/en/guide/introduction",element:r().createElement(W),filePath:"en/guide/introduction.mdx",preload:async()=>(await W.preload(),Promise.all([n.e("6212"),n.e("6020")]).then(n.bind(n,"98166"))),lang:"en",version:""},{path:"/builder/en/guide/optimization/split-chunk",element:r().createElement(K),filePath:"en/guide/optimization/split-chunk.md",preload:async()=>(await K.preload(),n.e("4080").then(n.bind(n,"22683"))),lang:"en",version:""},{path:"/builder/en/guide/quick-start",element:r().createElement(U),filePath:"en/guide/quick-start.mdx",preload:async()=>(await U.preload(),Promise.all([n.e("6212"),n.e("3569")]).then(n.bind(n,"79904"))),lang:"en",version:""},{path:"/builder/en/",element:r().createElement(q),filePath:"en/index.md",preload:async()=>(await q.preload(),n.e("7652").then(n.bind(n,"11549"))),lang:"en",version:""},{path:"/builder/en/plugins/introduction",element:r().createElement(V),filePath:"en/plugins/introduction.md",preload:async()=>(await V.preload(),n.e("1729").then(n.bind(n,"12341"))),lang:"en",version:""},{path:"/builder/en/plugins/list",element:r().createElement(G),filePath:"en/plugins/list.md",preload:async()=>(await G.preload(),n.e("3617").then(n.bind(n,"35145"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-esbuild",element:r().createElement(Z),filePath:"en/plugins/plugin-esbuild.mdx",preload:async()=>(await Z.preload(),n.e("4291").then(n.bind(n,"78696"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-image-compress",element:r().createElement(Y),filePath:"en/plugins/plugin-image-compress.mdx",preload:async()=>(await Y.preload(),n.e("195").then(n.bind(n,"87755"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-node-polyfill",element:r().createElement(X),filePath:"en/plugins/plugin-node-polyfill.mdx",preload:async()=>(await X.preload(),n.e("7149").then(n.bind(n,"78330"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-stylus",element:r().createElement(Q),filePath:"en/plugins/plugin-stylus.mdx",preload:async()=>(await Q.preload(),n.e("7717").then(n.bind(n,"89052"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-swc",element:r().createElement(J),filePath:"en/plugins/plugin-swc.mdx",preload:async()=>(await J.preload(),n.e("3669").then(n.bind(n,"14110"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-vue",element:r().createElement(ee),filePath:"en/plugins/plugin-vue.mdx",preload:async()=>(await ee.preload(),n.e("742").then(n.bind(n,"37518"))),lang:"en",version:""},{path:"/builder/en/plugins/plugin-vue2",element:r().createElement(et),filePath:"en/plugins/plugin-vue2.mdx",preload:async()=>(await et.preload(),n.e("958").then(n.bind(n,"68401"))),lang:"en",version:""},{path:"/builder/api/builder-core",element:r().createElement(en),filePath:"zh/api/builder-core.mdx",preload:async()=>(await en.preload(),n.e("9942").then(n.bind(n,"69050"))),lang:"zh",version:""},{path:"/builder/api/builder-instance",element:r().createElement(ei),filePath:"zh/api/builder-instance.mdx",preload:async()=>(await ei.preload(),n.e("1971").then(n.bind(n,"71749"))),lang:"zh",version:""},{path:"/builder/api/builder-types",element:r().createElement(er),filePath:"zh/api/builder-types.mdx",preload:async()=>(await er.preload(),n.e("8916").then(n.bind(n,"34170"))),lang:"zh",version:""},{path:"/builder/api/config-dev",element:r().createElement(ea),filePath:"zh/api/config-dev.mdx",preload:async()=>(await ea.preload(),n.e("8507").then(n.bind(n,"50060"))),lang:"zh",version:""},{path:"/builder/api/config-experiments",element:r().createElement(ed),filePath:"zh/api/config-experiments.mdx",preload:async()=>(await ed.preload(),n.e("9174").then(n.bind(n,"37284"))),lang:"zh",version:""},{path:"/builder/api/config-html",element:r().createElement(eo),filePath:"zh/api/config-html.mdx",preload:async()=>(await eo.preload(),n.e("6815").then(n.bind(n,"22361"))),lang:"zh",version:""},{path:"/builder/api/config-output",element:r().createElement(el),filePath:"zh/api/config-output.mdx",preload:async()=>(await el.preload(),n.e("3664").then(n.bind(n,"87030"))),lang:"zh",version:""},{path:"/builder/api/config-performance",element:r().createElement(es),filePath:"zh/api/config-performance.mdx",preload:async()=>(await es.preload(),n.e("6425").then(n.bind(n,"48471"))),lang:"zh",version:""},{path:"/builder/api/config-security",element:r().createElement(ec),filePath:"zh/api/config-security.mdx",preload:async()=>(await ec.preload(),n.e("7251").then(n.bind(n,"10316"))),lang:"zh",version:""},{path:"/builder/api/config-source",element:r().createElement(eu),filePath:"zh/api/config-source.mdx",preload:async()=>(await eu.preload(),n.e("4923").then(n.bind(n,"64342"))),lang:"zh",version:""},{path:"/builder/api/config-tools",element:r().createElement(eh),filePath:"zh/api/config-tools.mdx",preload:async()=>(await eh.preload(),n.e("2806").then(n.bind(n,"44004"))),lang:"zh",version:""},{path:"/builder/api/",element:r().createElement(ep),filePath:"zh/api/index.mdx",preload:async()=>(await ep.preload(),n.e("9519").then(n.bind(n,"95291"))),lang:"zh",version:""},{path:"/builder/api/plugin-core",element:r().createElement(ex),filePath:"zh/api/plugin-core.mdx",preload:async()=>(await ex.preload(),n.e("3756").then(n.bind(n,"38110"))),lang:"zh",version:""},{path:"/builder/api/plugin-hooks",element:r().createElement(ef),filePath:"zh/api/plugin-hooks.mdx",preload:async()=>(await ef.preload(),n.e("4522").then(n.bind(n,"24441"))),lang:"zh",version:""},{path:"/builder/guide/advanced/browser-compatibility",element:r().createElement(em),filePath:"zh/guide/advanced/browser-compatibility.md",preload:async()=>(await em.preload(),n.e("6792").then(n.bind(n,"93647"))),lang:"zh",version:""},{path:"/builder/guide/advanced/browserslist",element:r().createElement(eg),filePath:"zh/guide/advanced/browserslist.md",preload:async()=>(await eg.preload(),n.e("926").then(n.bind(n,"95626"))),lang:"zh",version:""},{path:"/builder/guide/advanced/custom-webpack-config",element:r().createElement(eb),filePath:"zh/guide/advanced/custom-webpack-config.md",preload:async()=>(await eb.preload(),n.e("3078").then(n.bind(n,"81636"))),lang:"zh",version:""},{path:"/builder/guide/advanced/define",element:r().createElement(ev),filePath:"zh/guide/advanced/define.md",preload:async()=>(await ev.preload(),n.e("2913").then(n.bind(n,"75643"))),lang:"zh",version:""},{path:"/builder/guide/advanced/hmr",element:r().createElement(ey),filePath:"zh/guide/advanced/hmr.md",preload:async()=>(await ey.preload(),n.e("1489").then(n.bind(n,"95801"))),lang:"zh",version:""},{path:"/builder/guide/advanced/rem",element:r().createElement(eI),filePath:"zh/guide/advanced/rem.md",preload:async()=>(await eI.preload(),n.e("4").then(n.bind(n,"22691"))),lang:"zh",version:""},{path:"/builder/guide/advanced/rspack-start",element:r().createElement(ek),filePath:"zh/guide/advanced/rspack-start.mdx",preload:async()=>(await ek.preload(),n.e("3855").then(n.bind(n,"13274"))),lang:"zh",version:""},{path:"/builder/guide/advanced/storybook",element:r().createElement(ew),filePath:"zh/guide/advanced/storybook.mdx",preload:async()=>(await ew.preload(),n.e("1419").then(n.bind(n,"78938"))),lang:"zh",version:""},{path:"/builder/guide/basic/build-target",element:r().createElement(ej),filePath:"zh/guide/basic/build-target.md",preload:async()=>(await ej.preload(),n.e("918").then(n.bind(n,"19402"))),lang:"zh",version:""},{path:"/builder/guide/basic/builder-cli",element:r().createElement(eP),filePath:"zh/guide/basic/builder-cli.mdx",preload:async()=>(await eP.preload(),n.e("3777").then(n.bind(n,"11424"))),lang:"zh",version:""},{path:"/builder/guide/basic/builder-config",element:r().createElement(eS),filePath:"zh/guide/basic/builder-config.mdx",preload:async()=>(await eS.preload(),n.e("9895").then(n.bind(n,"18101"))),lang:"zh",version:""},{path:"/builder/guide/basic/css-usage",element:r().createElement(eC),filePath:"zh/guide/basic/css-usage.md",preload:async()=>(await eC.preload(),n.e("1197").then(n.bind(n,"58844"))),lang:"zh",version:""},{path:"/builder/guide/basic/html-template",element:r().createElement(ez),filePath:"zh/guide/basic/html-template.md",preload:async()=>(await ez.preload(),n.e("13").then(n.bind(n,"82126"))),lang:"zh",version:""},{path:"/builder/guide/basic/typescript",element:r().createElement(eE),filePath:"zh/guide/basic/typescript.md",preload:async()=>(await eE.preload(),n.e("2934").then(n.bind(n,"58648"))),lang:"zh",version:""},{path:"/builder/guide/debug/debug-mode",element:r().createElement(e_),filePath:"zh/guide/debug/debug-mode.md",preload:async()=>(await e_.preload(),n.e("1219").then(n.bind(n,"33198"))),lang:"zh",version:""},{path:"/builder/guide/faq/exceptions",element:r().createElement(eN),filePath:"zh/guide/faq/exceptions.md",preload:async()=>(await eN.preload(),n.e("8766").then(n.bind(n,"90143"))),lang:"zh",version:""},{path:"/builder/guide/faq/features",element:r().createElement(eA),filePath:"zh/guide/faq/features.md",preload:async()=>(await eA.preload(),n.e("285").then(n.bind(n,"57114"))),lang:"zh",version:""},{path:"/builder/guide/faq/general",element:r().createElement(eT),filePath:"zh/guide/faq/general.md",preload:async()=>(await eT.preload(),n.e("4978").then(n.bind(n,"11476"))),lang:"zh",version:""},{path:"/builder/guide/faq/hmr",element:r().createElement(eL),filePath:"zh/guide/faq/hmr.md",preload:async()=>(await eL.preload(),n.e("3725").then(n.bind(n,"97785"))),lang:"zh",version:""},{path:"/builder/guide/features",element:r().createElement(eO),filePath:"zh/guide/features.mdx",preload:async()=>(await eO.preload(),n.e("3217").then(n.bind(n,"38850"))),lang:"zh",version:""},{path:"/builder/guide/framework/vue2",element:r().createElement(eM),filePath:"zh/guide/framework/vue2.mdx",preload:async()=>(await eM.preload(),n.e("4951").then(n.bind(n,"56232"))),lang:"zh",version:""},{path:"/builder/guide/framework/vue3",element:r().createElement(eB),filePath:"zh/guide/framework/vue3.mdx",preload:async()=>(await eB.preload(),n.e("5828").then(n.bind(n,"44852"))),lang:"zh",version:""},{path:"/builder/guide/glossary",element:r().createElement(eR),filePath:"zh/guide/glossary.mdx",preload:async()=>(await eR.preload(),n.e("5212").then(n.bind(n,"62887"))),lang:"zh",version:""},{path:"/builder/guide/introduction",element:r().createElement(eD),filePath:"zh/guide/introduction.mdx",preload:async()=>(await eD.preload(),Promise.all([n.e("6212"),n.e("9622")]).then(n.bind(n,"4298"))),lang:"zh",version:""},{path:"/builder/guide/optimization/split-chunk",element:r().createElement(eH),filePath:"zh/guide/optimization/split-chunk.md",preload:async()=>(await eH.preload(),n.e("3817").then(n.bind(n,"63830"))),lang:"zh",version:""},{path:"/builder/guide/quick-start",element:r().createElement(eF),filePath:"zh/guide/quick-start.mdx",preload:async()=>(await eF.preload(),Promise.all([n.e("6212"),n.e("1049")]).then(n.bind(n,"79320"))),lang:"zh",version:""},{path:"/builder/",element:r().createElement(e$),filePath:"zh/index.md",preload:async()=>(await e$.preload(),n.e("2332").then(n.bind(n,"81188"))),lang:"zh",version:""},{path:"/builder/plugins/introduction",element:r().createElement(eW),filePath:"zh/plugins/introduction.md",preload:async()=>(await eW.preload(),n.e("7285").then(n.bind(n,"10866"))),lang:"zh",version:""},{path:"/builder/plugins/list",element:r().createElement(eK),filePath:"zh/plugins/list.md",preload:async()=>(await eK.preload(),n.e("5574").then(n.bind(n,"38008"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-esbuild",element:r().createElement(eU),filePath:"zh/plugins/plugin-esbuild.mdx",preload:async()=>(await eU.preload(),n.e("4505").then(n.bind(n,"54078"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-image-compress",element:r().createElement(eq),filePath:"zh/plugins/plugin-image-compress.mdx",preload:async()=>(await eq.preload(),n.e("3683").then(n.bind(n,"49774"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-node-polyfill",element:r().createElement(eV),filePath:"zh/plugins/plugin-node-polyfill.mdx",preload:async()=>(await eV.preload(),n.e("2129").then(n.bind(n,"81031"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-stylus",element:r().createElement(eG),filePath:"zh/plugins/plugin-stylus.mdx",preload:async()=>(await eG.preload(),n.e("8092").then(n.bind(n,"72427"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-swc",element:r().createElement(eZ),filePath:"zh/plugins/plugin-swc.mdx",preload:async()=>(await eZ.preload(),n.e("458").then(n.bind(n,"59098"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-vue",element:r().createElement(eY),filePath:"zh/plugins/plugin-vue.mdx",preload:async()=>(await eY.preload(),n.e("131").then(n.bind(n,"22407"))),lang:"zh",version:""},{path:"/builder/plugins/plugin-vue2",element:r().createElement(eX),filePath:"zh/plugins/plugin-vue2.mdx",preload:async()=>(await eX.preload(),n.e("9681").then(n.bind(n,"50642"))),lang:"zh",version:""}]},51801:function(e,t,n){"use strict";n.r(t),n.d(t,{onSearch:function(){return i}});let i=()=>{}},25756:function(e,t,n){"use strict";n.r(t),t.default={en:"32679cc3",zh:"7fdfa4c7"}},13328:function(e,t,n){"use strict";n.r(t),t.default={title:"Modern.js Builder",description:"",icon:"https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/logo-1x-0104.png",route:{exclude:["**/zh/config/**","**/en/config/**","**/zh/shared/**","**/en/shared/**"]},themeConfig:{footer:{message:"Copyright \xa9 2023 ByteDance."},socialLinks:[{icon:"github",mode:"link",content:"https://github.com/web-infra-dev/modern.js/tree/main/packages/builder"}],locales:[{lang:"zh",label:"\u7B80\u4F53\u4E2D\u6587",nav:[{text:"\u6307\u5357",link:"/guide/introduction",activeMatch:"/guide/"},{text:"API",link:"/api/",activeMatch:"/api/"},{text:"\u63D2\u4EF6",link:"/plugins/introduction",activeMatch:"/plugins/"}],sidebar:{"/guide/":[{collapsed:!1,collapsible:!1,text:"\u5F00\u59CB",items:[{text:"\u4ECB\u7ECD",link:"/guide/introduction",_fileKey:"zh/guide/introduction"},{text:"\u5FEB\u901F\u4E0A\u624B",link:"/guide/quick-start",_fileKey:"zh/guide/quick-start"},{text:"\u540D\u8BCD\u89E3\u91CA",link:"/guide/glossary",_fileKey:"zh/guide/glossary"},{text:"\u529F\u80FD\u5BFC\u822A",link:"/guide/features",_fileKey:"zh/guide/features"}],link:""},{collapsible:!1,text:"\u57FA\u7840",items:[{text:"Builder \u914D\u7F6E\u9879",link:"/guide/basic/builder-config",_fileKey:"zh/guide/basic/builder-config"},{text:"\u6784\u5EFA\u4EA7\u7269\u7C7B\u578B",link:"/guide/basic/build-target",_fileKey:"zh/guide/basic/build-target"},{text:"\u5F15\u7528\u6837\u5F0F\u8D44\u6E90",link:"/guide/basic/css-usage",_fileKey:"zh/guide/basic/css-usage"},{text:"\u914D\u7F6E HTML \u6A21\u677F",link:"/guide/basic/html-template",_fileKey:"zh/guide/basic/html-template"},{text:"\u4F7F\u7528 TypeScript",link:"/guide/basic/typescript",_fileKey:"zh/guide/basic/typescript"},{text:"\u4F7F\u7528 Builder CLI",link:"/guide/basic/builder-cli",_fileKey:"zh/guide/basic/builder-cli"}],link:"",collapsed:!1},{collapsible:!1,text:"\u8FDB\u9636",items:[{text:"\u4F7F\u7528 Rspack",link:"/guide/advanced/rspack-start",_fileKey:"zh/guide/advanced/rspack-start"},{text:"\u73AF\u5883\u53D8\u91CF",link:"/guide/advanced/define",_fileKey:"zh/guide/advanced/define"},{text:"\u6A21\u5757\u70ED\u66F4\u65B0",link:"/guide/advanced/hmr",_fileKey:"zh/guide/advanced/hmr"},{text:"\u5F00\u542F REM \u9002\u914D",link:"/guide/advanced/rem",_fileKey:"zh/guide/advanced/rem"},{text:"\u8BBE\u7F6E\u6D4F\u89C8\u5668\u8303\u56F4",link:"/guide/advanced/browserslist",_fileKey:"zh/guide/advanced/browserslist"},{text:"\u6D4F\u89C8\u5668\u517C\u5BB9\u6027",link:"/guide/advanced/browser-compatibility",_fileKey:"zh/guide/advanced/browser-compatibility"},{text:"\u4FEE\u6539 webpack \u914D\u7F6E",link:"/guide/advanced/custom-webpack-config",_fileKey:"zh/guide/advanced/custom-webpack-config"},{text:"\u4F7F\u7528 Storybook",link:"/guide/advanced/storybook",_fileKey:"zh/guide/advanced/storybook"}],link:"",collapsed:!1},{collapsible:!1,text:"\u6846\u67B6",items:[{text:"\u6784\u5EFA Vue 3 \u5E94\u7528",link:"/guide/framework/vue3",_fileKey:"zh/guide/framework/vue3"},{text:"\u6784\u5EFA Vue 2 \u5E94\u7528",link:"/guide/framework/vue2",_fileKey:"zh/guide/framework/vue2"}],link:"",collapsed:!1},{collapsible:!1,text:"\u4F18\u5316",items:[{text:"\u62C6\u5305\u6700\u4F73\u5B9E\u8DF5",link:"/guide/optimization/split-chunk",_fileKey:"zh/guide/optimization/split-chunk"}],link:"",collapsed:!1},{collapsible:!1,text:"\u8C03\u8BD5",items:[{text:"\u5F00\u542F\u8C03\u8BD5\u6A21\u5F0F",link:"/guide/debug/debug-mode",_fileKey:"zh/guide/debug/debug-mode"}],link:"",collapsed:!1},{collapsible:!1,text:"\u5E38\u89C1\u95EE\u9898",items:[{text:"\u901A\u7528\u7C7B\u95EE\u9898",link:"/guide/faq/general",_fileKey:"zh/guide/faq/general"},{text:"\u529F\u80FD\u7C7B\u95EE\u9898",link:"/guide/faq/features",_fileKey:"zh/guide/faq/features"},{text:"\u5F02\u5E38\u7C7B\u95EE\u9898",link:"/guide/faq/exceptions",_fileKey:"zh/guide/faq/exceptions"},{text:"\u70ED\u66F4\u65B0\u95EE\u9898",link:"/guide/faq/hmr",_fileKey:"zh/guide/faq/hmr"}],link:"",collapsed:!1}],"/api/":[{text:"API \u603B\u89C8",link:"/api/"},{text:"\u914D\u7F6E",collapsible:!1,items:[{text:"Source Config",link:"/api/config-source",_fileKey:"zh/api/config-source"},{text:"Html Config",link:"/api/config-html",_fileKey:"zh/api/config-html"},{text:"Security Config",link:"/api/config-security",_fileKey:"zh/api/config-security"},{text:"Dev Config",link:"/api/config-dev",_fileKey:"zh/api/config-dev"},{text:"Output Config",link:"/api/config-output",_fileKey:"zh/api/config-output"},{text:"Tools Config",link:"/api/config-tools",_fileKey:"zh/api/config-tools"},{text:"Performance Config",link:"/api/config-performance",_fileKey:"zh/api/config-performance"},{text:"Experiments Config",link:"/api/config-experiments",_fileKey:"zh/api/config-experiments"}],link:"",collapsed:!1},{text:"Node API",collapsible:!1,items:[{text:"Builder Core",link:"/api/builder-core",_fileKey:"zh/api/builder-core"},{text:"Builder Instance",link:"/api/builder-instance",_fileKey:"zh/api/builder-instance"},{text:"Builder Types",link:"/api/builder-types",_fileKey:"zh/api/builder-types"}],link:"",collapsed:!1},{text:"Plugin API",collapsible:!1,items:[{text:"Plugin Core",link:"/api/plugin-core",_fileKey:"zh/api/plugin-core"},{text:"Plugin Hooks",link:"/api/plugin-hooks",_fileKey:"zh/api/plugin-hooks"}],link:"",collapsed:!1}],"/plugins":[{collapsible:!1,text:"\u6307\u5357",items:[{text:"\u63D2\u4EF6\u7CFB\u7EDF",link:"/plugins/introduction",_fileKey:"zh/plugins/introduction"}],link:"",collapsed:!1},{collapsible:!1,text:"\u5217\u8868",items:[{text:"\u603B\u89C8",link:"/plugins/list",_fileKey:"zh/plugins/list"},{text:"Vue \u63D2\u4EF6",link:"/plugins/plugin-vue",_fileKey:"zh/plugins/plugin-vue"},{text:"Vue 2 \u63D2\u4EF6",link:"/plugins/plugin-vue2",_fileKey:"zh/plugins/plugin-vue2"},{text:"SWC \u63D2\u4EF6",link:"/plugins/plugin-swc",_fileKey:"zh/plugins/plugin-swc"},{text:"Stylus \u63D2\u4EF6",link:"/plugins/plugin-stylus",_fileKey:"zh/plugins/plugin-stylus"},{text:"Esbuild \u63D2\u4EF6",link:"/plugins/plugin-esbuild",_fileKey:"zh/plugins/plugin-esbuild"},{text:"Node Polyfill \u63D2\u4EF6",link:"/plugins/plugin-node-polyfill",_fileKey:"zh/plugins/plugin-node-polyfill"},{text:"Image Compress \u63D2\u4EF6",link:"/plugins/plugin-image-compress",_fileKey:"zh/plugins/plugin-image-compress"}],link:"",collapsed:!1}]},title:"Modern.js Builder",outlineTitle:"\u76EE\u5F55",prevPageText:"\u4E0A\u4E00\u9875",nextPageText:"\u4E0B\u4E00\u9875",description:"\u57FA\u4E8E Rspack \u7684 Web \u6784\u5EFA\u5DE5\u5177"},{lang:"en",label:"English",nav:[{text:"Guide",link:"/en/guide/introduction",activeMatch:"/guide/"},{text:"API",link:"/en/api/",activeMatch:"/api/"},{text:"Plugins",link:"/en/plugins/introduction",activeMatch:"/plugins/"}],sidebar:{"/en/guide/":[{collapsed:!1,collapsible:!1,text:"Getting Started",items:[{text:"Introduction",link:"/en/guide/introduction",_fileKey:"en/guide/introduction"},{text:"Quick Start",link:"/en/guide/quick-start",_fileKey:"en/guide/quick-start"},{text:"Glossary",link:"/en/guide/glossary",_fileKey:"en/guide/glossary"},{text:"All Features",link:"/en/guide/features",_fileKey:"en/guide/features"}],link:""},{collapsible:!1,text:"Basic",items:[{text:"Builder Config",link:"/en/guide/basic/builder-config",_fileKey:"en/guide/basic/builder-config"},{text:"Build Target",link:"/en/guide/basic/build-target",_fileKey:"en/guide/basic/build-target"},{text:"CSS Usage",link:"/en/guide/basic/css-usage",_fileKey:"en/guide/basic/css-usage"},{text:"HTML Template",link:"/en/guide/basic/html-template",_fileKey:"en/guide/basic/html-template"},{text:"Use TypeScript",link:"/en/guide/basic/typescript",_fileKey:"en/guide/basic/typescript"},{text:"Use Builder CLI",link:"/en/guide/basic/builder-cli",_fileKey:"en/guide/basic/builder-cli"}],link:"",collapsed:!1},{collapsible:!1,text:"Advanced",items:[{text:"Using Rspack",link:"/en/guide/advanced/rspack-start",_fileKey:"en/guide/advanced/rspack-start"},{text:"Environment Variables",link:"/en/guide/advanced/define",_fileKey:"en/guide/advanced/define"},{text:"Hot Module Replacement",link:"/en/guide/advanced/hmr",_fileKey:"en/guide/advanced/hmr"},{text:"REM adaptation",link:"/en/guide/advanced/rem",_fileKey:"en/guide/advanced/rem"},{text:"Browserslist",link:"/en/guide/advanced/browserslist",_fileKey:"en/guide/advanced/browserslist"},{text:"Browser Compatibility",link:"/en/guide/advanced/browser-compatibility",_fileKey:"en/guide/advanced/browser-compatibility"},{text:"Custom webpack config",link:"/en/guide/advanced/custom-webpack-config",_fileKey:"en/guide/advanced/custom-webpack-config"},{text:"Using Storybook",link:"/en/guide/advanced/storybook",_fileKey:"en/guide/advanced/storybook"}],link:"",collapsed:!1},{collapsible:!1,text:"Framework",items:[{text:"Build Vue 3 App",link:"/en/guide/framework/vue3",_fileKey:"en/guide/framework/vue3"},{text:"Build Vue 2 App",link:"/en/guide/framework/vue2",_fileKey:"en/guide/framework/vue2"}],link:"",collapsed:!1},{collapsible:!1,text:"Optimization",items:[{text:"Chunk Splitting Practice",link:"/en/guide/optimization/split-chunk",_fileKey:"en/guide/optimization/split-chunk"}],link:"",collapsed:!1},{collapsible:!1,text:"Debug",items:[{text:"Debug Mode",link:"/en/guide/debug/debug-mode",_fileKey:"en/guide/debug/debug-mode"}],link:"",collapsed:!1},{collapsible:!1,text:"FAQ",items:[{text:"General FAQ",link:"/en/guide/faq/general",_fileKey:"en/guide/faq/general"},{text:"Features FAQ",link:"/en/guide/faq/features",_fileKey:"en/guide/faq/features"},{text:"Exceptions FAQ",link:"/en/guide/faq/exceptions",_fileKey:"en/guide/faq/exceptions"},{text:"HMR FAQ",link:"/en/guide/faq/hmr",_fileKey:"en/guide/faq/hmr"}],link:"",collapsed:!1}],"/en/api/":[{text:"API Reference",link:"/en/api/"},{text:"Config",collapsible:!1,items:[{text:"Source Config",link:"/en/api/config-source",_fileKey:"en/api/config-source"},{text:"Html Config",link:"/en/api/config-html",_fileKey:"en/api/config-html"},{text:"Security Config",link:"/en/api/config-security",_fileKey:"en/api/config-security"},{text:"Dev Config",link:"/en/api/config-dev",_fileKey:"en/api/config-dev"},{text:"Output Config",link:"/en/api/config-output",_fileKey:"en/api/config-output"},{text:"Tools Config",link:"/en/api/config-tools",_fileKey:"en/api/config-tools"},{text:"Performance Config",link:"/en/api/config-performance",_fileKey:"en/api/config-performance"},{text:"Experiments Config",link:"/en/api/config-experiments",_fileKey:"en/api/config-experiments"}],link:"",collapsed:!1},{text:"Node API",collapsible:!1,items:[{text:"Builder Core",link:"/en/api/builder-core",_fileKey:"en/api/builder-core"},{text:"Builder Instance",link:"/en/api/builder-instance",_fileKey:"en/api/builder-instance"},{text:"Builder Types",link:"/en/api/builder-types",_fileKey:"en/api/builder-types"}],link:"",collapsed:!1},{text:"Plugin API",collapsible:!1,items:[{text:"Plugin Core",link:"/en/api/plugin-core",_fileKey:"en/api/plugin-core"},{text:"Plugin Hooks",link:"/en/api/plugin-hooks",_fileKey:"en/api/plugin-hooks"}],link:"",collapsed:!1}],"/en/plugins":[{collapsible:!1,text:"Guide",items:[{text:"Introduce to Plugin",link:"/en/plugins/introduction",_fileKey:"en/plugins/introduction"}],link:"",collapsed:!1},{collapsible:!1,text:"List",items:[{text:"Overview",link:"/en/plugins/list",_fileKey:"en/plugins/list"},{text:"Vue Plugin",link:"/en/plugins/plugin-vue",_fileKey:"en/plugins/plugin-vue"},{text:"Vue 2 Plugin",link:"/en/plugins/plugin-vue2",_fileKey:"en/plugins/plugin-vue2"},{text:"SWC Plugin",link:"/en/plugins/plugin-swc",_fileKey:"en/plugins/plugin-swc"},{text:"Stylus Plugin",link:"/en/plugins/plugin-stylus",_fileKey:"en/plugins/plugin-stylus"},{text:"Esbuild Plugin",link:"/en/plugins/plugin-esbuild",_fileKey:"en/plugins/plugin-esbuild"},{text:"Node Polyfill Plugin",link:"/en/plugins/plugin-node-polyfill",_fileKey:"en/plugins/plugin-node-polyfill"},{text:"Image Compress Plugin",link:"/en/plugins/plugin-image-compress",_fileKey:"en/plugins/plugin-image-compress"}],link:"",collapsed:!1}]},title:"Modern.js Builder",description:"An Rspack-based build tool for web development."}],editLink:{docRepoBaseUrl:"https://github.com/web-infra-dev/modern.js/tree/main/packages/document/builder-doc/docs",text:"Edit this page on GitHub"}},base:"/builder/",lang:"zh",locales:[{lang:"zh",label:"\u7B80\u4F53\u4E2D\u6587",nav:[{text:"\u6307\u5357",link:"/guide/introduction",activeMatch:"/guide/"},{text:"API",link:"/api/",activeMatch:"/api/"},{text:"\u63D2\u4EF6",link:"/plugins/introduction",activeMatch:"/plugins/"}],sidebar:{"/guide/":[{collapsed:!1,collapsible:!1,text:"\u5F00\u59CB",items:[{text:"\u4ECB\u7ECD",link:"/guide/introduction",_fileKey:"zh/guide/introduction"},{text:"\u5FEB\u901F\u4E0A\u624B",link:"/guide/quick-start",_fileKey:"zh/guide/quick-start"},{text:"\u540D\u8BCD\u89E3\u91CA",link:"/guide/glossary",_fileKey:"zh/guide/glossary"},{text:"\u529F\u80FD\u5BFC\u822A",link:"/guide/features",_fileKey:"zh/guide/features"}],link:""},{collapsible:!1,text:"\u57FA\u7840",items:[{text:"Builder \u914D\u7F6E\u9879",link:"/guide/basic/builder-config",_fileKey:"zh/guide/basic/builder-config"},{text:"\u6784\u5EFA\u4EA7\u7269\u7C7B\u578B",link:"/guide/basic/build-target",_fileKey:"zh/guide/basic/build-target"},{text:"\u5F15\u7528\u6837\u5F0F\u8D44\u6E90",link:"/guide/basic/css-usage",_fileKey:"zh/guide/basic/css-usage"},{text:"\u914D\u7F6E HTML \u6A21\u677F",link:"/guide/basic/html-template",_fileKey:"zh/guide/basic/html-template"},{text:"\u4F7F\u7528 TypeScript",link:"/guide/basic/typescript",_fileKey:"zh/guide/basic/typescript"},{text:"\u4F7F\u7528 Builder CLI",link:"/guide/basic/builder-cli",_fileKey:"zh/guide/basic/builder-cli"}],link:"",collapsed:!1},{collapsible:!1,text:"\u8FDB\u9636",items:[{text:"\u4F7F\u7528 Rspack",link:"/guide/advanced/rspack-start",_fileKey:"zh/guide/advanced/rspack-start"},{text:"\u73AF\u5883\u53D8\u91CF",link:"/guide/advanced/define",_fileKey:"zh/guide/advanced/define"},{text:"\u6A21\u5757\u70ED\u66F4\u65B0",link:"/guide/advanced/hmr",_fileKey:"zh/guide/advanced/hmr"},{text:"\u5F00\u542F REM \u9002\u914D",link:"/guide/advanced/rem",_fileKey:"zh/guide/advanced/rem"},{text:"\u8BBE\u7F6E\u6D4F\u89C8\u5668\u8303\u56F4",link:"/guide/advanced/browserslist",_fileKey:"zh/guide/advanced/browserslist"},{text:"\u6D4F\u89C8\u5668\u517C\u5BB9\u6027",link:"/guide/advanced/browser-compatibility",_fileKey:"zh/guide/advanced/browser-compatibility"},{text:"\u4FEE\u6539 webpack \u914D\u7F6E",link:"/guide/advanced/custom-webpack-config",_fileKey:"zh/guide/advanced/custom-webpack-config"},{text:"\u4F7F\u7528 Storybook",link:"/guide/advanced/storybook",_fileKey:"zh/guide/advanced/storybook"}],link:"",collapsed:!1},{collapsible:!1,text:"\u6846\u67B6",items:[{text:"\u6784\u5EFA Vue 3 \u5E94\u7528",link:"/guide/framework/vue3",_fileKey:"zh/guide/framework/vue3"},{text:"\u6784\u5EFA Vue 2 \u5E94\u7528",link:"/guide/framework/vue2",_fileKey:"zh/guide/framework/vue2"}],link:"",collapsed:!1},{collapsible:!1,text:"\u4F18\u5316",items:[{text:"\u62C6\u5305\u6700\u4F73\u5B9E\u8DF5",link:"/guide/optimization/split-chunk",_fileKey:"zh/guide/optimization/split-chunk"}],link:"",collapsed:!1},{collapsible:!1,text:"\u8C03\u8BD5",items:[{text:"\u5F00\u542F\u8C03\u8BD5\u6A21\u5F0F",link:"/guide/debug/debug-mode",_fileKey:"zh/guide/debug/debug-mode"}],link:"",collapsed:!1},{collapsible:!1,text:"\u5E38\u89C1\u95EE\u9898",items:[{text:"\u901A\u7528\u7C7B\u95EE\u9898",link:"/guide/faq/general",_fileKey:"zh/guide/faq/general"},{text:"\u529F\u80FD\u7C7B\u95EE\u9898",link:"/guide/faq/features",_fileKey:"zh/guide/faq/features"},{text:"\u5F02\u5E38\u7C7B\u95EE\u9898",link:"/guide/faq/exceptions",_fileKey:"zh/guide/faq/exceptions"},{text:"\u70ED\u66F4\u65B0\u95EE\u9898",link:"/guide/faq/hmr",_fileKey:"zh/guide/faq/hmr"}],link:"",collapsed:!1}],"/api/":[{text:"API \u603B\u89C8",link:"/api/"},{text:"\u914D\u7F6E",collapsible:!1,items:[{text:"Source Config",link:"/api/config-source",_fileKey:"zh/api/config-source"},{text:"Html Config",link:"/api/config-html",_fileKey:"zh/api/config-html"},{text:"Security Config",link:"/api/config-security",_fileKey:"zh/api/config-security"},{text:"Dev Config",link:"/api/config-dev",_fileKey:"zh/api/config-dev"},{text:"Output Config",link:"/api/config-output",_fileKey:"zh/api/config-output"},{text:"Tools Config",link:"/api/config-tools",_fileKey:"zh/api/config-tools"},{text:"Performance Config",link:"/api/config-performance",_fileKey:"zh/api/config-performance"},{text:"Experiments Config",link:"/api/config-experiments",_fileKey:"zh/api/config-experiments"}],link:"",collapsed:!1},{text:"Node API",collapsible:!1,items:[{text:"Builder Core",link:"/api/builder-core",_fileKey:"zh/api/builder-core"},{text:"Builder Instance",link:"/api/builder-instance",_fileKey:"zh/api/builder-instance"},{text:"Builder Types",link:"/api/builder-types",_fileKey:"zh/api/builder-types"}],link:"",collapsed:!1},{text:"Plugin API",collapsible:!1,items:[{text:"Plugin Core",link:"/api/plugin-core",_fileKey:"zh/api/plugin-core"},{text:"Plugin Hooks",link:"/api/plugin-hooks",_fileKey:"zh/api/plugin-hooks"}],link:"",collapsed:!1}],"/plugins":[{collapsible:!1,text:"\u6307\u5357",items:[{text:"\u63D2\u4EF6\u7CFB\u7EDF",link:"/plugins/introduction",_fileKey:"zh/plugins/introduction"}],link:"",collapsed:!1},{collapsible:!1,text:"\u5217\u8868",items:[{text:"\u603B\u89C8",link:"/plugins/list",_fileKey:"zh/plugins/list"},{text:"Vue \u63D2\u4EF6",link:"/plugins/plugin-vue",_fileKey:"zh/plugins/plugin-vue"},{text:"Vue 2 \u63D2\u4EF6",link:"/plugins/plugin-vue2",_fileKey:"zh/plugins/plugin-vue2"},{text:"SWC \u63D2\u4EF6",link:"/plugins/plugin-swc",_fileKey:"zh/plugins/plugin-swc"},{text:"Stylus \u63D2\u4EF6",link:"/plugins/plugin-stylus",_fileKey:"zh/plugins/plugin-stylus"},{text:"Esbuild \u63D2\u4EF6",link:"/plugins/plugin-esbuild",_fileKey:"zh/plugins/plugin-esbuild"},{text:"Node Polyfill \u63D2\u4EF6",link:"/plugins/plugin-node-polyfill",_fileKey:"zh/plugins/plugin-node-polyfill"},{text:"Image Compress \u63D2\u4EF6",link:"/plugins/plugin-image-compress",_fileKey:"zh/plugins/plugin-image-compress"}],link:"",collapsed:!1}]},title:"Modern.js Builder",outlineTitle:"\u76EE\u5F55",prevPageText:"\u4E0A\u4E00\u9875",nextPageText:"\u4E0B\u4E00\u9875",description:"\u57FA\u4E8E Rspack \u7684 Web \u6784\u5EFA\u5DE5\u5177"},{lang:"en",label:"English",nav:[{text:"Guide",link:"/en/guide/introduction",activeMatch:"/guide/"},{text:"API",link:"/en/api/",activeMatch:"/api/"},{text:"Plugins",link:"/en/plugins/introduction",activeMatch:"/plugins/"}],sidebar:{"/en/guide/":[{collapsed:!1,collapsible:!1,text:"Getting Started",items:[{text:"Introduction",link:"/en/guide/introduction",_fileKey:"en/guide/introduction"},{text:"Quick Start",link:"/en/guide/quick-start",_fileKey:"en/guide/quick-start"},{text:"Glossary",link:"/en/guide/glossary",_fileKey:"en/guide/glossary"},{text:"All Features",link:"/en/guide/features",_fileKey:"en/guide/features"}],link:""},{collapsible:!1,text:"Basic",items:[{text:"Builder Config",link:"/en/guide/basic/builder-config",_fileKey:"en/guide/basic/builder-config"},{text:"Build Target",link:"/en/guide/basic/build-target",_fileKey:"en/guide/basic/build-target"},{text:"CSS Usage",link:"/en/guide/basic/css-usage",_fileKey:"en/guide/basic/css-usage"},{text:"HTML Template",link:"/en/guide/basic/html-template",_fileKey:"en/guide/basic/html-template"},{text:"Use TypeScript",link:"/en/guide/basic/typescript",_fileKey:"en/guide/basic/typescript"},{text:"Use Builder CLI",link:"/en/guide/basic/builder-cli",_fileKey:"en/guide/basic/builder-cli"}],link:"",collapsed:!1},{collapsible:!1,text:"Advanced",items:[{text:"Using Rspack",link:"/en/guide/advanced/rspack-start",_fileKey:"en/guide/advanced/rspack-start"},{text:"Environment Variables",link:"/en/guide/advanced/define",_fileKey:"en/guide/advanced/define"},{text:"Hot Module Replacement",link:"/en/guide/advanced/hmr",_fileKey:"en/guide/advanced/hmr"},{text:"REM adaptation",link:"/en/guide/advanced/rem",_fileKey:"en/guide/advanced/rem"},{text:"Browserslist",link:"/en/guide/advanced/browserslist",_fileKey:"en/guide/advanced/browserslist"},{text:"Browser Compatibility",link:"/en/guide/advanced/browser-compatibility",_fileKey:"en/guide/advanced/browser-compatibility"},{text:"Custom webpack config",link:"/en/guide/advanced/custom-webpack-config",_fileKey:"en/guide/advanced/custom-webpack-config"},{text:"Using Storybook",link:"/en/guide/advanced/storybook",_fileKey:"en/guide/advanced/storybook"}],link:"",collapsed:!1},{collapsible:!1,text:"Framework",items:[{text:"Build Vue 3 App",link:"/en/guide/framework/vue3",_fileKey:"en/guide/framework/vue3"},{text:"Build Vue 2 App",link:"/en/guide/framework/vue2",_fileKey:"en/guide/framework/vue2"}],link:"",collapsed:!1},{collapsible:!1,text:"Optimization",items:[{text:"Chunk Splitting Practice",link:"/en/guide/optimization/split-chunk",_fileKey:"en/guide/optimization/split-chunk"}],link:"",collapsed:!1},{collapsible:!1,text:"Debug",items:[{text:"Debug Mode",link:"/en/guide/debug/debug-mode",_fileKey:"en/guide/debug/debug-mode"}],link:"",collapsed:!1},{collapsible:!1,text:"FAQ",items:[{text:"General FAQ",link:"/en/guide/faq/general",_fileKey:"en/guide/faq/general"},{text:"Features FAQ",link:"/en/guide/faq/features",_fileKey:"en/guide/faq/features"},{text:"Exceptions FAQ",link:"/en/guide/faq/exceptions",_fileKey:"en/guide/faq/exceptions"},{text:"HMR FAQ",link:"/en/guide/faq/hmr",_fileKey:"en/guide/faq/hmr"}],link:"",collapsed:!1}],"/en/api/":[{text:"API Reference",link:"/en/api/"},{text:"Config",collapsible:!1,items:[{text:"Source Config",link:"/en/api/config-source",_fileKey:"en/api/config-source"},{text:"Html Config",link:"/en/api/config-html",_fileKey:"en/api/config-html"},{text:"Security Config",link:"/en/api/config-security",_fileKey:"en/api/config-security"},{text:"Dev Config",link:"/en/api/config-dev",_fileKey:"en/api/config-dev"},{text:"Output Config",link:"/en/api/config-output",_fileKey:"en/api/config-output"},{text:"Tools Config",link:"/en/api/config-tools",_fileKey:"en/api/config-tools"},{text:"Performance Config",link:"/en/api/config-performance",_fileKey:"en/api/config-performance"},{text:"Experiments Config",link:"/en/api/config-experiments",_fileKey:"en/api/config-experiments"}],link:"",collapsed:!1},{text:"Node API",collapsible:!1,items:[{text:"Builder Core",link:"/en/api/builder-core",_fileKey:"en/api/builder-core"},{text:"Builder Instance",link:"/en/api/builder-instance",_fileKey:"en/api/builder-instance"},{text:"Builder Types",link:"/en/api/builder-types",_fileKey:"en/api/builder-types"}],link:"",collapsed:!1},{text:"Plugin API",collapsible:!1,items:[{text:"Plugin Core",link:"/en/api/plugin-core",_fileKey:"en/api/plugin-core"},{text:"Plugin Hooks",link:"/en/api/plugin-hooks",_fileKey:"en/api/plugin-hooks"}],link:"",collapsed:!1}],"/en/plugins":[{collapsible:!1,text:"Guide",items:[{text:"Introduce to Plugin",link:"/en/plugins/introduction",_fileKey:"en/plugins/introduction"}],link:"",collapsed:!1},{collapsible:!1,text:"List",items:[{text:"Overview",link:"/en/plugins/list",_fileKey:"en/plugins/list"},{text:"Vue Plugin",link:"/en/plugins/plugin-vue",_fileKey:"en/plugins/plugin-vue"},{text:"Vue 2 Plugin",link:"/en/plugins/plugin-vue2",_fileKey:"en/plugins/plugin-vue2"},{text:"SWC Plugin",link:"/en/plugins/plugin-swc",_fileKey:"en/plugins/plugin-swc"},{text:"Stylus Plugin",link:"/en/plugins/plugin-stylus",_fileKey:"en/plugins/plugin-stylus"},{text:"Esbuild Plugin",link:"/en/plugins/plugin-esbuild",_fileKey:"en/plugins/plugin-esbuild"},{text:"Node Polyfill Plugin",link:"/en/plugins/plugin-node-polyfill",_fileKey:"en/plugins/plugin-node-polyfill"},{text:"Image Compress Plugin",link:"/en/plugins/plugin-image-compress",_fileKey:"en/plugins/plugin-image-compress"}],link:"",collapsed:!1}]},title:"Modern.js Builder",description:"An Rspack-based build tool for web development."}],logo:"",ssg:!0,multiVersion:{default:"",versions:[]},search:{mode:"local"},pages:[{title:"Builder Core",routePath:"/builder/en/api/builder-core",lang:"en",toc:[{text:"createBuilder",id:"createbuilder",depth:2,charIndex:73},{text:"builderWebpackProvider",id:"builderwebpackprovider",depth:3,charIndex:331},{text:"builderRspackProvider",id:"builderrspackprovider",depth:3,charIndex:457},{text:"options",id:"options",depth:3,charIndex:580},{text:"mergeBuilderConfig",id:"mergebuilderconfig",depth:2,charIndex:1137},{text:"webpack",id:"webpack",depth:2,charIndex:1316},{text:"HtmlWebpackPlugin",id:"htmlwebpackplugin",depth:2,charIndex:1589}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/builder-core.mdx"},{title:"Builder Instance",routePath:"/builder/en/api/builder-instance",lang:"en",toc:[{text:"builder.context",id:"buildercontext",depth:2,charIndex:90},{text:"builder.context.entry",id:"buildercontextentry",depth:3,charIndex:182},{text:"builder.context.target",id:"buildercontexttarget",depth:3,charIndex:296},{text:"builder.context.rootPath",id:"buildercontextrootpath",depth:3,charIndex:413},{text:"builder.context.srcPath",id:"buildercontextsrcpath",depth:3,charIndex:542},{text:"builder.context.distPath",id:"buildercontextdistpath",depth:3,charIndex:621},{text:"builder.context.cachePath",id:"buildercontextcachepath",depth:3,charIndex:771},{text:"builder.context.configPath",id:"buildercontextconfigpath",depth:3,charIndex:856},{text:"builder.context.tsconfigPath",id:"buildercontexttsconfigpath",depth:3,charIndex:1010},{text:"builder.context.framework",id:"buildercontextframework",depth:3,charIndex:1173},{text:"builder.context.devServer",id:"buildercontextdevserver",depth:3,charIndex:1296},{text:"builder.context.bundlerType",id:"buildercontextbundlertype",depth:3,charIndex:1420},{text:"builder.build",id:"builderbuild",depth:2,charIndex:1498},{text:"Development environment build",id:"development-environment-build",depth:3,charIndex:1569},{text:"Monitor file changes",id:"monitor-file-changes",depth:3,charIndex:1695},{text:"Custom Compiler",id:"custom-compiler",depth:3,charIndex:1808},{text:"builder.startDevServer",id:"builderstartdevserver",depth:2,charIndex:1884},{text:"Disable Print URLs",id:"disable-print-urls",depth:3,charIndex:2260},{text:"Strict Port",id:"strict-port",depth:3,charIndex:2488},{text:"Custom Compiler",id:"custom-compiler-1",depth:3,charIndex:2705},{text:"Get Port Silently",id:"get-port-silently",depth:3,charIndex:2781},{text:"Custom Logger",id:"custom-logger",depth:3,charIndex:3083},{text:"builder.serve",id:"builderserve",depth:2,charIndex:3295},{text:"builder.createCompiler",id:"buildercreatecompiler",depth:2,charIndex:3619},{text:"builder.addPlugins",id:"builderaddplugins",depth:2,charIndex:3992},{text:"builder.removePlugins",id:"builderremoveplugins",depth:2,charIndex:4240},{text:"builder.isPluginExists",id:"builderispluginexists",depth:2,charIndex:4490},{text:"builder.inspectConfig",id:"builderinspectconfig",depth:2,charIndex:4591},{text:"builder.onBeforeCreateCompiler",id:"builderonbeforecreatecompiler",depth:2,charIndex:5091},{text:"builder.onAfterCreateCompiler",id:"builderonaftercreatecompiler",depth:2,charIndex:5634},{text:"builder.onBeforeBuild",id:"builderonbeforebuild",depth:2,charIndex:6168},{text:"builder.onAfterBuild",id:"builderonafterbuild",depth:2,charIndex:6716},{text:"builder.onBeforeStartDevServer",id:"builderonbeforestartdevserver",depth:2,charIndex:7059},{text:"builder.onAfterStartDevServer",id:"builderonafterstartdevserver",depth:2,charIndex:7166},{text:"builder.onDevCompileDone",id:"builderondevcompiledone",depth:2,charIndex:7327},{text:"builder.onExit",id:"builderonexit",depth:2,charIndex:7501},{text:"builder.getBuilderConfig",id:"buildergetbuilderconfig",depth:2,charIndex:7632},{text:"builder.getNormalizedConfig",id:"buildergetnormalizedconfig",depth:2,charIndex:7785},{text:"builder.getHTMLPaths",id:"buildergethtmlpaths",depth:2,charIndex:8241}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/builder-instance.mdx"},{title:"Builder Types",routePath:"/builder/en/api/builder-types",lang:"en",toc:[{text:"BuilderInstance",id:"builderinstance",depth:2,charIndex:81},{text:"BuilderContext",id:"buildercontext",depth:2,charIndex:258},{text:"BuilderPlugin",id:"builderplugin",depth:2,charIndex:337},{text:"BuilderTarget",id:"buildertarget",depth:2,charIndex:459},{text:"BuilderEntry",id:"builderentry",depth:2,charIndex:505},{text:"CreateBuilderOptions",id:"createbuilderoptions",depth:2,charIndex:582}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/builder-types.mdx"},{title:"Dev Config",routePath:"/builder/en/api/config-dev",lang:"en",toc:[{text:"dev.assetPrefix",id:"devassetprefix",depth:2,charIndex:73},{text:"Boolean Type",id:"boolean-type",depth:3,charIndex:567},{text:"String type",id:"string-type",depth:3,charIndex:767},{text:"Differences from Native Configuration",id:"differences-from-native-configuration",depth:3,charIndex:901},{text:"dev.beforeStartUrl",id:"devbeforestarturl",depth:2,charIndex:1406},{text:"dev.hmr",id:"devhmr",depth:2,charIndex:1628},{text:"dev.host",id:"devhost",depth:2,charIndex:1791},{text:"dev.https",id:"devhttps",depth:2,charIndex:2119},{text:"Automatically generate certificates",id:"automatically-generate-certificates",depth:4,charIndex:2318},{text:"Manually set the certificate",id:"manually-set-the-certificate",depth:4,charIndex:2919},{text:"dev.port",id:"devport",depth:2,charIndex:3202},{text:"Example",id:"example",depth:3,charIndex:3414},{text:"dev.progressBar",id:"devprogressbar",depth:2,charIndex:3450},{text:"dev.startUrl",id:"devstarturl",depth:2,charIndex:3663},{text:"Port placeholder",id:"port-placeholder",depth:3,charIndex:3944},{text:"Open the specified browser",id:"open-the-specified-browser",depth:3,charIndex:4160}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-dev.mdx"},{title:"Experiments Config",routePath:"/builder/en/api/config-experiments",lang:"en",toc:[{text:"experiments.lazyCompilation",id:"experimentslazycompilation",depth:2,charIndex:230},{text:"Lazy Compilation for Dynamic Imports",id:"lazy-compilation-for-dynamic-imports",depth:3,charIndex:612},{text:"Lazy Compilation for Entires",id:"lazy-compilation-for-entires",depth:3,charIndex:955},{text:"Limitations",id:"limitations",depth:3,charIndex:1603},{text:"Disable split chunks",id:"disable-split-chunks",depth:4,charIndex:1617},{text:"Use proxy",id:"use-proxy",depth:4,charIndex:1920},{text:"Other Potential Issues",id:"other-potential-issues",depth:4,charIndex:2164},{text:"experiments.sourceBuild",id:"experimentssourcebuild",depth:2,charIndex:2540},{text:"Options",id:"options",depth:3,charIndex:2933}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-experiments.mdx"},{title:"Html Config",routePath:"/builder/en/api/config-html",lang:"en",toc:[{text:"html.appIcon",id:"htmlappicon",depth:2,charIndex:74},{text:"Example",id:"example",depth:3,charIndex:524},{text:"html.crossorigin",id:"htmlcrossorigin",depth:2,charIndex:672},{text:"Example",id:"example-1",depth:3,charIndex:-1},{text:"Optional Values",id:"optional-values",depth:3,charIndex:-1},{text:"html.disableHtmlFolder",id:"htmldisablehtmlfolder",depth:2,charIndex:-1},{text:"Example",id:"example-2",depth:3,charIndex:524},{text:"html.favicon",id:"htmlfavicon",depth:2,charIndex:-1},{text:"Example",id:"example-3",depth:3,charIndex:-1},{text:"html.faviconByEntries",id:"htmlfaviconbyentries",depth:2,charIndex:-1},{text:"Example",id:"example-4",depth:3,charIndex:524},{text:"html.inject",id:"htmlinject",depth:2,charIndex:-1},{text:"Default inject position",id:"default-inject-position",depth:4,charIndex:-1},{text:"Inject into body",id:"inject-into-body",depth:4,charIndex:-1},{text:"html.injectByEntries",id:"htmlinjectbyentries",depth:2,charIndex:-1},{text:"Example",id:"example-5",depth:3,charIndex:-1},{text:"html.meta",id:"htmlmeta",depth:2,charIndex:-1},{text:"Example",id:"example-6",depth:3,charIndex:524},{text:"html.metaByEntries",id:"htmlmetabyentries",depth:2,charIndex:-1},{text:"Example",id:"example-7",depth:3,charIndex:-1},{text:"html.mountId",id:"htmlmountid",depth:2,charIndex:-1},{text:"Example",id:"example-8",depth:3,charIndex:524},{text:"Notes",id:"notes",depth:3,charIndex:-1},{text:"Update Relevant Code",id:"update-relevant-code",depth:4,charIndex:-1},{text:"Custom Templates",id:"custom-templates",depth:4,charIndex:-1},{text:"html.scriptLoading",id:"htmlscriptloading",depth:2,charIndex:-1},{text:"defer",id:"defer",depth:3,charIndex:-1},{text:"blocking",id:"blocking",depth:3,charIndex:-1},{text:"module",id:"module",depth:3,charIndex:-1},{text:"html.tags",id:"htmltags",depth:2,charIndex:-1},{text:"Tag Object",id:"tag-object",depth:4,charIndex:-1},{text:"Tags Handler",id:"tags-handler",depth:4,charIndex:-1},{text:"Limitation",id:"limitation",depth:4,charIndex:-1},{text:"html.tagsByEntries",id:"htmltagsbyentries",depth:2,charIndex:-1},{text:"Example",id:"example-9",depth:3,charIndex:-1},{text:"html.template",id:"htmltemplate",depth:2,charIndex:-1},{text:"Example",id:"example-10",depth:3,charIndex:524},{text:"html.templateByEntries",id:"htmltemplatebyentries",depth:2,charIndex:-1},{text:"Example",id:"example-11",depth:3,charIndex:-1},{text:"html.templateParameters",id:"htmltemplateparameters",depth:2,charIndex:-1},{text:"html.templateParametersByEntries",id:"htmltemplateparametersbyentries",depth:2,charIndex:-1},{text:"Example",id:"example-12",depth:3,charIndex:524},{text:"html.title",id:"htmltitle",depth:2,charIndex:-1},{text:"html.titleByEntries",id:"htmltitlebyentries",depth:2,charIndex:-1},{text:"Example",id:"example-13",depth:3,charIndex:-1}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-html.mdx"},{title:"Output Config",routePath:"/builder/en/api/config-output",lang:"en",toc:[{text:"output.assetPrefix",id:"outputassetprefix",depth:2,charIndex:-1},{text:"Example",id:"example",depth:3,charIndex:-1},{text:"Differences from Native Configuration",id:"differences-from-native-configuration",depth:3,charIndex:-1},{text:"output.assetsRetry",id:"outputassetsretry",depth:2,charIndex:-1},{text:"assetsRetry.domain",id:"assetsretrydomain",depth:3,charIndex:-1},{text:"assetsRetry.type",id:"assetsretrytype",depth:3,charIndex:-1},{text:"assetsRetry.max",id:"assetsretrymax",depth:3,charIndex:-1},{text:"assetsRetry.test",id:"assetsretrytest",depth:3,charIndex:-1},{text:"assetsRetry.crossOrigin",id:"assetsretrycrossorigin",depth:3,charIndex:-1},{text:"assetsRetry.onRetry",id:"assetsretryonretry",depth:3,charIndex:-1},{text:"assetsRetry.onSuccess",id:"assetsretryonsuccess",depth:3,charIndex:-1},{text:"assetsRetry.onFail",id:"assetsretryonfail",depth:3,charIndex:-1},{text:"assetsRetry.inlineScript",id:"assetsretryinlinescript",depth:3,charIndex:-1},{text:"Notes",id:"notes",depth:3,charIndex:-1},{text:"Limitation",id:"limitation",depth:3,charIndex:-1},{text:"Micro-frontend application",id:"micro-frontend-application",depth:4,charIndex:-1},{text:"Dynamic import resources",id:"dynamic-import-resources",depth:4,charIndex:-1},{text:"Resources in custom templates",id:"resources-in-custom-templates",depth:4,charIndex:-1},{text:"output.charset",id:"outputcharset",depth:2,charIndex:-1},{text:"output.cleanDistPath",id:"outputcleandistpath",depth:2,charIndex:-1},{text:"output.convertToRem",id:"outputconverttorem",depth:2,charIndex:-1},{text:"Boolean Type",id:"boolean-type",depth:3,charIndex:-1},{text:"Object Type",id:"object-type",depth:3,charIndex:-1},{text:"Example",id:"example-1",depth:3,charIndex:-1},{text:"output.copy",id:"outputcopy",depth:2,charIndex:-1},{text:"output.cssModules",id:"outputcssmodules",depth:2,charIndex:-1},{text:"cssModules.auto",id:"cssmodulesauto",depth:3,charIndex:-1},{text:"cssModules.exportLocalsConvention",id:"cssmodulesexportlocalsconvention",depth:3,charIndex:-1},{text:"output.cssModuleLocalIdentName",id:"outputcssmodulelocalidentname",depth:2,charIndex:-1},{text:"Default Value",id:"default-value",depth:3,charIndex:-1},{text:"Template String",id:"template-string",depth:3,charIndex:-1},{text:"Example",id:"example-2",depth:3,charIndex:-1},{text:"output.dataUriLimit",id:"outputdataurilimit",depth:2,charIndex:-1},{text:"Example",id:"example-3",depth:3,charIndex:-1},{text:"output.disableCssExtract",id:"outputdisablecssextract",depth:2,charIndex:-1},{text:"Example",id:"example-4",depth:3,charIndex:-1},{text:"output.disableCssModuleExtension",id:"outputdisablecssmoduleextension",depth:2,charIndex:-1},{text:"Example",id:"example-5",depth:3,charIndex:-1},{text:"Detailed",id:"detailed",depth:3,charIndex:-1},{text:"disableCssModuleExtension is false (default)",id:"disablecssmoduleextension-is-false-default",depth:4,charIndex:-1},{text:"disableCssModuleExtension is true",id:"disablecssmoduleextension-is-true",depth:4,charIndex:-1},{text:"output.distPath",id:"outputdistpath",depth:2,charIndex:-1},{text:"Root Directory",id:"root-directory",depth:3,charIndex:-1},{text:"Example",id:"example-6",depth:3,charIndex:-1},{text:"output.disableMinimize",id:"outputdisableminimize",depth:2,charIndex:-1},{text:"output.disableSourceMap",id:"outputdisablesourcemap",depth:2,charIndex:-1},{text:"output.disableSvgr",id:"outputdisablesvgr",depth:2,charIndex:-1},{text:"output.disableTsChecker",id:"outputdisabletschecker",depth:2,charIndex:-1},{text:"Blocking Compilation",id:"blocking-compilation",depth:3,charIndex:-1},{text:"Example",id:"example-7",depth:3,charIndex:-1},{text:"output.disableFilenameHash",id:"outputdisablefilenamehash",depth:2,charIndex:-1},{text:"Example",id:"example-8",depth:3,charIndex:-1},{text:"output.disableInlineRuntimeChunk",id:"outputdisableinlineruntimechunk",depth:2,charIndex:-1},{text:"Disable Inlining",id:"disable-inlining",depth:3,charIndex:-1},{text:"Merge Into Page Chunk",id:"merge-into-page-chunk",depth:3,charIndex:-1},{text:"output.enableAssetManifest",id:"outputenableassetmanifest",depth:2,charIndex:-1},{text:"Example",id:"example-9",depth:3,charIndex:-1},{text:"output.enableAssetFallback",id:"outputenableassetfallback",depth:2,charIndex:-1},{text:"Example",id:"example-10",depth:3,charIndex:-1},{text:"output.enableLatestDecorators",id:"outputenablelatestdecorators",depth:2,charIndex:-1},{text:"output.enableCssModuleTSDeclaration",id:"outputenablecssmoduletsdeclaration",depth:2,charIndex:-1},{text:"Example",id:"example-11",depth:3,charIndex:-1},{text:"output.enableInlineScripts",id:"outputenableinlinescripts",depth:2,charIndex:-1},{text:"Example",id:"example-12",depth:3,charIndex:-1},{text:"Using RegExp",id:"using-regexp",depth:3,charIndex:-1},{text:"Using Function",id:"using-function",depth:3,charIndex:-1},{text:"output.enableInlineStyles",id:"outputenableinlinestyles",depth:2,charIndex:-1},{text:"Example",id:"example-13",depth:3,charIndex:-1},{text:"Using RegExp",id:"using-regexp-1",depth:3,charIndex:-1},{text:"Using Function",id:"using-function-1",depth:3,charIndex:-1},{text:"output.externals",id:"outputexternals",depth:2,charIndex:-1},{text:"Example",id:"example-14",depth:3,charIndex:-1},{text:"output.filename",id:"outputfilename",depth:2,charIndex:-1},{text:"Example",id:"example-15",depth:3,charIndex:-1},{text:"Filename of Async Modules",id:"filename-of-async-modules",depth:3,charIndex:-1},{text:"output.legalComments",id:"outputlegalcomments",depth:2,charIndex:-1},{text:"Example",id:"example-16",depth:3,charIndex:-1},{text:"output.overrideBrowserslist",id:"outputoverridebrowserslist",depth:2,charIndex:-1},{text:"Priority",id:"priority",depth:4,charIndex:-1},{text:"Default Value",id:"default-value-1",depth:4,charIndex:-1},{text:"Example",id:"example-17",depth:3,charIndex:-1},{text:"Set according to Targets",id:"set-according-to-targets",depth:4,charIndex:-1},{text:"output.polyfill",id:"outputpolyfill",depth:2,charIndex:-1},{text:"Config",id:"config",depth:3,charIndex:-1},{text:"entry",id:"entry",depth:4,charIndex:-1},{text:"usage",id:"usage",depth:4,charIndex:-1},{text:"ua",id:"ua",depth:4,charIndex:-1},{text:"off",id:"off",depth:4,charIndex:-1},{text:"output.svgDefaultExport",id:"outputsvgdefaultexport",depth:2,charIndex:-1}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-output.mdx"},{title:"Performance Config",routePath:"/builder/en/api/config-performance",lang:"en",toc:[{text:"performance.buildCache",id:"performancebuildcache",depth:2,charIndex:89},{text:"cacheDigest",id:"cachedigest",depth:3,charIndex:534},{text:"Example",id:"example",depth:4,charIndex:799},{text:"performance.bundleAnalyze",id:"performancebundleanalyze",depth:2,charIndex:1195},{text:"Enable Bundle Analyze",id:"enable-bundle-analyze",depth:3,charIndex:1474},{text:"Override Default Configuration",id:"override-default-configuration",depth:3,charIndex:2048},{text:"Size Types",id:"size-types",depth:3,charIndex:2197},{text:"Generate stats.json",id:"generate-statsjson",depth:3,charIndex:2666},{text:"Notes",id:"notes",depth:3,charIndex:2792},{text:"performance.chunkSplit",id:"performancechunksplit",depth:2,charIndex:3326},{text:"chunkSplit.strategy",id:"chunksplitstrategy",depth:3,charIndex:3532},{text:"Default Strategy",id:"default-strategy",depth:3,charIndex:4081},{text:"chunkSplit.minSize",id:"chunksplitminsize",depth:3,charIndex:5041},{text:"chunkSplit.maxSize",id:"chunksplitmaxsize",depth:3,charIndex:5296},{text:"chunkSplit.forceSplitting",id:"chunksplitforcesplitting",depth:3,charIndex:5557},{text:"chunkSplit.splitChunks",id:"chunksplitsplitchunks",depth:3,charIndex:-1},{text:"chunkSplit.override",id:"chunksplitoverride",depth:3,charIndex:-1},{text:"performance.dnsPrefetch",id:"performancednsprefetch",depth:2,charIndex:-1},{text:"Example",id:"example-1",depth:3,charIndex:-1},{text:"performance.preconnect",id:"performancepreconnect",depth:2,charIndex:-1},{text:"Example",id:"example-2",depth:3,charIndex:799},{text:"performance.prefetch",id:"performanceprefetch",depth:2,charIndex:-1},{text:"Boolean Type",id:"boolean-type",depth:3,charIndex:-1},{text:"Object Type",id:"object-type",depth:3,charIndex:-1},{text:"prefetch.type",id:"prefetchtype",depth:4,charIndex:-1},{text:"Example",id:"example-3",depth:4,charIndex:-1},{text:"performance.preload",id:"performancepreload",depth:2,charIndex:-1},{text:"Boolean Type",id:"boolean-type-1",depth:3,charIndex:-1},{text:"Object Type",id:"object-type-1",depth:3,charIndex:-1},{text:"preload.type",id:"preloadtype",depth:4,charIndex:-1},{text:"Example",id:"example-4",depth:4,charIndex:799},{text:"performance.printFileSize",id:"performanceprintfilesize",depth:2,charIndex:-1},{text:"Example",id:"example-5",depth:3,charIndex:-1},{text:"performance.profile",id:"performanceprofile",depth:2,charIndex:-1},{text:"Example",id:"example-6",depth:3,charIndex:799},{text:"performance.removeConsole",id:"performanceremoveconsole",depth:2,charIndex:-1},{text:"Remove all consoles",id:"remove-all-consoles",depth:4,charIndex:-1},{text:"Remove specific console",id:"remove-specific-console",depth:4,charIndex:-1},{text:"performance.removeMomentLocale",id:"performanceremovemomentlocale",depth:2,charIndex:-1},{text:"performance.transformLodash",id:"performancetransformlodash",depth:2,charIndex:-1},{text:"Example",id:"example-7",depth:3,charIndex:-1},{text:"Disabling the Transformation",id:"disabling-the-transformation",depth:3,charIndex:-1}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-performance.mdx"},{title:"Security Config",routePath:"/builder/en/api/config-security",lang:"en",toc:[{text:"security.sri",id:"securitysri",depth:2,charIndex:86},{text:"Introduce SRI",id:"introduce-sri",depth:4,charIndex:479},{text:"Example",id:"example",depth:4,charIndex:955},{text:"security.checkSyntax",id:"securitychecksyntax",depth:2,charIndex:1136},{text:"Enable Detection",id:"enable-detection",depth:3,charIndex:1401},{text:"Error Logs",id:"error-logs",depth:3,charIndex:1740},{text:"Solutions",id:"solutions",depth:3,charIndex:2287},{text:"Options",id:"options",depth:3,charIndex:2792},{text:"checkSyntax.targets",id:"checksyntaxtargets",depth:4,charIndex:2802},{text:"checkSyntax.ecmaVersion",id:"checksyntaxecmaversion",depth:4,charIndex:3845},{text:"checkSyntax.exclude",id:"checksyntaxexclude",depth:4,charIndex:4435}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-security.mdx"},{title:"Source Config",routePath:"/builder/en/api/config-source",lang:"en",toc:[{text:"source.alias",id:"sourcealias",depth:2,charIndex:104},{text:"Object Type",id:"object-type",depth:3,charIndex:549},{text:"Function Type",id:"function-type",depth:3,charIndex:787},{text:"Exact Matching",id:"exact-matching",depth:3,charIndex:1020},{text:"Handling npm packages",id:"handling-npm-packages",depth:3,charIndex:1307},{text:"source.aliasStrategy",id:"sourcealiasstrategy",depth:2,charIndex:1962},{text:"prefer-tsconfig",id:"prefer-tsconfig",depth:3,charIndex:2194},{text:"prefer-alias",id:"prefer-alias",depth:3,charIndex:2796},{text:"source.include",id:"sourceinclude",depth:2,charIndex:3561},{text:"Compile Npm Packages",id:"compile-npm-packages",depth:3,charIndex:4212},{text:"Compile Sub Dependencies",id:"compile-sub-dependencies",depth:3,charIndex:4927},{text:"Compile Libraries in Monorepo",id:"compile-libraries-in-monorepo",depth:3,charIndex:5293},{text:"Compile CommonJS Module",id:"compile-commonjs-module",depth:3,charIndex:5487},{text:"Matching Symlink",id:"matching-symlink",depth:3,charIndex:5902},{text:"Precautions",id:"precautions",depth:3,charIndex:6323},{text:"source.exclude",id:"sourceexclude",depth:2,charIndex:6809},{text:"source.define",id:"sourcedefine",depth:2,charIndex:7083},{text:"Example",id:"example",depth:3,charIndex:7840},{text:"source.globalVars",id:"sourceglobalvars",depth:2,charIndex:7924},{text:"Example",id:"example-1",depth:3,charIndex:8108},{text:"Function Usage",id:"function-usage",depth:3,charIndex:8255},{text:"Difference with define",id:"difference-with-define",depth:3,charIndex:8444},{text:"Precautions",id:"precautions-1",depth:3,charIndex:8765},{text:"source.moduleScopes",id:"sourcemodulescopes",depth:2,charIndex:9139},{text:"Example",id:"example-2",depth:3,charIndex:9414},{text:"Array Type",id:"array-type",depth:3,charIndex:9715},{text:"Function Type",id:"function-type-1",depth:3,charIndex:9778},{text:"source.transformImport",id:"sourcetransformimport",depth:2,charIndex:9911},{text:"Example",id:"example-3",depth:3,charIndex:10781},{text:"Disable Default Config",id:"disable-default-config",depth:3,charIndex:10910},{text:"Configuration",id:"configuration",depth:3,charIndex:11277},{text:"libraryName",id:"libraryname",depth:4,charIndex:11293},{text:"libraryDirectory",id:"librarydirectory",depth:4,charIndex:11380},{text:"style",id:"style",depth:4,charIndex:11596},{text:"styleLibraryDirectory",id:"stylelibrarydirectory",depth:4,charIndex:11879},{text:"camelToDashComponentName",id:"cameltodashcomponentname",depth:4,charIndex:12218},{text:"transformToDefaultImport",id:"transformtodefaultimport",depth:4,charIndex:12353},{text:"customName",id:"customname",depth:4,charIndex:12493},{text:"customStyleName",id:"customstylename",depth:4,charIndex:13366},{text:"source.preEntry",id:"sourcepreentry",depth:2,charIndex:14251},{text:"Add a single script",id:"add-a-single-script",depth:4,charIndex:14518},{text:"Add global style",id:"add-global-style",depth:4,charIndex:14792},{text:"Add multiple scripts",id:"add-multiple-scripts",depth:4,charIndex:14978},{text:"source.resolveExtensionPrefix",id:"sourceresolveextensionprefix",depth:2,charIndex:15109},{text:"Example",id:"example-4",depth:3,charIndex:15390},{text:"Set according to Targets",id:"set-according-to-targets",depth:4,charIndex:15569},{text:"source.resolveMainFields",id:"sourceresolvemainfields",depth:2,charIndex:16035},{text:"Example",id:"example-5",depth:3,charIndex:16238},{text:"Set according to Targets",id:"set-according-to-targets-1",depth:4,charIndex:16250}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-source.mdx"},{title:"Tools Config",routePath:"/builder/en/api/config-tools",lang:"en",toc:[{text:"tools.autoprefixer",id:"toolsautoprefixer",depth:2,charIndex:85},{text:"Object Type",id:"object-type",depth:3,charIndex:215},{text:"Function Type",id:"function-type",depth:3,charIndex:360},{text:"tools.babel",id:"toolsbabel",depth:2,charIndex:546},{text:"Usage Scenarios",id:"usage-scenarios",depth:3,charIndex:673},{text:"Function Type",id:"function-type-1",depth:3,charIndex:1260},{text:"Object Type",id:"object-type-1",depth:3,charIndex:1850},{text:"Util Functions",id:"util-functions",depth:3,charIndex:2124},{text:"addPlugins",id:"addplugins",depth:4,charIndex:2244},{text:"addPresets",id:"addpresets",depth:4,charIndex:2340},{text:"removePlugins",id:"removeplugins",depth:4,charIndex:2470},{text:"removePresets",id:"removepresets",depth:4,charIndex:2671},{text:"modifyPresetEnvOptions",id:"modifypresetenvoptions",depth:4,charIndex:2881},{text:"modifyPresetReactOptions",id:"modifypresetreactoptions",depth:4,charIndex:3091},{text:"addIncludes",id:"addincludes",depth:4,charIndex:3307},{text:"addExcludes",id:"addexcludes",depth:4,charIndex:3403},{text:"Debugging Babel Configuration",id:"debugging-babel-configuration",depth:3,charIndex:3500},{text:"tools.bundlerChain",id:"toolsbundlerchain",depth:2,charIndex:3887},{text:"tools.cssExtract",id:"toolscssextract",depth:2,charIndex:4986},{text:"Object Type",id:"object-type-2",depth:3,charIndex:5163},{text:"Function Type",id:"function-type-2",depth:3,charIndex:5280},{text:"tools.cssLoader",id:"toolscssloader",depth:2,charIndex:5547},{text:"Object Type",id:"object-type-3",depth:3,charIndex:5932},{text:"Function Type",id:"function-type-3",depth:3,charIndex:6046},{text:"tools.devServer",id:"toolsdevserver",depth:2,charIndex:6249},{text:"Options",id:"options",depth:3,charIndex:6503},{text:"after",id:"after",depth:4,charIndex:6513},{text:"before",id:"before",depth:4,charIndex:7087},{text:"client",id:"client",depth:4,charIndex:7240},{text:"compress",id:"compress",depth:4,charIndex:7359},{text:"devMiddleware",id:"devmiddleware",depth:4,charIndex:7546},{text:"headers",id:"headers",depth:4,charIndex:7676},{text:"historyApiFallback",id:"historyapifallback",depth:4,charIndex:7759},{text:"hot",id:"hot",depth:4,charIndex:8081},{text:"https",id:"https",depth:4,charIndex:8162},{text:"liveReload",id:"livereload",depth:4,charIndex:8505},{text:"setupMiddlewares",id:"setupmiddlewares",depth:4,charIndex:8773},{text:"proxy",id:"proxy",depth:4,charIndex:9335},{text:"watch",id:"watch",depth:4,charIndex:10292},{text:"tools.htmlPlugin",id:"toolshtmlplugin",depth:2,charIndex:10412},{text:"Object Type",id:"object-type-4",depth:3,charIndex:10583},{text:"Function Type",id:"function-type-4",depth:3,charIndex:10707},{text:"Boolean Type",id:"boolean-type",depth:3,charIndex:10997},{text:"Disable JS/CSS minify",id:"disable-jscss-minify",depth:3,charIndex:11107},{text:"tools.less",id:"toolsless",depth:2,charIndex:11648},{text:"Object Type",id:"object-type-5",depth:3,charIndex:11762},{text:"Function Type",id:"function-type-5",depth:3,charIndex:11995},{text:"Modifying Less Version",id:"modifying-less-version",depth:3,charIndex:12258},{text:"Util Function",id:"util-function",depth:3,charIndex:12519},{text:"addExcludes",id:"addexcludes-1",depth:4,charIndex:12535},{text:"tools.minifyCss",id:"toolsminifycss",depth:2,charIndex:12753},{text:"Object Type",id:"object-type-6",depth:3,charIndex:13010},{text:"Function Type",id:"function-type-6",depth:3,charIndex:13177},{text:"tools.postcss",id:"toolspostcss",depth:2,charIndex:13384},{text:"Function Type",id:"function-type-7",depth:3,charIndex:13539},{text:"Object Type",id:"object-type-7",depth:3,charIndex:14190},{text:"Util Functions",id:"util-functions-1",depth:3,charIndex:14433},{text:"addPlugins",id:"addplugins-1",depth:4,charIndex:14450},{text:"tools.pug",id:"toolspug",depth:2,charIndex:14840},{text:"Boolean Type",id:"boolean-type-1",depth:3,charIndex:14954},{text:"Object Type",id:"object-type-8",depth:3,charIndex:15151},{text:"Function Type",id:"function-type-8",depth:3,charIndex:15294},{text:"tools.sass",id:"toolssass",depth:2,charIndex:15509},{text:"Object Type",id:"object-type-9",depth:3,charIndex:15623},{text:"Function Type",id:"function-type-9",depth:3,charIndex:15826},{text:"Modifying Sass Version",id:"modifying-sass-version",depth:3,charIndex:16089},{text:"Utility Function",id:"utility-function",depth:3,charIndex:16355},{text:"addExcludes",id:"addexcludes-2",depth:4,charIndex:16374},{text:"tools.styleLoader",id:"toolsstyleloader",depth:2,charIndex:16592},{text:"Object Type",id:"object-type-10",depth:3,charIndex:16854},{text:"Function Type",id:"function-type-10",depth:3,charIndex:16971},{text:"tools.styledComponents",id:"toolsstyledcomponents",depth:2,charIndex:17174},{text:"tools.terser",id:"toolsterser",depth:2,charIndex:17816},{text:"Object Type",id:"object-type-11",depth:3,charIndex:18094},{text:"Function Type",id:"function-type-11",depth:3,charIndex:18262},{text:"tools.tsLoader",id:"toolstsloader",depth:2,charIndex:18590},{text:"Object Type",id:"object-type-12",depth:3,charIndex:19161},{text:"Function Type",id:"function-type-12",depth:3,charIndex:19405},{text:"Util Functions",id:"util-functions-2",depth:3,charIndex:19721},{text:"addIncludes",id:"addincludes-1",depth:4,charIndex:19738},{text:"addExcludes",id:"addexcludes-3",depth:4,charIndex:19834},{text:"tools.tsChecker",id:"toolstschecker",depth:2,charIndex:19931},{text:"Object Type",id:"object-type-13",depth:3,charIndex:20128},{text:"Function Type",id:"function-type-13",depth:3,charIndex:20250},{text:"tools.webpack",id:"toolswebpack",depth:2,charIndex:20480},{text:"Object Type",id:"object-type-14",depth:3,charIndex:20797},{text:"Function Type",id:"function-type-14",depth:3,charIndex:20988},{text:"Utils",id:"utils",depth:3,charIndex:21366},{text:"env",id:"env",depth:4,charIndex:21493},{text:"isProd",id:"isprod",depth:4,charIndex:21674},{text:"target",id:"target",depth:4,charIndex:21810},{text:"isServer",id:"isserver",depth:4,charIndex:21956},{text:"isWebWorker",id:"iswebworker",depth:4,charIndex:22072},{text:"webpack",id:"webpack",depth:4,charIndex:22203},{text:"HtmlWebpackPlugin",id:"htmlwebpackplugin",depth:4,charIndex:22286},{text:"addRules",id:"addrules",depth:4,charIndex:22388},{text:"prependPlugins",id:"prependplugins",depth:4,charIndex:22501},{text:"appendPlugins",id:"appendplugins",depth:4,charIndex:22711},{text:"removePlugin",id:"removeplugin",depth:4,charIndex:22914},{text:"mergeConfig",id:"mergeconfig",depth:4,charIndex:23120},{text:"getCompiledPath",id:"getcompiledpath",depth:4,charIndex:23257},{text:"tools.webpackChain",id:"toolswebpackchain",depth:2,charIndex:23401},{text:"Utils",id:"utils-1",depth:3,charIndex:24118},{text:"env",id:"env-1",depth:4,charIndex:24126},{text:"isProd",id:"isprod-1",depth:4,charIndex:24307},{text:"target",id:"target-1",depth:4,charIndex:24443},{text:"isServer",id:"isserver-1",depth:4,charIndex:24594},{text:"isWebWorker",id:"iswebworker-1",depth:4,charIndex:24710},{text:"webpack",id:"webpack-1",depth:4,charIndex:24841},{text:"HtmlWebpackPlugin",id:"htmlwebpackplugin-1",depth:4,charIndex:24924},{text:"getCompiledPath",id:"getcompiledpath-1",depth:4,charIndex:25026},{text:"CHAIN_ID",id:"chain_id",depth:4,charIndex:25478},{text:"CHAIN_ID.RULE",id:"chain_idrule",depth:4,charIndex:25906},{text:"CHAIN_ID.ONE_OF",id:"chain_idone_of",depth:4,charIndex:26390},{text:"CHAIN_ID.USE",id:"chain_iduse",depth:4,charIndex:26849},{text:"CHAIN_ID.PLUGIN",id:"chain_idplugin",depth:4,charIndex:28075},{text:"CHAIN_ID.MINIMIZER",id:"chain_idminimizer",depth:4,charIndex:29616},{text:"Examples",id:"examples",depth:3,charIndex:29930},{text:"tools.rspack",id:"toolsrspack",depth:2,charIndex:30009},{text:"Object Type",id:"object-type-15",depth:3,charIndex:30162},{text:"Function Type",id:"function-type-15",depth:3,charIndex:30351},{text:"Utils",id:"utils-2",depth:3,charIndex:30843},{text:"env",id:"env-2",depth:4,charIndex:30851},{text:"isProd",id:"isprod-2",depth:4,charIndex:31032},{text:"target",id:"target-2",depth:4,charIndex:31168},{text:"isServer",id:"isserver-2",depth:4,charIndex:31314},{text:"isWebWorker",id:"iswebworker-2",depth:4,charIndex:31430},{text:"rspack",id:"rspack",depth:4,charIndex:31561},{text:"addRules",id:"addrules-1",depth:4,charIndex:31647},{text:"prependPlugins",id:"prependplugins-1",depth:4,charIndex:31759},{text:"appendPlugins",id:"appendplugins-1",depth:4,charIndex:31966},{text:"removePlugin",id:"removeplugin-1",depth:4,charIndex:32166},{text:"mergeConfig",id:"mergeconfig-1",depth:4,charIndex:32364},{text:"getCompiledPath",id:"getcompiledpath-2",depth:4,charIndex:32498}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/config-tools.mdx"},{title:"API",routePath:"/builder/en/api/",lang:"en",toc:[],frontmatter:{overview:!0},version:"",_relativePath:"en/api/index.mdx"},{title:"Plugin Core",routePath:"/builder/en/api/plugin-core",lang:"en",toc:[{text:"BuilderPlugin",id:"builderplugin",depth:2,charIndex:59},{text:"Pre-Plugins",id:"pre-plugins",depth:3,charIndex:974},{text:"Post-Plugins",id:"post-plugins",depth:3,charIndex:1296},{text:"Removing Plugins",id:"removing-plugins",depth:3,charIndex:1520},{text:"BuilderPluginAPI",id:"builderpluginapi",depth:2,charIndex:1787},{text:"Plugin for webpack-provider",id:"plugin-for-webpack-provider",depth:3,charIndex:2204},{text:"Plugins for rspack-provider",id:"plugins-for-rspack-provider",depth:3,charIndex:2357},{text:"Plugins for both webpack-provider and rspack-provider",id:"plugins-for-both-webpack-provider-and-rspack-provider",depth:3,charIndex:2508},{text:"api.context",id:"apicontext",depth:2,charIndex:3016},{text:"api.getBuilderConfig",id:"apigetbuilderconfig",depth:2,charIndex:3221},{text:"api.getNormalizedConfig",id:"apigetnormalizedconfig",depth:2,charIndex:3370},{text:"api.isPluginExists",id:"apiispluginexists",depth:2,charIndex:3822},{text:"api.getHTMLPaths",id:"apigethtmlpaths",depth:2,charIndex:3919}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/plugin-core.mdx"},{title:"Plugin Hooks",routePath:"/builder/en/api/plugin-hooks",lang:"en",toc:[{text:"Overview",id:"overview",depth:2,charIndex:74},{text:"Common Hooks",id:"common-hooks",depth:2,charIndex:1219},{text:"modifyBuilderConfig",id:"modifybuilderconfig",depth:3,charIndex:1235},{text:"modifyBundlerChain `experimental`",id:"modifybundlerchain-experimental",depth:3,charIndex:-1},{text:"modifyWebpackChain",id:"modifywebpackchain",depth:3,charIndex:2084},{text:"modifyWebpackConfig",id:"modifywebpackconfig",depth:3,charIndex:2241},{text:"modifyRspackConfig",id:"modifyrspackconfig",depth:3,charIndex:2550},{text:"onBeforeCreateCompiler",id:"onbeforecreatecompiler",depth:3,charIndex:2793},{text:"onAfterCreateCompiler",id:"onaftercreatecompiler",depth:3,charIndex:3328},{text:"Build Hooks",id:"build-hooks",depth:2,charIndex:3854},{text:"onBeforeBuild",id:"onbeforebuild",depth:3,charIndex:3869},{text:"onAfterBuild",id:"onafterbuild",depth:3,charIndex:4409},{text:"Dev Server Hooks",id:"dev-server-hooks",depth:2,charIndex:4744},{text:"onBeforeStartDevServer",id:"onbeforestartdevserver",depth:3,charIndex:4764},{text:"onAfterStartDevServer",id:"onafterstartdevserver",depth:3,charIndex:4863},{text:"onDevCompileDone",id:"ondevcompiledone",depth:3,charIndex:5016},{text:"Other Hooks",id:"other-hooks",depth:2,charIndex:5182},{text:"onExit",id:"onexit",depth:3,charIndex:5197}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"en/api/plugin-hooks.mdx"},{title:"Browser Compatibility",routePath:"/builder/en/guide/advanced/browser-compatibility",lang:"en",toc:[{text:"Set browserslist",id:"set-browserslist",depth:2,charIndex:119},{text:"Background knowledge",id:"background-knowledge",depth:2,charIndex:826},{text:"Syntax downgrade and API downgrade",id:"syntax-downgrade-and-api-downgrade",depth:3,charIndex:999},{text:"Syntax transpilation",id:"syntax-transpilation",depth:3,charIndex:1742},{text:"API Polyfill",id:"api-polyfill",depth:3,charIndex:3838},{text:"Downgrade method",id:"downgrade-method",depth:2,charIndex:5123},{text:"Downgrade the current project code",id:"downgrade-the-current-project-code",depth:3,charIndex:5967},{text:"Downgrade third-party dependencies",id:"downgrade-third-party-dependencies",depth:3,charIndex:6175},{text:"Downgrade the code out of the current project",id:"downgrade-the-code-out-of-the-current-project",depth:3,charIndex:6563},{text:"Polyfill mode",id:"polyfill-mode",depth:2,charIndex:6896},{text:"entry mode",id:"entry-mode",depth:3,charIndex:7205},{text:"usage mode",id:"usage-mode",depth:3,charIndex:7764},{text:"Disable Polyfill",id:"disable-polyfill",depth:3,charIndex:8640}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/browser-compatibility.md"},{title:"Browserslist",routePath:"/builder/en/guide/advanced/browserslist",lang:"en",toc:[{text:"What is Browserslist",id:"what-is-browserslist",depth:2,charIndex:111},{text:"Set Browserslist",id:"set-browserslist",depth:2,charIndex:1740},{text:"Example",id:"example",depth:3,charIndex:1886},{text:"Effective Scope",id:"effective-scope",depth:3,charIndex:1982},{text:"Use output.overrideBrowserslist config",id:"use-outputoverridebrowserslist-config",depth:3,charIndex:2424},{text:"Commonly used Browserslist",id:"commonly-used-browserslist",depth:2,charIndex:3403},{text:"Desktop PC scenario",id:"desktop-pc-scenario",depth:3,charIndex:3532},{text:"Mobile H5 scenario",id:"mobile-h5-scenario",depth:3,charIndex:4035},{text:"Default Browserslist",id:"default-browserslist",depth:2,charIndex:4532},{text:"Web Target",id:"web-target",depth:3,charIndex:4777},{text:"Node Target",id:"node-target",depth:3,charIndex:4918},{text:"Web Worker Target",id:"web-worker-target",depth:3,charIndex:4997},{text:"Modern Web Target",id:"modern-web-target",depth:3,charIndex:5106},{text:"Query browser support",id:"query-browser-support",depth:2,charIndex:5224}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/browserslist.md"},{title:"Custom webpack config",routePath:"/builder/en/guide/advanced/custom-webpack-config",lang:"en",toc:[{text:"Modify the webpack configuration object",id:"modify-the-webpack-configuration-object",depth:2,charIndex:156},{text:"Using webpack-chain",id:"using-webpack-chain",depth:2,charIndex:502},{text:"tools.webpackChain config",id:"toolswebpackchain-config",depth:3,charIndex:799},{text:"webpack-chain Basics",id:"webpack-chain-basics",depth:2,charIndex:1216},{text:"How does webpack-chain locate",id:"how-does-webpack-chain-locate",depth:3,charIndex:1367},{text:"webpack-chain id type",id:"webpack-chain-id-type",depth:3,charIndex:1937},{text:"webpack-chain Demo",id:"webpack-chain-demo",depth:2,charIndex:2659},{text:"Add/Modify/Delete loader",id:"addmodifydelete-loader",depth:3,charIndex:2681},{text:"Add/Modify/Delete plugin",id:"addmodifydelete-plugin",depth:3,charIndex:2711},{text:"Modify the config according to environment",id:"modify-the-config-according-to-environment",depth:3,charIndex:2741}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/custom-webpack-config.md"},{title:"Environment Variables",routePath:"/builder/en/guide/advanced/define",lang:"en",toc:[{text:"Default Variables",id:"default-variables",depth:2,charIndex:250},{text:"process.env.NODE_ENV",id:"processenvnode_env",depth:3,charIndex:271},{text:"process.env.ASSET_PREFIX",id:"processenvasset_prefix",depth:3,charIndex:788},{text:"Using define config",id:"using-define-config",depth:2,charIndex:1484},{text:"Replace Expressions",id:"replace-expressions",depth:3,charIndex:1963},{text:"process.env Injection",id:"processenv-injection",depth:3,charIndex:2811},{text:"Setup Environment Variables",id:"setup-environment-variables",depth:2,charIndex:3499},{text:"Declare type of environment variable",id:"declare-type-of-environment-variable",depth:2,charIndex:4075},{text:"Tree Shaking",id:"tree-shaking",depth:2,charIndex:4508},{text:"In-source testing",id:"in-source-testing",depth:2,charIndex:5057}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/define.md"},{title:"Hot Module Replacement",routePath:"/builder/en/guide/advanced/hmr",lang:"en",toc:[{text:"Enabling HMR",id:"enabling-hmr",depth:2,charIndex:495},{text:"Specify HMR URL",id:"specify-hmr-url",depth:2,charIndex:699},{text:"Default Config",id:"default-config",depth:3,charIndex:938},{text:"Proxy",id:"proxy",depth:3,charIndex:1096},{text:"Live reloading vs Hot reloading",id:"live-reloading-vs-hot-reloading",depth:2,charIndex:1324},{text:"FAQ",id:"faq",depth:2,charIndex:2010}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/hmr.md"},{title:"REM adaptation",routePath:"/builder/en/guide/advanced/rem",lang:"en",toc:[{text:"Enabling REM adaptability",id:"enabling-rem-adaptability",depth:2,charIndex:207},{text:"CSS conversion properties",id:"css-conversion-properties",depth:2,charIndex:395},{text:"Setting the page rootFontSize",id:"setting-the-page-rootfontsize",depth:2,charIndex:706},{text:"Customize maxRootFontSize",id:"customize-maxrootfontsize",depth:2,charIndex:1135},{text:"How to determine if REM is in effect\uFF1F",id:"how-to-determine-if-rem-is-in-effect",depth:2,charIndex:1575},{text:"How to get the rootFontSize value that is actually in effect on the page?",id:"how-to-get-the-rootfontsize-value-that-is-actually-in-effect-on-the-page",depth:2,charIndex:1851}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/rem.md"},{title:"Using Rspack",routePath:"/builder/en/guide/advanced/rspack-start",lang:"en",toc:[{text:"Enable Rspack",id:"enable-rspack",depth:2,charIndex:618},{text:"Enable in Modern.js framework",id:"enable-in-modernjs-framework",depth:3,charIndex:635},{text:"Use Builder in a front-end framework",id:"use-builder-in-a-front-end-framework",depth:3,charIndex:800},{text:"Precautions",id:"precautions",depth:2,charIndex:1062},{text:"Migrating from webpack to Rspack",id:"migrating-from-webpack-to-rspack",depth:2,charIndex:2693},{text:"1. Builder configuration differences",id:"1-builder-configuration-differences",depth:3,charIndex:3146},{text:"Source Config",id:"source-config",depth:4,charIndex:3352},{text:"Html Config",id:"html-config",depth:4,charIndex:3598},{text:"Security Config",id:"security-config",depth:4,charIndex:3732},{text:"Dev Config",id:"dev-config",depth:4,charIndex:3882},{text:"Output Config",id:"output-config",depth:4,charIndex:4013},{text:"Experiments Config",id:"experiments-config",depth:4,charIndex:4198},{text:"Performance Config",id:"performance-config",depth:4,charIndex:4359},{text:"Tools Config",id:"tools-config",depth:4,charIndex:4555},{text:"2. Migrating from webpackChain to bundlerChain",id:"2-migrating-from-webpackchain-to-bundlerchain",depth:3,charIndex:5150},{text:"CHAIN_ID differences",id:"chain_id-differences",depth:4,charIndex:5544},{text:"3. Migrating from tools.webpack to tools.rspack",id:"3-migrating-from-toolswebpack-to-toolsrspack",depth:3,charIndex:5799},{text:"4. Babel Configuration Migration",id:"4-babel-configuration-migration",depth:3,charIndex:6181},{text:"5. SWC Configuration Support",id:"5-swc-configuration-support",depth:3,charIndex:7485},{text:"6. Webpack Plugin Migration",id:"6-webpack-plugin-migration",depth:3,charIndex:7796},{text:"7. CSS Modules Configuration Migration",id:"7-css-modules-configuration-migration",depth:3,charIndex:8476},{text:"Build performance profile",id:"build-performance-profile",depth:2,charIndex:8729},{text:"Compare with Rspack CLI",id:"compare-with-rspack-cli",depth:2,charIndex:9475},{text:"FAQ",id:"faq",depth:2,charIndex:11607},{text:"After enabling Rspack, the performance is not as fast as expected?",id:"after-enabling-rspack-the-performance-is-not-as-fast-as-expected",depth:3,charIndex:11614}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/rspack-start.mdx"},{title:"Using Storybook",routePath:"/builder/en/guide/advanced/storybook",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:713},{text:"Using in Modern.js projects, Not using legacy Storybook plugin(@modern-js/plugin-storybook)",id:"using-in-modernjs-projects-not-using-legacy-storybook-pluginmodern-jsplugin-storybook",depth:3,charIndex:-1},{text:"Migrate from @modern-js/plugin-storybook",id:"migrate-from-modern-jsplugin-storybook",depth:3,charIndex:1793},{text:"Native Storybook users",id:"native-storybook-users",depth:3,charIndex:2674},{text:"Enable Rspack build",id:"enable-rspack-build",depth:2,charIndex:3186},{text:"Configurations",id:"configurations",depth:2,charIndex:3611},{text:"configPath",id:"configpath",depth:3,charIndex:3683},{text:"bundler",id:"bundler",depth:3,charIndex:3813},{text:"builderConfig",id:"builderconfig",depth:3,charIndex:4131},{text:"Command Line Interface",id:"command-line-interface",depth:2,charIndex:4424},{text:"storybook dev",id:"storybook-dev",depth:3,charIndex:4516},{text:"storybook build",id:"storybook-build",depth:3,charIndex:4624},{text:"ConfigFile",id:"configfile",depth:2,charIndex:4751},{text:"Storybook addon compatibility",id:"storybook-addon-compatibility",depth:2,charIndex:4969},{text:"Benefits",id:"benefits",depth:2,charIndex:5435},{text:"Trouble Shooting",id:"trouble-shooting",depth:2,charIndex:5864}],frontmatter:{},version:"",_relativePath:"en/guide/advanced/storybook.mdx"},{title:"Build Target",routePath:"/builder/en/guide/basic/build-target",lang:"en",toc:[{text:"Default Target",id:"default-target",depth:2,charIndex:363},{text:"Optional Targets",id:"optional-targets",depth:2,charIndex:574},{text:"Multiple Targets",id:"multiple-targets",depth:2,charIndex:879},{text:"Node Target",id:"node-target",depth:2,charIndex:1090},{text:"Web Worker Target",id:"web-worker-target",depth:2,charIndex:1922},{text:"Modern Web Target",id:"modern-web-target",depth:2,charIndex:2957}],frontmatter:{},version:"",_relativePath:"en/guide/basic/build-target.md"},{title:"Use Builder CLI",routePath:"/builder/en/guide/basic/builder-cli",lang:"en",toc:[{text:"Install",id:"install",depth:2,charIndex:422},{text:"Commands",id:"commands",depth:2,charIndex:871},{text:"builder dev",id:"builder-dev",depth:3,charIndex:1015},{text:"builder build",id:"builder-build",depth:3,charIndex:1161},{text:"builder serve",id:"builder-serve",depth:3,charIndex:1280},{text:"Configuration",id:"configuration",depth:2,charIndex:1489},{text:"Build Entry",id:"build-entry",depth:2,charIndex:1906},{text:"Registering Plugins",id:"registering-plugins",depth:2,charIndex:2117}],frontmatter:{},version:"",_relativePath:"en/guide/basic/builder-cli.mdx"},{title:"Builder Config",routePath:"/builder/en/guide/basic/builder-config",lang:"en",toc:[{text:"Config Categories",id:"config-categories",depth:2,charIndex:85},{text:"Default Values",id:"default-values",depth:2,charIndex:612},{text:"Use Config",id:"use-config",depth:2,charIndex:972},{text:"In the Upper Framework",id:"in-the-upper-framework",depth:3,charIndex:986},{text:"Using the Node API",id:"using-the-node-api",depth:3,charIndex:1331},{text:"Relationship with Framework Config",id:"relationship-with-framework-config",depth:2,charIndex:1534},{text:"Debug the config",id:"debug-the-config",depth:2,charIndex:1849}],frontmatter:{},version:"",_relativePath:"en/guide/basic/builder-config.mdx"},{title:"CSS Usage",routePath:"/builder/en/guide/basic/css-usage",lang:"en",toc:[{text:"Using Less, Sass and Stylus",id:"using-less-sass-and-stylus",depth:2,charIndex:268},{text:"Using PostCSS",id:"using-postcss",depth:2,charIndex:675},{text:"Builtin PostCSS plugins",id:"builtin-postcss-plugins",depth:3,charIndex:807},{text:"CSS Minify",id:"css-minify",depth:2,charIndex:2025},{text:"Inline CSS Files",id:"inline-css-files",depth:2,charIndex:2669},{text:"Import CSS in node_modules",id:"import-css-in-node_modules",depth:2,charIndex:-1}],frontmatter:{},version:"",_relativePath:"en/guide/basic/css-usage.md"},{title:"HTML Template",routePath:"/builder/en/guide/basic/html-template",lang:"en",toc:[{text:"Set Template",id:"set-template",depth:2,charIndex:261},{text:"Set Page Title",id:"set-page-title",depth:2,charIndex:676},{text:"Set Page Icon",id:"set-page-icon",depth:2,charIndex:-1},{text:"Set Meta Tags",id:"set-meta-tags",depth:2,charIndex:-1},{text:"Set Template Parameters",id:"set-template-parameters",depth:2,charIndex:-1},{text:"Template Engine",id:"template-engine",depth:2,charIndex:-1},{text:"Lodash Template",id:"lodash-template",depth:3,charIndex:-1},{text:"EJS",id:"ejs",depth:3,charIndex:-1},{text:"Pug",id:"pug",depth:3,charIndex:-1},{text:"Injecting Tags",id:"injecting-tags",depth:2,charIndex:-1},{text:"Tag Object",id:"tag-object",depth:3,charIndex:-1},{text:"Tags Handler",id:"tags-handler",depth:3,charIndex:-1}],frontmatter:{},version:"",_relativePath:"en/guide/basic/html-template.md"},{title:"Use TypeScript",routePath:"/builder/en/guide/basic/typescript",lang:"en",toc:[{text:"TypeScript compilation",id:"typescript-compilation",depth:2,charIndex:151},{text:"Why Babel is the default option",id:"why-babel-is-the-default-option",depth:3,charIndex:1271},{text:"Type checking",id:"type-checking",depth:2,charIndex:1758}],frontmatter:{},version:"",_relativePath:"en/guide/basic/typescript.md"},{title:"Debug Mode",routePath:"/builder/en/guide/debug/debug-mode",lang:"en",toc:[{text:"Log Information",id:"log-information",depth:2,charIndex:362},{text:"Builder Config File",id:"builder-config-file",depth:2,charIndex:802},{text:"Webpack Config File",id:"webpack-config-file",depth:2,charIndex:1220},{text:"Rspack Config File",id:"rspack-config-file",depth:2,charIndex:1976}],frontmatter:{},version:"",_relativePath:"en/guide/debug/debug-mode.md"},{title:"Exceptions FAQ",routePath:"/builder/en/guide/faq/exceptions",lang:"en",toc:[],frontmatter:{},version:"",_relativePath:"en/guide/faq/exceptions.md"},{title:"Features FAQ",routePath:"/builder/en/guide/faq/features",lang:"en",toc:[],frontmatter:{},version:"",_relativePath:"en/guide/faq/features.md"},{title:"General FAQ",routePath:"/builder/en/guide/faq/general",lang:"en",toc:[{text:"The relationship between Modern.js Builder and Modern.js?",id:"the-relationship-between-modernjs-builder-and-modernjs",depth:3,charIndex:3},{text:"Can Builder be used to build libraries or UI components?",id:"can-builder-be-used-to-build-libraries-or-ui-components",depth:3,charIndex:477},{text:"Will Builder support Turbopack?",id:"will-builder-support-turbopack",depth:3,charIndex:858},{text:"Will Builder support Vite?",id:"will-builder-support-vite",depth:3,charIndex:1205}],frontmatter:{},version:"",_relativePath:"en/guide/faq/general.md"},{title:"HMR FAQ",routePath:"/builder/en/guide/faq/hmr",lang:"en",toc:[],frontmatter:{},version:"",_relativePath:"en/guide/faq/hmr.md"},{title:"All Features",routePath:"/builder/en/guide/features",lang:"en",toc:[{text:"JavaScript",id:"javascript",depth:2,charIndex:434},{text:"CSS",id:"css",depth:2,charIndex:2790},{text:"HTML",id:"html",depth:2,charIndex:3978},{text:"Development and Debugging",id:"development-and-debugging",depth:2,charIndex:4658},{text:"Frontend Framework",id:"frontend-framework",depth:2,charIndex:5002},{text:"Static Assets",id:"static-assets",depth:2,charIndex:5508},{text:"Performance",id:"performance",depth:2,charIndex:6488}],frontmatter:{},version:"",_relativePath:"en/guide/features.mdx"},{title:"Build Vue 2 App",routePath:"/builder/en/guide/framework/vue2",lang:"en",toc:[{text:"Example Project",id:"example-project",depth:2,charIndex:349},{text:"CLI Tool",id:"cli-tool",depth:2,charIndex:686},{text:"Using Vue Plugin",id:"using-vue-plugin",depth:2,charIndex:898},{text:"Type Definitions",id:"type-definitions",depth:2,charIndex:1204}],frontmatter:{},version:"",_relativePath:"en/guide/framework/vue2.mdx"},{title:"Build Vue 3 App",routePath:"/builder/en/guide/framework/vue3",lang:"en",toc:[{text:"Example Project",id:"example-project",depth:2,charIndex:349},{text:"CLI Tool",id:"cli-tool",depth:2,charIndex:686},{text:"Using Vue Plugin",id:"using-vue-plugin",depth:2,charIndex:898},{text:"Type Definitions",id:"type-definitions",depth:2,charIndex:1202}],frontmatter:{},version:"",_relativePath:"en/guide/framework/vue3.mdx"},{title:"Glossary",routePath:"/builder/en/guide/glossary",lang:"en",toc:[{text:"Bundler",id:"bundler",depth:2,charIndex:370},{text:"Builder",id:"builder",depth:2,charIndex:726},{text:"Builder Provider",id:"builder-provider",depth:2,charIndex:1069},{text:"Micro-frontend",id:"micro-frontend",depth:2,charIndex:1357},{text:"Module Federation",id:"module-federation",depth:2,charIndex:1971},{text:"Rspack",id:"rspack",depth:2,charIndex:2737},{text:"Modern.js",id:"modernjs",depth:2,charIndex:3269},{text:"EdenX",id:"edenx",depth:2,charIndex:3477}],frontmatter:{},version:"",_relativePath:"en/guide/glossary.mdx"},{title:"Introduction",routePath:"/builder/en/guide/introduction",lang:"en",toc:[{text:"Rust Tools",id:"rust-tools",depth:2,charIndex:912},{text:"Position",id:"position",depth:2,charIndex:1855},{text:"Features",id:"features",depth:2,charIndex:2671},{text:"Support Rspack Build",id:"support-rspack-build",depth:3,charIndex:2683},{text:"Deep optimization",id:"deep-optimization",depth:3,charIndex:3925},{text:"Extensible Plugin System",id:"extensible-plugin-system",depth:3,charIndex:4351},{text:"npm packages",id:"npm-packages",depth:2,charIndex:4933},{text:"Next Step",id:"next-step",depth:2,charIndex:6132}],frontmatter:{},version:"",_relativePath:"en/guide/introduction.mdx"},{title:"Chunk Splitting Practice",routePath:"/builder/en/guide/optimization/split-chunk",lang:"en",toc:[{text:"Splitting Strategies",id:"splitting-strategies",depth:2,charIndex:453},{text:"split-by-experience",id:"split-by-experience",depth:3,charIndex:1069},{text:"Behavior",id:"behavior",depth:4,charIndex:1091},{text:"Config",id:"config",depth:4,charIndex:2121},{text:"Notes",id:"notes",depth:4,charIndex:2132},{text:"split-by-module",id:"split-by-module",depth:3,charIndex:2273},{text:"Behavior",id:"behavior-1",depth:4,charIndex:2291},{text:"Config",id:"config-1",depth:4,charIndex:2628},{text:"Notes",id:"notes-1",depth:4,charIndex:2639},{text:"all-in-one",id:"all-in-one",depth:3,charIndex:3029},{text:"Behavior",id:"behavior-2",depth:4,charIndex:3042},{text:"Config",id:"config-2",depth:4,charIndex:3135},{text:"Notes",id:"notes-2",depth:4,charIndex:3146},{text:"single-vendor",id:"single-vendor",depth:3,charIndex:3380},{text:"Behavior",id:"behavior-3",depth:4,charIndex:3396},{text:"Config",id:"config-3",depth:4,charIndex:3502},{text:"Notes",id:"notes-3",depth:4,charIndex:3513},{text:"split-by-size",id:"split-by-size",depth:3,charIndex:3632},{text:"Behavior",id:"behavior-4",depth:4,charIndex:3648},{text:"Config",id:"config-4",depth:4,charIndex:3790},{text:"Custom Splitting Strategy",id:"custom-splitting-strategy",depth:2,charIndex:3802},{text:"Custom Group",id:"custom-group",depth:3,charIndex:4293},{text:"Notes",id:"notes-4",depth:4,charIndex:4589},{text:"Custom Bundler `splitChunks` Config",id:"custom-bundler-splitchunks-config",depth:3,charIndex:-1},{text:"Using Dynamic Import for Code Splitting",id:"using-dynamic-import-for-code-splitting",depth:2,charIndex:-1}],frontmatter:{},version:"",_relativePath:"en/guide/optimization/split-chunk.md"},{title:"Quick Start",routePath:"/builder/en/guide/quick-start",lang:"en",toc:[{text:"Environment preparation",id:"environment-preparation",depth:2,charIndex:370},{text:"Use the Modern.js Framework",id:"use-the-modernjs-framework",depth:2,charIndex:1096},{text:"Use the Builder CLI Tool",id:"use-the-builder-cli-tool",depth:2,charIndex:1772},{text:"Use Builder in a Front-end Framework",id:"use-builder-in-a-front-end-framework",depth:2,charIndex:2175},{text:"1. Install Builder",id:"1-install-builder",depth:3,charIndex:2307},{text:"2. Create Builder Instance",id:"2-create-builder-instance",depth:3,charIndex:2838},{text:"3. Call Builder Instance Method",id:"3-call-builder-instance-method",depth:3,charIndex:3586},{text:"Next Step",id:"next-step",depth:2,charIndex:4335}],frontmatter:{},version:"",_relativePath:"en/guide/quick-start.mdx"},{title:"",routePath:"/builder/en/",lang:"en",toc:[],frontmatter:{pageType:"home",hero:{name:"Modern.js Builder",tagline:"A Build Engine for web development.",actions:[{theme:"brand",text:"Introduction",link:"/en/guide/introduction.html"},{theme:"alt",text:"Quick Start",link:"/en/guide/quick-start.html"}]},features:[{title:"Rust Bundler",details:"Easily switch to Rspack bundler with faster build speed.",icon:"\uD83D\uDE80"},{title:"Deep optimization",details:"Automatically optimize static assets, ensure the performance of production app.",icon:"\uD83C\uDF6D"},{title:"Out of the box",details:"Base on the best practice at ByteDance, various capabilities are out-of-the-box.",icon:"\uD83D\uDCE6"},{title:"Easy to Configure",details:"Launch with zero configuration, then everything is configurable.",icon:"\uD83D\uDCD6"},{title:"Pluggable",details:"Comes with a lightweight plugin system to meet your customization needs.",icon:"\uD83C\uDFA8"},{title:"Multiple Outputs",details:"Supports building output for Node.js, Web Workers, and other environments.",icon:"\u2728"}]},version:"",_relativePath:"en/index.md"},{title:"Introduce to Plugin",routePath:"/builder/en/plugins/introduction",lang:"en",toc:[{text:"Write a plugin",id:"write-a-plugin",depth:2,charIndex:507},{text:"Lifetime Hooks",id:"lifetime-hooks",depth:2,charIndex:1141},{text:"Use Builder Config",id:"use-builder-config",depth:2,charIndex:1518},{text:"Modify webpack Config",id:"modify-webpack-config",depth:2,charIndex:2943},{text:"Examples",id:"examples",depth:2,charIndex:3455},{text:"Modify Loaders",id:"modify-loaders",depth:3,charIndex:3467},{text:"Add Entry Points",id:"add-entry-points",depth:3,charIndex:3610},{text:"Integrate webpack Plugins",id:"integrate-webpack-plugins",depth:3,charIndex:3632}],frontmatter:{},version:"",_relativePath:"en/plugins/introduction.md"},{title:"Overview",routePath:"/builder/en/plugins/list",lang:"en",toc:[{text:"Official Plugins",id:"official-plugins",depth:2,charIndex:3}],frontmatter:{},version:"",_relativePath:"en/plugins/list.md"},{title:"Esbuild Plugin",routePath:"/builder/en/plugins/plugin-esbuild",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:949},{text:"Used in Modern.js framework",id:"used-in-modernjs-framework",depth:3,charIndex:964},{text:"Use via the Node API",id:"use-via-the-node-api",depth:3,charIndex:1179},{text:"Install",id:"install",depth:4,charIndex:1300},{text:"Register",id:"register",depth:4,charIndex:1366},{text:"Config",id:"config",depth:2,charIndex:1436},{text:"loader",id:"loader",depth:3,charIndex:1592},{text:"Set JSX Format",id:"set-jsx-format",depth:4,charIndex:1848},{text:"Set the target environment",id:"set-the-target-environment",depth:4,charIndex:2154},{text:"Disable transformation",id:"disable-transformation",depth:4,charIndex:2725},{text:"minimize",id:"minimize",depth:3,charIndex:2871},{text:"Set the target environment",id:"set-the-target-environment-1",depth:4,charIndex:3061},{text:"Disable minification",id:"disable-minification",depth:4,charIndex:3163},{text:"Limitations",id:"limitations",depth:2,charIndex:3305},{text:"Compatibility",id:"compatibility",depth:3,charIndex:3481},{text:"Not support Babel plugins",id:"not-support-babel-plugins",depth:3,charIndex:4675},{text:"Bundle Size",id:"bundle-size",depth:3,charIndex:5111}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-esbuild.mdx"},{title:"Image Compress Plugin",routePath:"/builder/en/plugins/plugin-image-compress",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:183},{text:"Install",id:"install",depth:3,charIndex:198},{text:"Register",id:"register",depth:3,charIndex:265},{text:"Config",id:"config",depth:2,charIndex:513}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-image-compress.mdx"},{title:"Node Polyfill Plugin",routePath:"/builder/en/plugins/plugin-node-polyfill",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:460},{text:"Used in Modern.js framework",id:"used-in-modernjs-framework",depth:3,charIndex:475},{text:"Use via the Node API",id:"use-via-the-node-api",depth:3,charIndex:711},{text:"Install",id:"install",depth:4,charIndex:832},{text:"Register",id:"register",depth:4,charIndex:898},{text:"Node Polyfills",id:"node-polyfills",depth:2,charIndex:974},{text:"Globals",id:"globals",depth:3,charIndex:992},{text:"Modules",id:"modules",depth:3,charIndex:1132},{text:"Fallbacks",id:"fallbacks",depth:3,charIndex:1591}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-node-polyfill.mdx"},{title:"Stylus Plugin",routePath:"/builder/en/plugins/plugin-stylus",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:120},{text:"Install",id:"install",depth:3,charIndex:135},{text:"Register",id:"register",depth:3,charIndex:202},{text:"Example",id:"example",depth:2,charIndex:437},{text:"Config",id:"config",depth:2,charIndex:639},{text:"stylusOptions",id:"stylusoptions",depth:3,charIndex:746},{text:"sourceMap",id:"sourcemap",depth:3,charIndex:886}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-stylus.mdx"},{title:"SWC Plugin",routePath:"/builder/en/plugins/plugin-swc",lang:"en",toc:[{text:"Usage Scenarios",id:"usage-scenarios",depth:2,charIndex:350},{text:"Rspack Scenario",id:"rspack-scenario",depth:3,charIndex:525},{text:"Babel Plugins",id:"babel-plugins",depth:3,charIndex:879},{text:"Bundle Size",id:"bundle-size",depth:3,charIndex:1878},{text:"Quick Start",id:"quick-start",depth:2,charIndex:2201},{text:"Used in Modern.js framework",id:"used-in-modernjs-framework",depth:3,charIndex:2216},{text:"Use via the Node API",id:"use-via-the-node-api",depth:3,charIndex:2567},{text:"Install",id:"install",depth:4,charIndex:2695},{text:"Register",id:"register",depth:4,charIndex:2761},{text:"Config",id:"config",depth:2,charIndex:2908},{text:"presetReact",id:"presetreact",depth:3,charIndex:3505},{text:"presetEnv",id:"presetenv",depth:3,charIndex:3804},{text:"jsMinify",id:"jsminify",depth:3,charIndex:3956},{text:"cssMinify",id:"cssminify",depth:3,charIndex:4249},{text:"overrides",id:"overrides",depth:3,charIndex:4461},{text:"extensions",id:"extensions",depth:3,charIndex:4703},{text:"extensions.reactUtils",id:"extensionsreactutils",depth:4,charIndex:4766},{text:"extensions.lodash",id:"extensionslodash",depth:4,charIndex:5208},{text:"extensions.styledComponents",id:"extensionsstyledcomponents",depth:4,charIndex:5421},{text:"extensions.emotion",id:"extensionsemotion",depth:4,charIndex:5532},{text:"extensions.pluginImport",id:"extensionspluginimport",depth:4,charIndex:5624},{text:"Limitation",id:"limitation",depth:2,charIndex:6797}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-swc.mdx"},{title:"Vue Plugin",routePath:"/builder/en/plugins/plugin-vue",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:140},{text:"Install",id:"install",depth:3,charIndex:155},{text:"Register",id:"register",depth:3,charIndex:222},{text:"Config",id:"config",depth:2,charIndex:443},{text:"vueLoaderOptions",id:"vueloaderoptions",depth:3,charIndex:547},{text:"vueJsxOptions",id:"vuejsxoptions",depth:3,charIndex:706}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-vue.mdx"},{title:"Vue 2 Plugin",routePath:"/builder/en/plugins/plugin-vue2",lang:"en",toc:[{text:"Quick Start",id:"quick-start",depth:2,charIndex:142},{text:"Install",id:"install",depth:3,charIndex:157},{text:"Register",id:"register",depth:3,charIndex:224},{text:"Config",id:"config",depth:2,charIndex:447},{text:"vueLoaderOptions",id:"vueloaderoptions",depth:3,charIndex:551},{text:"vueJsxOptions",id:"vuejsxoptions",depth:3,charIndex:858}],frontmatter:{},version:"",_relativePath:"en/plugins/plugin-vue2.mdx"},{title:"Builder Core",routePath:"/builder/api/builder-core",lang:"zh",toc:[{text:"createBuilder",id:"createbuilder",depth:2,charIndex:30},{text:"builderWebpackProvider",id:"builderwebpackprovider",depth:3,charIndex:190},{text:"builderRspackProvider",id:"builderrspackprovider",depth:3,charIndex:285},{text:"options",id:"options",depth:3,charIndex:377},{text:"mergeBuilderConfig",id:"mergebuilderconfig",depth:2,charIndex:629},{text:"webpack",id:"webpack",depth:2,charIndex:732},{text:"HtmlWebpackPlugin",id:"htmlwebpackplugin",depth:2,charIndex:868}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/builder-core.mdx"},{title:"Builder Instance",routePath:"/builder/api/builder-instance",lang:"zh",toc:[{text:"builder.context",id:"buildercontext",depth:2,charIndex:34},{text:"builder.context.entry",id:"buildercontextentry",depth:3,charIndex:89},{text:"builder.context.target",id:"buildercontexttarget",depth:3,charIndex:165},{text:"builder.context.rootPath",id:"buildercontextrootpath",depth:3,charIndex:243},{text:"builder.context.srcPath",id:"buildercontextsrcpath",depth:3,charIndex:324},{text:"builder.context.distPath",id:"buildercontextdistpath",depth:3,charIndex:374},{text:"builder.context.cachePath",id:"buildercontextcachepath",depth:3,charIndex:472},{text:"builder.context.configPath",id:"buildercontextconfigpath",depth:3,charIndex:532},{text:"builder.context.tsconfigPath",id:"buildercontexttsconfigpath",depth:3,charIndex:623},{text:"builder.context.framework",id:"buildercontextframework",depth:3,charIndex:726},{text:"builder.context.devServer",id:"buildercontextdevserver",depth:3,charIndex:797},{text:"builder.context.bundlerType",id:"buildercontextbundlertype",depth:3,charIndex:886},{text:"builder.build",id:"builderbuild",depth:2,charIndex:942},{text:"\u5F00\u53D1\u73AF\u5883\u6784\u5EFA",id:"\u5F00\u53D1\u73AF\u5883\u6784\u5EFA",depth:3,charIndex:1009},{text:"\u76D1\u542C\u6587\u4EF6\u53D8\u5316",id:"\u76D1\u542C\u6587\u4EF6\u53D8\u5316",depth:3,charIndex:1067},{text:"\u81EA\u5B9A\u4E49 Compiler",id:"\u81EA\u5B9A\u4E49-compiler",depth:3,charIndex:1122},{text:"builder.startDevServer",id:"builderstartdevserver",depth:2,charIndex:1169},{text:"\u81EA\u5B9A\u4E49 URL \u8F93\u51FA",id:"\u81EA\u5B9A\u4E49-url-\u8F93\u51FA",depth:3,charIndex:1408},{text:"\u4E25\u683C\u9650\u5236\u7AEF\u53E3",id:"\u4E25\u683C\u9650\u5236\u7AEF\u53E3",depth:3,charIndex:1534},{text:"\u81EA\u5B9A\u4E49 Compiler",id:"\u81EA\u5B9A\u4E49-compiler-1",depth:3,charIndex:1627},{text:"\u9759\u9ED8\u83B7\u53D6\u7AEF\u53E3\u53F7",id:"\u9759\u9ED8\u83B7\u53D6\u7AEF\u53E3\u53F7",depth:3,charIndex:1674},{text:"\u81EA\u5B9A\u4E49\u65E5\u5FD7\u8F93\u51FA\u5BF9\u8C61",id:"\u81EA\u5B9A\u4E49\u65E5\u5FD7\u8F93\u51FA\u5BF9\u8C61",depth:3,charIndex:1792},{text:"builder.serve",id:"builderserve",depth:2,charIndex:1916},{text:"builder.createCompiler",id:"buildercreatecompiler",depth:2,charIndex:2104},{text:"builder.addPlugins",id:"builderaddplugins",depth:2,charIndex:2306},{text:"builder.removePlugins",id:"builderremoveplugins",depth:2,charIndex:2418},{text:"builder.isPluginExists",id:"builderispluginexists",depth:2,charIndex:2533},{text:"builder.inspectConfig",id:"builderinspectconfig",depth:2,charIndex:2598},{text:"builder.onBeforeCreateCompiler",id:"builderonbeforecreatecompiler",depth:2,charIndex:2888},{text:"builder.onAfterCreateCompiler",id:"builderonaftercreatecompiler",depth:2,charIndex:3281},{text:"builder.onBeforeBuild",id:"builderonbeforebuild",depth:2,charIndex:3604},{text:"builder.onAfterBuild",id:"builderonafterbuild",depth:2,charIndex:3861},{text:"builder.onBeforeStartDevServer",id:"builderonbeforestartdevserver",depth:2,charIndex:4052},{text:"builder.onAfterStartDevServer",id:"builderonafterstartdevserver",depth:2,charIndex:4123},{text:"builder.onDevCompileDone",id:"builderondevcompiledone",depth:2,charIndex:4220},{text:"builder.onExit",id:"builderonexit",depth:2,charIndex:4320},{text:"builder.getBuilderConfig",id:"buildergetbuilderconfig",depth:2,charIndex:4387},{text:"builder.getNormalizedConfig",id:"buildergetnormalizedconfig",depth:2,charIndex:4494},{text:"builder.getHTMLPaths",id:"buildergethtmlpaths",depth:2,charIndex:4715}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/builder-instance.mdx"},{title:"Builder Types",routePath:"/builder/api/builder-types",lang:"zh",toc:[{text:"BuilderInstance",id:"builderinstance",depth:2,charIndex:30},{text:"BuilderContext",id:"buildercontext",depth:2,charIndex:118},{text:"BuilderPlugin",id:"builderplugin",depth:2,charIndex:168},{text:"BuilderTarget",id:"buildertarget",depth:2,charIndex:245},{text:"BuilderEntry",id:"builderentry",depth:2,charIndex:282},{text:"CreateBuilderOptions",id:"createbuilderoptions",depth:2,charIndex:335}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/builder-types.mdx"},{title:"Dev Config",routePath:"/builder/api/config-dev",lang:"zh",toc:[{text:"dev.assetPrefix",id:"devassetprefix",depth:2,charIndex:32},{text:"Boolean \u7C7B\u578B",id:"boolean-\u7C7B\u578B",depth:3,charIndex:263},{text:"String \u7C7B\u578B",id:"string-\u7C7B\u578B",depth:3,charIndex:422},{text:"\u4E0E\u539F\u751F\u914D\u7F6E\u7684\u533A\u522B",id:"\u4E0E\u539F\u751F\u914D\u7F6E\u7684\u533A\u522B",depth:3,charIndex:520},{text:"dev.beforeStartUrl",id:"devbeforestarturl",depth:2,charIndex:765},{text:"dev.hmr",id:"devhmr",depth:2,charIndex:908},{text:"dev.host",id:"devhost",depth:2,charIndex:1033},{text:"dev.https",id:"devhttps",depth:2,charIndex:1208},{text:"\u81EA\u52A8\u751F\u6210\u8BC1\u4E66",id:"\u81EA\u52A8\u751F\u6210\u8BC1\u4E66",depth:4,charIndex:1350},{text:"\u624B\u52A8\u8BBE\u7F6E\u8BC1\u4E66",id:"\u624B\u52A8\u8BBE\u7F6E\u8BC1\u4E66",depth:4,charIndex:1710},{text:"dev.port",id:"devport",depth:2,charIndex:1842},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:3,charIndex:1952},{text:"dev.progressBar",id:"devprogressbar",depth:2,charIndex:1974},{text:"dev.startUrl",id:"devstarturl",depth:2,charIndex:2069},{text:"\u7AEF\u53E3\u53F7\u5360\u4F4D\u7B26",id:"\u7AEF\u53E3\u53F7\u5360\u4F4D\u7B26",depth:3,charIndex:2248},{text:"\u6253\u5F00\u6307\u5B9A\u6D4F\u89C8\u5668",id:"\u6253\u5F00\u6307\u5B9A\u6D4F\u89C8\u5668",depth:3,charIndex:2320}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-dev.mdx"},{title:"Experiments Config",routePath:"/builder/api/config-experiments",lang:"zh",toc:[{text:"experiments.lazyCompilation",id:"experimentslazycompilation",depth:2,charIndex:109},{text:"\u5EF6\u8FDF\u7F16\u8BD1\u5F02\u6B65\u6A21\u5757",id:"\u5EF6\u8FDF\u7F16\u8BD1\u5F02\u6B65\u6A21\u5757",depth:3,charIndex:260},{text:"\u5EF6\u8FDF\u7F16\u8BD1\u5165\u53E3\u6A21\u5757",id:"\u5EF6\u8FDF\u7F16\u8BD1\u5165\u53E3\u6A21\u5757",depth:3,charIndex:401},{text:"\u5C40\u9650\u6027",id:"\u5C40\u9650\u6027",depth:3,charIndex:619},{text:"\u7981\u7528\u62C6\u5305\u89C4\u5219",id:"\u7981\u7528\u62C6\u5305\u89C4\u5219",depth:4,charIndex:625},{text:"\u4F7F\u7528\u4EE3\u7406",id:"\u4F7F\u7528\u4EE3\u7406",depth:4,charIndex:718},{text:"\u5176\u4ED6\u6F5C\u5728\u7684\u95EE\u9898",id:"\u5176\u4ED6\u6F5C\u5728\u7684\u95EE\u9898",depth:4,charIndex:854},{text:"experiments.sourceBuild",id:"experimentssourcebuild",depth:2,charIndex:1018},{text:"\u9009\u9879",id:"\u9009\u9879",depth:3,charIndex:1224}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-experiments.mdx"},{title:"Html Config",routePath:"/builder/api/config-html",lang:"zh",toc:[{text:"html.appIcon",id:"htmlappicon",depth:2,charIndex:34},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:3,charIndex:228},{text:"html.crossorigin",id:"htmlcrossorigin",depth:2,charIndex:284},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-1",depth:3,charIndex:-1},{text:"\u53EF\u9009\u503C",id:"\u53EF\u9009\u503C",depth:3,charIndex:-1},{text:"html.disableHtmlFolder",id:"htmldisablehtmlfolder",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-2",depth:3,charIndex:228},{text:"html.favicon",id:"htmlfavicon",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-3",depth:3,charIndex:-1},{text:"html.faviconByEntries",id:"htmlfaviconbyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-4",depth:3,charIndex:228},{text:"html.inject",id:"htmlinject",depth:2,charIndex:-1},{text:"\u9ED8\u8BA4\u63D2\u5165\u4F4D\u7F6E",id:"\u9ED8\u8BA4\u63D2\u5165\u4F4D\u7F6E",depth:4,charIndex:-1},{text:"\u63D2\u5165\u81F3 body \u6807\u7B7E",id:"\u63D2\u5165\u81F3-body-\u6807\u7B7E",depth:4,charIndex:-1},{text:"html.injectByEntries",id:"htmlinjectbyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-5",depth:3,charIndex:-1},{text:"html.meta",id:"htmlmeta",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-6",depth:3,charIndex:228},{text:"html.metaByEntries",id:"htmlmetabyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-7",depth:3,charIndex:-1},{text:"html.mountId",id:"htmlmountid",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-8",depth:3,charIndex:228},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879",depth:3,charIndex:-1},{text:"\u66F4\u65B0\u76F8\u5173\u4EE3\u7801",id:"\u66F4\u65B0\u76F8\u5173\u4EE3\u7801",depth:4,charIndex:-1},{text:"\u81EA\u5B9A\u4E49\u6A21\u677F",id:"\u81EA\u5B9A\u4E49\u6A21\u677F",depth:4,charIndex:-1},{text:"html.scriptLoading",id:"htmlscriptloading",depth:2,charIndex:-1},{text:"defer",id:"defer",depth:3,charIndex:-1},{text:"blocking",id:"blocking",depth:3,charIndex:-1},{text:"module",id:"module",depth:3,charIndex:-1},{text:"html.tags",id:"htmltags",depth:2,charIndex:-1},{text:"\u5BF9\u8C61\u5F62\u5F0F",id:"\u5BF9\u8C61\u5F62\u5F0F",depth:4,charIndex:-1},{text:"\u51FD\u6570\u5F62\u5F0F",id:"\u51FD\u6570\u5F62\u5F0F",depth:4,charIndex:-1},{text:"\u9650\u5236",id:"\u9650\u5236",depth:4,charIndex:-1},{text:"html.tagsByEntries",id:"htmltagsbyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-9",depth:3,charIndex:-1},{text:"html.template",id:"htmltemplate",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-10",depth:3,charIndex:228},{text:"html.templateByEntries",id:"htmltemplatebyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-11",depth:3,charIndex:-1},{text:"html.templateParameters",id:"htmltemplateparameters",depth:2,charIndex:-1},{text:"html.templateParametersByEntries",id:"htmltemplateparametersbyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-12",depth:3,charIndex:228},{text:"html.title",id:"htmltitle",depth:2,charIndex:-1},{text:"html.titleByEntries",id:"htmltitlebyentries",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-13",depth:3,charIndex:-1}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-html.mdx"},{title:"Output Config",routePath:"/builder/api/config-output",lang:"zh",toc:[{text:"output.assetPrefix",id:"outputassetprefix",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:3,charIndex:-1},{text:"\u4E0E\u539F\u751F\u914D\u7F6E\u7684\u533A\u522B",id:"\u4E0E\u539F\u751F\u914D\u7F6E\u7684\u533A\u522B",depth:3,charIndex:-1},{text:"output.assetsRetry",id:"outputassetsretry",depth:2,charIndex:-1},{text:"assetsRetry.domain",id:"assetsretrydomain",depth:3,charIndex:-1},{text:"assetsRetry.type",id:"assetsretrytype",depth:3,charIndex:-1},{text:"assetsRetry.max",id:"assetsretrymax",depth:3,charIndex:-1},{text:"assetsRetry.test",id:"assetsretrytest",depth:3,charIndex:-1},{text:"assetsRetry.crossOrigin",id:"assetsretrycrossorigin",depth:3,charIndex:-1},{text:"assetsRetry.onRetry",id:"assetsretryonretry",depth:3,charIndex:-1},{text:"assetsRetry.onSuccess",id:"assetsretryonsuccess",depth:3,charIndex:-1},{text:"assetsRetry.onFail",id:"assetsretryonfail",depth:3,charIndex:-1},{text:"assetsRetry.inlineScript",id:"assetsretryinlinescript",depth:3,charIndex:-1},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879",depth:3,charIndex:-1},{text:"\u4F7F\u7528\u9650\u5236",id:"\u4F7F\u7528\u9650\u5236",depth:3,charIndex:-1},{text:"\u5FAE\u524D\u7AEF\u5E94\u7528",id:"\u5FAE\u524D\u7AEF\u5E94\u7528",depth:4,charIndex:-1},{text:"\u52A8\u6001 import \u8D44\u6E90",id:"\u52A8\u6001-import-\u8D44\u6E90",depth:4,charIndex:-1},{text:"\u81EA\u5B9A\u4E49\u6A21\u7248\u4E2D\u7684\u8D44\u6E90",id:"\u81EA\u5B9A\u4E49\u6A21\u7248\u4E2D\u7684\u8D44\u6E90",depth:4,charIndex:-1},{text:"output.charset",id:"outputcharset",depth:2,charIndex:-1},{text:"output.cleanDistPath",id:"outputcleandistpath",depth:2,charIndex:-1},{text:"output.convertToRem",id:"outputconverttorem",depth:2,charIndex:-1},{text:"Boolean \u7C7B\u578B",id:"boolean-\u7C7B\u578B",depth:3,charIndex:-1},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B",depth:3,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-1",depth:3,charIndex:-1},{text:"output.copy",id:"outputcopy",depth:2,charIndex:-1},{text:"output.cssModules",id:"outputcssmodules",depth:2,charIndex:-1},{text:"cssModules.auto",id:"cssmodulesauto",depth:3,charIndex:-1},{text:"cssModules.exportLocalsConvention",id:"cssmodulesexportlocalsconvention",depth:3,charIndex:-1},{text:"output.cssModuleLocalIdentName",id:"outputcssmodulelocalidentname",depth:2,charIndex:-1},{text:"\u9ED8\u8BA4\u503C",id:"\u9ED8\u8BA4\u503C",depth:3,charIndex:-1},{text:"\u6A21\u677F\u5B57\u7B26\u4E32",id:"\u6A21\u677F\u5B57\u7B26\u4E32",depth:3,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-2",depth:3,charIndex:-1},{text:"output.dataUriLimit",id:"outputdataurilimit",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-3",depth:3,charIndex:-1},{text:"output.disableCssExtract",id:"outputdisablecssextract",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-4",depth:3,charIndex:-1},{text:"output.disableCssModuleExtension",id:"outputdisablecssmoduleextension",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-5",depth:3,charIndex:-1},{text:"\u89C4\u5219",id:"\u89C4\u5219",depth:3,charIndex:-1},{text:"\u672A\u5F00\u542F disableCssModuleExtension\uFF08\u9ED8\u8BA4\uFF09",id:"\u672A\u5F00\u542F-disablecssmoduleextension\u9ED8\u8BA4",depth:4,charIndex:-1},{text:"\u5F00\u542F disableCssModuleExtension",id:"\u5F00\u542F-disablecssmoduleextension",depth:4,charIndex:-1},{text:"output.distPath",id:"outputdistpath",depth:2,charIndex:-1},{text:"\u6839\u76EE\u5F55",id:"\u6839\u76EE\u5F55",depth:3,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-6",depth:3,charIndex:-1},{text:"output.disableMinimize",id:"outputdisableminimize",depth:2,charIndex:-1},{text:"output.disableSourceMap",id:"outputdisablesourcemap",depth:2,charIndex:-1},{text:"output.disableSvgr",id:"outputdisablesvgr",depth:2,charIndex:-1},{text:"output.disableTsChecker",id:"outputdisabletschecker",depth:2,charIndex:-1},{text:"\u963B\u585E\u7F16\u8BD1",id:"\u963B\u585E\u7F16\u8BD1",depth:3,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-7",depth:3,charIndex:-1},{text:"output.disableFilenameHash",id:"outputdisablefilenamehash",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-8",depth:3,charIndex:-1},{text:"output.disableInlineRuntimeChunk",id:"outputdisableinlineruntimechunk",depth:2,charIndex:-1},{text:"\u7981\u7528\u5185\u8054",id:"\u7981\u7528\u5185\u8054",depth:3,charIndex:-1},{text:"\u5408\u5E76\u5230\u9875\u9762\u6587\u4EF6\u4E2D",id:"\u5408\u5E76\u5230\u9875\u9762\u6587\u4EF6\u4E2D",depth:3,charIndex:-1},{text:"output.enableAssetManifest",id:"outputenableassetmanifest",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-9",depth:3,charIndex:-1},{text:"output.enableAssetFallback",id:"outputenableassetfallback",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-10",depth:3,charIndex:-1},{text:"output.enableLatestDecorators",id:"outputenablelatestdecorators",depth:2,charIndex:-1},{text:"output.enableCssModuleTSDeclaration",id:"outputenablecssmoduletsdeclaration",depth:2,charIndex:-1},{text:"Example",id:"example",depth:3,charIndex:-1},{text:"output.enableInlineScripts",id:"outputenableinlinescripts",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-11",depth:3,charIndex:-1},{text:"\u901A\u8FC7\u6B63\u5219\u5339\u914D",id:"\u901A\u8FC7\u6B63\u5219\u5339\u914D",depth:3,charIndex:-1},{text:"\u901A\u8FC7\u51FD\u6570\u5339\u914D",id:"\u901A\u8FC7\u51FD\u6570\u5339\u914D",depth:3,charIndex:-1},{text:"output.enableInlineStyles",id:"outputenableinlinestyles",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-12",depth:3,charIndex:-1},{text:"\u901A\u8FC7\u6B63\u5219\u5339\u914D",id:"\u901A\u8FC7\u6B63\u5219\u5339\u914D-1",depth:3,charIndex:-1},{text:"\u901A\u8FC7\u51FD\u6570\u5339\u914D",id:"\u901A\u8FC7\u51FD\u6570\u5339\u914D-1",depth:3,charIndex:-1},{text:"output.externals",id:"outputexternals",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-13",depth:3,charIndex:-1},{text:"output.filename",id:"outputfilename",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-14",depth:3,charIndex:-1},{text:"\u5F02\u6B65\u6A21\u5757\u7684\u6587\u4EF6\u540D",id:"\u5F02\u6B65\u6A21\u5757\u7684\u6587\u4EF6\u540D",depth:3,charIndex:-1},{text:"output.legalComments",id:"outputlegalcomments",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-15",depth:3,charIndex:-1},{text:"output.overrideBrowserslist",id:"outputoverridebrowserslist",depth:2,charIndex:-1},{text:"\u4F18\u5148\u7EA7",id:"\u4F18\u5148\u7EA7",depth:4,charIndex:-1},{text:"\u9ED8\u8BA4\u503C",id:"\u9ED8\u8BA4\u503C-1",depth:4,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-16",depth:3,charIndex:-1},{text:"\u6839\u636E\u4EA7\u7269\u7C7B\u578B\u8BBE\u7F6E",id:"\u6839\u636E\u4EA7\u7269\u7C7B\u578B\u8BBE\u7F6E",depth:4,charIndex:-1},{text:"output.polyfill",id:"outputpolyfill",depth:2,charIndex:-1},{text:"\u914D\u7F6E\u9879",id:"\u914D\u7F6E\u9879",depth:3,charIndex:-1},{text:"entry",id:"entry",depth:4,charIndex:-1},{text:"usage",id:"usage",depth:4,charIndex:-1},{text:"ua",id:"ua",depth:4,charIndex:-1},{text:"off",id:"off",depth:4,charIndex:-1},{text:"output.svgDefaultExport",id:"outputsvgdefaultexport",depth:2,charIndex:-1}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-output.mdx"},{title:"Performance Config",routePath:"/builder/api/config-performance",lang:"zh",toc:[{text:"performance.buildCache",id:"performancebuildcache",depth:2,charIndex:30},{text:"cacheDigest",id:"cachedigest",depth:3,charIndex:277},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:4,charIndex:397},{text:"performance.bundleAnalyze",id:"performancebundleanalyze",depth:2,charIndex:555},{text:"\u542F\u7528 Bundle Analyze",id:"\u542F\u7528-bundle-analyze",depth:3,charIndex:717},{text:"\u8986\u76D6\u9ED8\u8BA4\u914D\u7F6E",id:"\u8986\u76D6\u9ED8\u8BA4\u914D\u7F6E",depth:3,charIndex:972},{text:"Size \u7C7B\u578B",id:"size-\u7C7B\u578B",depth:3,charIndex:1041},{text:"\u751F\u6210 stats.json",id:"\u751F\u6210-statsjson",depth:3,charIndex:1242},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879",depth:3,charIndex:1311},{text:"performance.chunkSplit",id:"performancechunksplit",depth:2,charIndex:1503},{text:"chunkSplit.strategy",id:"chunksplitstrategy",depth:3,charIndex:1655},{text:"\u9ED8\u8BA4\u62C6\u5305\u7B56\u7565",id:"\u9ED8\u8BA4\u62C6\u5305\u7B56\u7565",depth:3,charIndex:1957},{text:"chunkSplit.minSize",id:"chunksplitminsize",depth:3,charIndex:2484},{text:"chunkSplit.maxSize",id:"chunksplitmaxsize",depth:3,charIndex:2666},{text:"chunkSplit.forceSplitting",id:"chunksplitforcesplitting",depth:3,charIndex:2854},{text:"chunkSplit.splitChunks",id:"chunksplitsplitchunks",depth:3,charIndex:-1},{text:"chunkSplit.override",id:"chunksplitoverride",depth:3,charIndex:-1},{text:"performance.dnsPrefetch",id:"performancednsprefetch",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-1",depth:3,charIndex:-1},{text:"performance.preconnect",id:"performancepreconnect",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-2",depth:3,charIndex:397},{text:"performance.prefetch",id:"performanceprefetch",depth:2,charIndex:-1},{text:"Boolean \u7C7B\u578B",id:"boolean-\u7C7B\u578B",depth:3,charIndex:-1},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B",depth:3,charIndex:-1},{text:"prefetch.type",id:"prefetchtype",depth:4,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-3",depth:4,charIndex:-1},{text:"performance.preload",id:"performancepreload",depth:2,charIndex:-1},{text:"Boolean \u7C7B\u578B",id:"boolean-\u7C7B\u578B-1",depth:3,charIndex:-1},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-1",depth:3,charIndex:-1},{text:"preload.type",id:"preloadtype",depth:4,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-4",depth:4,charIndex:397},{text:"performance.printFileSize",id:"performanceprintfilesize",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-5",depth:3,charIndex:-1},{text:"performance.profile",id:"performanceprofile",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-6",depth:3,charIndex:397},{text:"performance.removeConsole",id:"performanceremoveconsole",depth:2,charIndex:-1},{text:"\u79FB\u9664\u6240\u6709 console",id:"\u79FB\u9664\u6240\u6709-console",depth:4,charIndex:-1},{text:"\u79FB\u9664\u7279\u5B9A\u7684 console",id:"\u79FB\u9664\u7279\u5B9A\u7684-console",depth:4,charIndex:-1},{text:"performance.removeMomentLocale",id:"performanceremovemomentlocale",depth:2,charIndex:-1},{text:"performance.transformLodash",id:"performancetransformlodash",depth:2,charIndex:-1},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-7",depth:3,charIndex:-1},{text:"\u5173\u95ED\u8F6C\u6362",id:"\u5173\u95ED\u8F6C\u6362",depth:3,charIndex:-1}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-performance.mdx"},{title:"Security Config",routePath:"/builder/api/config-security",lang:"zh",toc:[{text:"security.sri",id:"securitysri",depth:2,charIndex:30},{text:"SRI \u4ECB\u7ECD",id:"sri-\u4ECB\u7ECD",depth:4,charIndex:226},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:3,charIndex:463},{text:"security.checkSyntax",id:"securitychecksyntax",depth:2,charIndex:524},{text:"\u542F\u7528\u68C0\u6D4B",id:"\u542F\u7528\u68C0\u6D4B",depth:3,charIndex:622},{text:"\u9519\u8BEF\u65E5\u5FD7",id:"\u9519\u8BEF\u65E5\u5FD7",depth:3,charIndex:753},{text:"\u89E3\u51B3\u65B9\u6CD5",id:"\u89E3\u51B3\u65B9\u6CD5",depth:3,charIndex:960},{text:"\u914D\u7F6E\u9879",id:"\u914D\u7F6E\u9879",depth:3,charIndex:1164},{text:"checkSyntax.targets",id:"checksyntaxtargets",depth:4,charIndex:1170},{text:"checkSyntax.ecmaVersion",id:"checksyntaxecmaversion",depth:4,charIndex:1645},{text:"checkSyntax.exclude",id:"checksyntaxexclude",depth:4,charIndex:1967}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-security.mdx"},{title:"Source Config",routePath:"/builder/api/config-source",lang:"zh",toc:[{text:"source.alias",id:"sourcealias",depth:2,charIndex:38},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B",depth:3,charIndex:271},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B",depth:3,charIndex:407},{text:"\u7CBE\u786E\u5339\u914D",id:"\u7CBE\u786E\u5339\u914D",depth:3,charIndex:510},{text:"\u5904\u7406 npm \u5305",id:"\u5904\u7406-npm-\u5305",depth:3,charIndex:618},{text:"source.aliasStrategy",id:"sourcealiasstrategy",depth:2,charIndex:894},{text:"prefer-tsconfig",id:"prefer-tsconfig",depth:3,charIndex:1060},{text:"prefer-alias",id:"prefer-alias",depth:3,charIndex:1384},{text:"source.include",id:"sourceinclude",depth:2,charIndex:1737},{text:"\u7F16\u8BD1 npm \u5305",id:"\u7F16\u8BD1-npm-\u5305",depth:3,charIndex:2076},{text:"\u7F16\u8BD1 npm \u5305\u7684\u5B50\u4F9D\u8D56",id:"\u7F16\u8BD1-npm-\u5305\u7684\u5B50\u4F9D\u8D56",depth:3,charIndex:2323},{text:"\u7F16\u8BD1 Monorepo \u4E2D\u7684\u5176\u4ED6\u5E93",id:"\u7F16\u8BD1-monorepo-\u4E2D\u7684\u5176\u4ED6\u5E93",depth:3,charIndex:2520},{text:"\u7F16\u8BD1 CommonJS \u6A21\u5757",id:"\u7F16\u8BD1-commonjs-\u6A21\u5757",depth:3,charIndex:2615},{text:"\u5339\u914D Symlink",id:"\u5339\u914D-symlink",depth:3,charIndex:2861},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879",depth:3,charIndex:3105},{text:"source.exclude",id:"sourceexclude",depth:2,charIndex:3312},{text:"source.define",id:"sourcedefine",depth:2,charIndex:3451},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:3,charIndex:3797},{text:"source.globalVars",id:"sourceglobalvars",depth:2,charIndex:3824},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-1",depth:3,charIndex:3930},{text:"\u51FD\u6570\u7528\u6CD5",id:"\u51FD\u6570\u7528\u6CD5",depth:3,charIndex:4010},{text:"\u4E0E define \u7684\u533A\u522B",id:"\u4E0E-define-\u7684\u533A\u522B",depth:3,charIndex:4101},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879-1",depth:3,charIndex:4266},{text:"source.moduleScopes",id:"sourcemodulescopes",depth:2,charIndex:4422},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-2",depth:3,charIndex:4568},{text:"Array \u7C7B\u578B",id:"array-\u7C7B\u578B",depth:3,charIndex:4710},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-1",depth:3,charIndex:4778},{text:"source.transformImport",id:"sourcetransformimport",depth:2,charIndex:4834},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-3",depth:3,charIndex:5217},{text:"\u7981\u7528\u9ED8\u8BA4\u914D\u7F6E",id:"\u7981\u7528\u9ED8\u8BA4\u914D\u7F6E",depth:3,charIndex:5263},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:3,charIndex:5470},{text:"libraryName",id:"libraryname",depth:4,charIndex:5475},{text:"libraryDirectory",id:"librarydirectory",depth:4,charIndex:5568},{text:"style",id:"style",depth:4,charIndex:5712},{text:"styleLibraryDirectory",id:"stylelibrarydirectory",depth:4,charIndex:5890},{text:"camelToDashComponentName",id:"cameltodashcomponentname",depth:4,charIndex:6076},{text:"transformToDefaultImport",id:"transformtodefaultimport",depth:4,charIndex:6184},{text:"customName",id:"customname",depth:4,charIndex:6273},{text:"customStyleName",id:"customstylename",depth:4,charIndex:6741},{text:"source.preEntry",id:"sourcepreentry",depth:2,charIndex:7217},{text:"\u6DFB\u52A0\u5355\u4E2A\u811A\u672C",id:"\u6DFB\u52A0\u5355\u4E2A\u811A\u672C",depth:4,charIndex:7354},{text:"\u6DFB\u52A0\u5168\u5C40\u6837\u5F0F",id:"\u6DFB\u52A0\u5168\u5C40\u6837\u5F0F",depth:4,charIndex:7506},{text:"\u6DFB\u52A0\u591A\u4E2A\u811A\u672C",id:"\u6DFB\u52A0\u591A\u4E2A\u811A\u672C",depth:4,charIndex:7593},{text:"source.resolveExtensionPrefix",id:"sourceresolveextensionprefix",depth:2,charIndex:7645},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-4",depth:3,charIndex:7836},{text:"\u6839\u636E\u4EA7\u7269\u7C7B\u578B\u8BBE\u7F6E",id:"\u6839\u636E\u4EA7\u7269\u7C7B\u578B\u8BBE\u7F6E",depth:4,charIndex:7951},{text:"source.resolveMainFields",id:"sourceresolvemainfields",depth:2,charIndex:8192},{text:"\u793A\u4F8B",id:"\u793A\u4F8B-5",depth:3,charIndex:8324},{text:"\u6839\u636E\u4EA7\u7269\u7C7B\u578B\u8BBE\u7F6E",id:"\u6839\u636E\u4EA7\u7269\u7C7B\u578B\u8BBE\u7F6E-1",depth:4,charIndex:8331}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-source.mdx"},{title:"Tools Config",routePath:"/builder/api/config-tools",lang:"zh",toc:[{text:"tools.autoprefixer",id:"toolsautoprefixer",depth:2,charIndex:32},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B",depth:3,charIndex:136},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B",depth:3,charIndex:218},{text:"tools.babel",id:"toolsbabel",depth:2,charIndex:316},{text:"\u4F7F\u7528\u573A\u666F",id:"\u4F7F\u7528\u573A\u666F",depth:3,charIndex:415},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-1",depth:3,charIndex:682},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-1",depth:3,charIndex:938},{text:"\u5DE5\u5177\u51FD\u6570",id:"\u5DE5\u5177\u51FD\u6570",depth:3,charIndex:1117},{text:"addPlugins",id:"addplugins",depth:4,charIndex:1168},{text:"addPresets",id:"addpresets",depth:4,charIndex:1241},{text:"removePlugins",id:"removeplugins",depth:4,charIndex:1332},{text:"removePresets",id:"removepresets",depth:4,charIndex:1447},{text:"modifyPresetEnvOptions",id:"modifypresetenvoptions",depth:4,charIndex:1564},{text:"modifyPresetReactOptions",id:"modifypresetreactoptions",depth:4,charIndex:1684},{text:"addIncludes",id:"addincludes",depth:4,charIndex:1810},{text:"addExcludes",id:"addexcludes",depth:4,charIndex:1861},{text:"\u8C03\u8BD5 Babel \u914D\u7F6E",id:"\u8C03\u8BD5-babel-\u914D\u7F6E",depth:3,charIndex:1913},{text:"tools.bundlerChain",id:"toolsbundlerchain",depth:2,charIndex:2114},{text:"tools.cssExtract",id:"toolscssextract",depth:2,charIndex:2802},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-2",depth:3,charIndex:2935},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-2",depth:3,charIndex:2996},{text:"tools.cssLoader",id:"toolscssloader",depth:2,charIndex:3114},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-3",depth:3,charIndex:3333},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-3",depth:3,charIndex:3395},{text:"tools.devServer",id:"toolsdevserver",depth:2,charIndex:3477},{text:"\u9009\u9879",id:"\u9009\u9879",depth:3,charIndex:3666},{text:"after",id:"after",depth:4,charIndex:3671},{text:"before",id:"before",depth:4,charIndex:3955},{text:"client",id:"client",depth:4,charIndex:4016},{text:"compress",id:"compress",depth:4,charIndex:4091},{text:"devMiddleware",id:"devmiddleware",depth:4,charIndex:4194},{text:"headers",id:"headers",depth:4,charIndex:4287},{text:"historyApiFallback",id:"historyapifallback",depth:4,charIndex:4343},{text:"hot",id:"hot",depth:4,charIndex:4546},{text:"https",id:"https",depth:4,charIndex:4617},{text:"liveReload",id:"livereload",depth:4,charIndex:4811},{text:"setupMiddlewares",id:"setupmiddlewares",depth:4,charIndex:4972},{text:"proxy",id:"proxy",depth:4,charIndex:5257},{text:"watch",id:"watch",depth:4,charIndex:5772},{text:"tools.htmlPlugin",id:"toolshtmlplugin",depth:2,charIndex:5845},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-4",depth:3,charIndex:5983},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-4",depth:3,charIndex:6060},{text:"Boolean \u7C7B\u578B",id:"boolean-\u7C7B\u578B",depth:3,charIndex:6213},{text:"\u7981\u7528 JS / CSS \u538B\u7F29",id:"\u7981\u7528-js--css-\u538B\u7F29",depth:3,charIndex:6291},{text:"tools.less",id:"toolsless",depth:2,charIndex:6564},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-5",depth:3,charIndex:6652},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-5",depth:3,charIndex:6767},{text:"\u4FEE\u6539 Less \u7248\u672C",id:"\u4FEE\u6539-less-\u7248\u672C",depth:3,charIndex:6876},{text:"\u5DE5\u5177\u51FD\u6570",id:"\u5DE5\u5177\u51FD\u6570-1",depth:3,charIndex:7006},{text:"addExcludes",id:"addexcludes-1",depth:4,charIndex:7013},{text:"tools.minifyCss",id:"toolsminifycss",depth:2,charIndex:7136},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-6",depth:3,charIndex:7327},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-6",depth:3,charIndex:7432},{text:"tools.postcss",id:"toolspostcss",depth:2,charIndex:7526},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-7",depth:3,charIndex:7644},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-7",depth:3,charIndex:7913},{text:"\u5DE5\u5177\u51FD\u6570",id:"\u5DE5\u5177\u51FD\u6570-2",depth:3,charIndex:8019},{text:"addPlugins",id:"addplugins-1",depth:4,charIndex:8026},{text:"tools.pug",id:"toolspug",depth:2,charIndex:8254},{text:"Boolean \u7C7B\u578B",id:"boolean-\u7C7B\u578B-1",depth:3,charIndex:8340},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-8",depth:3,charIndex:8458},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-8",depth:3,charIndex:8550},{text:"tools.sass",id:"toolssass",depth:2,charIndex:8638},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-9",depth:3,charIndex:8726},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-9",depth:3,charIndex:8841},{text:"\u4FEE\u6539 Sass \u7248\u672C",id:"\u4FEE\u6539-sass-\u7248\u672C",depth:3,charIndex:8950},{text:"\u5DE5\u5177\u51FD\u6570",id:"\u5DE5\u5177\u51FD\u6570-3",depth:3,charIndex:9085},{text:"addExcludes",id:"addexcludes-2",depth:4,charIndex:9092},{text:"tools.styleLoader",id:"toolsstyleloader",depth:2,charIndex:9215},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-10",depth:3,charIndex:9395},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-10",depth:3,charIndex:9456},{text:"tools.styledComponents",id:"toolsstyledcomponents",depth:2,charIndex:9538},{text:"tools.terser",id:"toolsterser",depth:2,charIndex:9856},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-11",depth:3,charIndex:10056},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-11",depth:3,charIndex:10154},{text:"tools.tsLoader",id:"toolstsloader",depth:2,charIndex:10299},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-12",depth:3,charIndex:10680},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-12",depth:3,charIndex:10783},{text:"\u5DE5\u5177\u51FD\u6570",id:"\u5DE5\u5177\u51FD\u6570-4",depth:3,charIndex:10888},{text:"addIncludes",id:"addincludes-1",depth:4,charIndex:10895},{text:"addExcludes",id:"addexcludes-3",depth:4,charIndex:10946},{text:"tools.tsChecker",id:"toolstschecker",depth:2,charIndex:10998},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-13",depth:3,charIndex:11152},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-13",depth:3,charIndex:11209},{text:"tools.webpack",id:"toolswebpack",depth:2,charIndex:11300},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-14",depth:3,charIndex:11504},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-14",depth:3,charIndex:11614},{text:"\u5DE5\u5177\u96C6\u5408",id:"\u5DE5\u5177\u96C6\u5408",depth:3,charIndex:11786},{text:"env",id:"env",depth:4,charIndex:11829},{text:"isProd",id:"isprod",depth:4,charIndex:11938},{text:"target",id:"target",depth:4,charIndex:12005},{text:"isServer",id:"isserver",depth:4,charIndex:12103},{text:"isWebWorker",id:"iswebworker",depth:4,charIndex:12179},{text:"webpack",id:"webpack",depth:4,charIndex:12270},{text:"HtmlWebpackPlugin",id:"htmlwebpackplugin",depth:4,charIndex:12343},{text:"addRules",id:"addrules",depth:4,charIndex:12445},{text:"prependPlugins",id:"prependplugins",depth:4,charIndex:12538},{text:"appendPlugins",id:"appendplugins",depth:4,charIndex:12673},{text:"removePlugin",id:"removeplugin",depth:4,charIndex:12808},{text:"mergeConfig",id:"mergeconfig",depth:4,charIndex:12942},{text:"getCompiledPath",id:"getcompiledpath",depth:4,charIndex:13051},{text:"tools.webpackChain",id:"toolswebpackchain",depth:2,charIndex:13159},{text:"\u5DE5\u5177\u96C6\u5408",id:"\u5DE5\u5177\u96C6\u5408-1",depth:3,charIndex:13618},{text:"env",id:"env-1",depth:4,charIndex:13625},{text:"isProd",id:"isprod-1",depth:4,charIndex:13734},{text:"target",id:"target-1",depth:4,charIndex:13801},{text:"isServer",id:"isserver-1",depth:4,charIndex:13899},{text:"isWebWorker",id:"iswebworker-1",depth:4,charIndex:13975},{text:"webpack",id:"webpack-1",depth:4,charIndex:14066},{text:"HtmlWebpackPlugin",id:"htmlwebpackplugin-1",depth:4,charIndex:14139},{text:"getCompiledPath",id:"getcompiledpath-1",depth:4,charIndex:14241},{text:"CHAIN_ID",id:"chain_id",depth:4,charIndex:14483},{text:"CHAIN_ID.RULE",id:"chain_idrule",depth:4,charIndex:14678},{text:"CHAIN_ID.ONE_OF",id:"chain_idone_of",depth:4,charIndex:15128},{text:"CHAIN_ID.USE",id:"chain_iduse",depth:4,charIndex:15406},{text:"CHAIN_ID.PLUGIN",id:"chain_idplugin",depth:4,charIndex:16417},{text:"CHAIN_ID.MINIMIZER",id:"chain_idminimizer",depth:4,charIndex:17663},{text:"\u4F7F\u7528\u793A\u4F8B",id:"\u4F7F\u7528\u793A\u4F8B",depth:3,charIndex:17910},{text:"tools.rspack",id:"toolsrspack",depth:2,charIndex:17946},{text:"Object \u7C7B\u578B",id:"object-\u7C7B\u578B-15",depth:3,charIndex:18070},{text:"Function \u7C7B\u578B",id:"function-\u7C7B\u578B-15",depth:3,charIndex:18178},{text:"\u5DE5\u5177\u96C6\u5408",id:"\u5DE5\u5177\u96C6\u5408-2",depth:3,charIndex:18346},{text:"env",id:"env-2",depth:4,charIndex:18389},{text:"isProd",id:"isprod-2",depth:4,charIndex:18498},{text:"target",id:"target-2",depth:4,charIndex:18565},{text:"isServer",id:"isserver-2",depth:4,charIndex:18663},{text:"isWebWorker",id:"iswebworker-2",depth:4,charIndex:18739},{text:"rspack",id:"rspack",depth:4,charIndex:18830},{text:"addRules",id:"addrules-1",depth:4,charIndex:18906},{text:"prependPlugins",id:"prependplugins-1",depth:4,charIndex:18998},{text:"appendPlugins",id:"appendplugins-1",depth:4,charIndex:19130},{text:"removePlugin",id:"removeplugin-1",depth:4,charIndex:19262},{text:"mergeConfig",id:"mergeconfig-1",depth:4,charIndex:19388},{text:"getCompiledPath",id:"getcompiledpath-2",depth:4,charIndex:19494}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/config-tools.mdx"},{title:"API",routePath:"/builder/api/",lang:"zh",toc:[],frontmatter:{overview:!0},version:"",_relativePath:"zh/api/index.mdx"},{title:"Plugin Core",routePath:"/builder/api/plugin-core",lang:"zh",toc:[{text:"BuilderPlugin",id:"builderplugin",depth:2,charIndex:35},{text:"\u524D\u7F6E\u63D2\u4EF6",id:"\u524D\u7F6E\u63D2\u4EF6",depth:3,charIndex:336},{text:"\u540E\u7F6E\u63D2\u4EF6",id:"\u540E\u7F6E\u63D2\u4EF6",depth:3,charIndex:454},{text:"\u79FB\u9664\u63D2\u4EF6",id:"\u79FB\u9664\u63D2\u4EF6",depth:3,charIndex:546},{text:"BuilderPluginAPI",id:"builderpluginapi",depth:2,charIndex:652},{text:"\u9002\u7528\u4E8E webpack-provider \u7684\u63D2\u4EF6",id:"\u9002\u7528\u4E8E-webpack-provider-\u7684\u63D2\u4EF6",depth:3,charIndex:859},{text:"\u9002\u7528\u4E8E rspack-provider \u7684\u63D2\u4EF6",id:"\u9002\u7528\u4E8E-rspack-provider-\u7684\u63D2\u4EF6",depth:3,charIndex:979},{text:"\u540C\u65F6\u9002\u7528\u4E8E webpack-provider \u548C rspack-provider \u7684\u63D2\u4EF6",id:"\u540C\u65F6\u9002\u7528\u4E8E-webpack-provider-\u548C-rspack-provider-\u7684\u63D2\u4EF6",depth:3,charIndex:1096},{text:"api.context",id:"apicontext",depth:2,charIndex:1423},{text:"api.getBuilderConfig",id:"apigetbuilderconfig",depth:2,charIndex:1544},{text:"api.getNormalizedConfig",id:"apigetnormalizedconfig",depth:2,charIndex:1647},{text:"api.isPluginExists",id:"apiispluginexists",depth:2,charIndex:1864},{text:"api.getHTMLPaths",id:"apigethtmlpaths",depth:2,charIndex:1925}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/plugin-core.mdx"},{title:"Plugin Hooks",routePath:"/builder/api/plugin-hooks",lang:"zh",toc:[{text:"\u6982\u89C8",id:"\u6982\u89C8",depth:2,charIndex:32},{text:"\u901A\u7528\u94A9\u5B50",id:"\u901A\u7528\u94A9\u5B50",depth:2,charIndex:668},{text:"modifyBuilderConfig",id:"modifybuilderconfig",depth:3,charIndex:676},{text:"modifyBundlerChain `\u5B9E\u9A8C\u6027`",id:"modifybundlerchain-\u5B9E\u9A8C\u6027",depth:3,charIndex:-1},{text:"modifyWebpackChain",id:"modifywebpackchain",depth:3,charIndex:1249},{text:"modifyWebpackConfig",id:"modifywebpackconfig",depth:3,charIndex:1357},{text:"modifyRspackConfig",id:"modifyrspackconfig",depth:3,charIndex:1529},{text:"onBeforeCreateCompiler",id:"onbeforecreatecompiler",depth:3,charIndex:1663},{text:"onAfterCreateCompiler",id:"onaftercreatecompiler",depth:3,charIndex:2048},{text:"\u6784\u5EFA\u94A9\u5B50",id:"\u6784\u5EFA\u94A9\u5B50",depth:2,charIndex:2363},{text:"onBeforeBuild",id:"onbeforebuild",depth:3,charIndex:2371},{text:"onAfterBuild",id:"onafterbuild",depth:3,charIndex:2620},{text:"\u5F00\u53D1\u670D\u52A1\u94A9\u5B50",id:"\u5F00\u53D1\u670D\u52A1\u94A9\u5B50",depth:2,charIndex:2803},{text:"onBeforeStartDevServer",id:"onbeforestartdevserver",depth:3,charIndex:2813},{text:"onAfterStartDevServer",id:"onafterstartdevserver",depth:3,charIndex:2876},{text:"onDevCompileDone",id:"ondevcompiledone",depth:3,charIndex:2965},{text:"\u5176\u4ED6\u94A9\u5B50",id:"\u5176\u4ED6\u94A9\u5B50",depth:2,charIndex:3057},{text:"onExit",id:"onexit",depth:3,charIndex:3065}],frontmatter:{extractApiHeaders:[2]},version:"",_relativePath:"zh/api/plugin-hooks.mdx"},{title:"\u6D4F\u89C8\u5668\u517C\u5BB9\u6027",routePath:"/builder/guide/advanced/browser-compatibility",lang:"zh",toc:[{text:"\u8BBE\u7F6E\u6D4F\u89C8\u5668\u8303\u56F4",id:"\u8BBE\u7F6E\u6D4F\u89C8\u5668\u8303\u56F4",depth:2,charIndex:40},{text:"\u80CC\u666F\u77E5\u8BC6",id:"\u80CC\u666F\u77E5\u8BC6",depth:2,charIndex:331},{text:"\u8BED\u6CD5\u964D\u7EA7\u548C API \u964D\u7EA7",id:"\u8BED\u6CD5\u964D\u7EA7\u548C-api-\u964D\u7EA7",depth:3,charIndex:375},{text:"\u8BED\u6CD5\u8F6C\u8BD1",id:"\u8BED\u6CD5\u8F6C\u8BD1",depth:3,charIndex:646},{text:"API Polyfill",id:"api-polyfill",depth:3,charIndex:1385},{text:"\u964D\u7EA7\u65B9\u5F0F",id:"\u964D\u7EA7\u65B9\u5F0F",depth:2,charIndex:1994},{text:"\u964D\u7EA7\u5F53\u524D\u9879\u76EE\u4EE3\u7801",id:"\u964D\u7EA7\u5F53\u524D\u9879\u76EE\u4EE3\u7801",depth:3,charIndex:2296},{text:"\u964D\u7EA7\u7B2C\u4E09\u65B9\u4F9D\u8D56",id:"\u964D\u7EA7\u7B2C\u4E09\u65B9\u4F9D\u8D56",depth:3,charIndex:2356},{text:"\u964D\u7EA7\u975E\u5F53\u524D\u9879\u76EE\u7684\u4EE3\u7801",id:"\u964D\u7EA7\u975E\u5F53\u524D\u9879\u76EE\u7684\u4EE3\u7801",depth:3,charIndex:2531},{text:"Polyfill \u65B9\u6848",id:"polyfill-\u65B9\u6848",depth:2,charIndex:2658},{text:"entry \u65B9\u6848",id:"entry-\u65B9\u6848",depth:3,charIndex:2854},{text:"usage \u65B9\u6848",id:"usage-\u65B9\u6848",depth:3,charIndex:3078},{text:"\u4E0D\u6CE8\u5165 Polyfill",id:"\u4E0D\u6CE8\u5165-polyfill",depth:3,charIndex:3412}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/browser-compatibility.md"},{title:"\u8BBE\u7F6E\u6D4F\u89C8\u5668\u8303\u56F4",routePath:"/builder/guide/advanced/browserslist",lang:"zh",toc:[{text:"\u4EC0\u4E48\u662F Browserslist",id:"\u4EC0\u4E48\u662F-browserslist",depth:2,charIndex:52},{text:"\u8BBE\u7F6E Browserslist",id:"\u8BBE\u7F6E-browserslist",depth:2,charIndex:666},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:3,charIndex:753},{text:"\u751F\u6548\u8303\u56F4",id:"\u751F\u6548\u8303\u56F4",depth:3,charIndex:828},{text:"\u4F7F\u7528 output.overrideBrowserslist \u914D\u7F6E",id:"\u4F7F\u7528-outputoverridebrowserslist-\u914D\u7F6E",depth:3,charIndex:1036},{text:"\u5E38\u7528\u7684\u6D4F\u89C8\u5668\u8303\u56F4",id:"\u5E38\u7528\u7684\u6D4F\u89C8\u5668\u8303\u56F4",depth:2,charIndex:1533},{text:"\u684C\u9762\u7AEF PC \u573A\u666F",id:"\u684C\u9762\u7AEF-pc-\u573A\u666F",depth:3,charIndex:1578},{text:"\u79FB\u52A8\u7AEF H5 \u573A\u666F",id:"\u79FB\u52A8\u7AEF-h5-\u573A\u666F",depth:3,charIndex:1815},{text:"Browserslist \u9ED8\u8BA4\u503C",id:"browserslist-\u9ED8\u8BA4\u503C",depth:2,charIndex:2022},{text:"Web \u4EA7\u7269",id:"web-\u4EA7\u7269",depth:3,charIndex:2128},{text:"Node \u4EA7\u7269",id:"node-\u4EA7\u7269",depth:3,charIndex:2194},{text:"Web Worker \u4EA7\u7269",id:"web-worker-\u4EA7\u7269",depth:3,charIndex:2240},{text:"Modern Web \u4EA7\u7269",id:"modern-web-\u4EA7\u7269",depth:3,charIndex:2291},{text:"\u67E5\u8BE2\u6D4F\u89C8\u5668\u652F\u6301\u60C5\u51B5",id:"\u67E5\u8BE2\u6D4F\u89C8\u5668\u652F\u6301\u60C5\u51B5",depth:2,charIndex:2353}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/browserslist.md"},{title:"\u4FEE\u6539 webpack \u914D\u7F6E",routePath:"/builder/guide/advanced/custom-webpack-config",lang:"zh",toc:[{text:"\u4FEE\u6539 webpack \u914D\u7F6E\u5BF9\u8C61",id:"\u4FEE\u6539-webpack-\u914D\u7F6E\u5BF9\u8C61",depth:2,charIndex:70},{text:"\u4F7F\u7528 webpack-chain",id:"\u4F7F\u7528-webpack-chain",depth:2,charIndex:254},{text:"tools.webpackChain \u914D\u7F6E\u9879",id:"toolswebpackchain-\u914D\u7F6E\u9879",depth:3,charIndex:395},{text:"webpack-chain \u57FA\u7840\u77E5\u8BC6",id:"webpack-chain-\u57FA\u7840\u77E5\u8BC6",depth:2,charIndex:633},{text:"webpack-chain \u662F\u5982\u4F55\u5FEB\u901F\u5B9A\u4F4D\u7684",id:"webpack-chain-\u662F\u5982\u4F55\u5FEB\u901F\u5B9A\u4F4D\u7684",depth:3,charIndex:707},{text:"webpack-chain id \u7684\u7C7B\u578B",id:"webpack-chain-id-\u7684\u7C7B\u578B",depth:3,charIndex:997},{text:"webpack-chain \u793A\u4F8B",id:"webpack-chain-\u793A\u4F8B",depth:2,charIndex:1480},{text:"\u65B0\u589E/\u4FEE\u6539/\u5220\u9664 loader",id:"\u65B0\u589E\u4FEE\u6539\u5220\u9664-loader",depth:3,charIndex:1500},{text:"\u65B0\u589E/\u4FEE\u6539/\u5220\u9664 plugin",id:"\u65B0\u589E\u4FEE\u6539\u5220\u9664-plugin",depth:3,charIndex:1521},{text:"\u6839\u636E\u4E0D\u540C\u73AF\u5883\u4FEE\u6539\u914D\u7F6E",id:"\u6839\u636E\u4E0D\u540C\u73AF\u5883\u4FEE\u6539\u914D\u7F6E",depth:3,charIndex:1542}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/custom-webpack-config.md"},{title:"\u73AF\u5883\u53D8\u91CF",routePath:"/builder/guide/advanced/define",lang:"zh",toc:[{text:"\u9ED8\u8BA4\u73AF\u5883\u53D8\u91CF",id:"\u9ED8\u8BA4\u73AF\u5883\u53D8\u91CF",depth:2,charIndex:75},{text:"process.env.NODE_ENV",id:"processenvnode_env",depth:3,charIndex:85},{text:"process.env.ASSET_PREFIX",id:"processenvasset_prefix",depth:3,charIndex:334},{text:"\u4F7F\u7528 define \u914D\u7F6E\u9879",id:"\u4F7F\u7528-define-\u914D\u7F6E\u9879",depth:2,charIndex:673},{text:"\u66FF\u6362\u8868\u8FBE\u5F0F",id:"\u66FF\u6362\u8868\u8FBE\u5F0F",depth:3,charIndex:877},{text:"process.env \u6CE8\u5165\u65B9\u5F0F",id:"processenv-\u6CE8\u5165\u65B9\u5F0F",depth:3,charIndex:1282},{text:"\u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF",id:"\u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF",depth:2,charIndex:1548},{text:"\u58F0\u660E\u73AF\u5883\u53D8\u91CF\u7C7B\u578B",id:"\u58F0\u660E\u73AF\u5883\u53D8\u91CF\u7C7B\u578B",depth:2,charIndex:1790},{text:"Tree Shaking",id:"tree-shaking",depth:2,charIndex:1965},{text:"\u6E90\u7801\u5185\u8054\u6D4B\u8BD5",id:"\u6E90\u7801\u5185\u8054\u6D4B\u8BD5",depth:2,charIndex:2202}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/define.md"},{title:"\u6A21\u5757\u70ED\u66F4\u65B0",routePath:"/builder/guide/advanced/hmr",lang:"zh",toc:[{text:"\u542F\u7528 HMR",id:"\u542F\u7528-hmr",depth:2,charIndex:213},{text:"\u81EA\u5B9A\u4E49 HMR URL",id:"\u81EA\u5B9A\u4E49-hmr-url",depth:2,charIndex:329},{text:"\u9ED8\u8BA4\u914D\u7F6E",id:"\u9ED8\u8BA4\u914D\u7F6E",depth:3,charIndex:472},{text:"\u7EBF\u4E0A\u4EE3\u7406",id:"\u7EBF\u4E0A\u4EE3\u7406",depth:3,charIndex:540},{text:"Live reloading \u548C Hot reloading \u7684\u533A\u522B",id:"live-reloading-\u548C-hot-reloading-\u7684\u533A\u522B",depth:2,charIndex:650},{text:"\u5E38\u89C1\u95EE\u9898",id:"\u5E38\u89C1\u95EE\u9898",depth:2,charIndex:980}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/hmr.md"},{title:"\u5F00\u542F REM \u9002\u914D",routePath:"/builder/guide/advanced/rem",lang:"zh",toc:[{text:"\u5F00\u542F REM \u7684\u9002\u914D\u80FD\u529B",id:"\u5F00\u542F-rem-\u7684\u9002\u914D\u80FD\u529B",depth:2,charIndex:91},{text:"CSS \u5C5E\u6027\u503C\u8F6C\u6362",id:"css-\u5C5E\u6027\u503C\u8F6C\u6362",depth:2,charIndex:190},{text:"\u6839\u5143\u7D20\u5B57\u4F53\u5927\u5C0F\u8BA1\u7B97",id:"\u6839\u5143\u7D20\u5B57\u4F53\u5927\u5C0F\u8BA1\u7B97",depth:2,charIndex:356},{text:"\u81EA\u5B9A\u4E49\u6700\u5927\u6839\u5143\u7D20\u5B57\u4F53\u503C",id:"\u81EA\u5B9A\u4E49\u6700\u5927\u6839\u5143\u7D20\u5B57\u4F53\u503C",depth:2,charIndex:543},{text:"\u5982\u4F55\u5224\u65AD REM \u662F\u5426\u751F\u6548\uFF1F",id:"\u5982\u4F55\u5224\u65AD-rem-\u662F\u5426\u751F\u6548",depth:2,charIndex:717},{text:"\u5982\u4F55\u83B7\u53D6\u9875\u9762\u5B9E\u9645\u751F\u6548\u7684 rootFontSize \u503C\uFF1F",id:"\u5982\u4F55\u83B7\u53D6\u9875\u9762\u5B9E\u9645\u751F\u6548\u7684-rootfontsize-\u503C",depth:2,charIndex:848}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/rem.md"},{title:"\u4F7F\u7528 Rspack",routePath:"/builder/guide/advanced/rspack-start",lang:"zh",toc:[{text:"\u542F\u7528 Rspack",id:"\u542F\u7528-rspack",depth:2,charIndex:253},{text:"\u5728 Modern.js \u6846\u67B6\u4E2D\u542F\u7528",id:"\u5728-modernjs-\u6846\u67B6\u4E2D\u542F\u7528",depth:3,charIndex:266},{text:"\u5728\u524D\u7AEF\u6846\u67B6\u4E2D\u63A5\u5165",id:"\u5728\u524D\u7AEF\u6846\u67B6\u4E2D\u63A5\u5165",depth:3,charIndex:356},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879",depth:2,charIndex:530},{text:"\u4ECE webpack \u8FC1\u79FB\u5230 Rspack",id:"\u4ECE-webpack-\u8FC1\u79FB\u5230-rspack",depth:2,charIndex:1163},{text:"1. Builder \u914D\u7F6E\u5DEE\u5F02",id:"1-builder-\u914D\u7F6E\u5DEE\u5F02",depth:3,charIndex:1332},{text:"Source Config",id:"source-config",depth:4,charIndex:1396},{text:"Html Config",id:"html-config",depth:4,charIndex:1550},{text:"Security Config",id:"security-config",depth:4,charIndex:1623},{text:"Dev Config",id:"dev-config",depth:4,charIndex:1706},{text:"Output Config",id:"output-config",depth:4,charIndex:1775},{text:"Experiments Config",id:"experiments-config",depth:4,charIndex:1897},{text:"Performance Config",id:"performance-config",depth:4,charIndex:1987},{text:"Tools Config",id:"tools-config",depth:4,charIndex:2116},{text:"2. \u4ECE tools.webpackChain \u8FC1\u79FB\u81F3 tools.bundlerChain",id:"2-\u4ECE-toolswebpackchain-\u8FC1\u79FB\u81F3-toolsbundlerchain",depth:3,charIndex:2431},{text:"CHAIN_ID \u5DEE\u5F02",id:"chain_id-\u5DEE\u5F02",depth:4,charIndex:2686},{text:"3. \u4ECE tools.webpack \u8FC1\u79FB\u81F3 tools.rspack",id:"3-\u4ECE-toolswebpack-\u8FC1\u79FB\u81F3-toolsrspack",depth:3,charIndex:2810},{text:"4. Babel \u914D\u7F6E\u8FC1\u79FB",id:"4-babel-\u914D\u7F6E\u8FC1\u79FB",depth:3,charIndex:3014},{text:"5. SWC \u914D\u7F6E\u652F\u6301",id:"5-swc-\u914D\u7F6E\u652F\u6301",depth:3,charIndex:3910},{text:"6. Webpack Plugin \u63D2\u4EF6\u8FC1\u79FB",id:"6-webpack-plugin-\u63D2\u4EF6\u8FC1\u79FB",depth:3,charIndex:4038},{text:"7. CSS Modules \u914D\u7F6E\u8FC1\u79FB",id:"7-css-modules-\u914D\u7F6E\u8FC1\u79FB",depth:3,charIndex:4421},{text:"Rspack \u6027\u80FD\u5206\u6790",id:"rspack-\u6027\u80FD\u5206\u6790",depth:2,charIndex:4565},{text:"\u5BF9\u6BD4 Rspack CLI",id:"\u5BF9\u6BD4-rspack-cli",depth:2,charIndex:4952},{text:"\u5E38\u89C1\u95EE\u9898",id:"\u5E38\u89C1\u95EE\u9898",depth:2,charIndex:6007},{text:"\u542F\u7528 Rspack \u6784\u5EFA\u540E\uFF0C\u6027\u80FD\u6CA1\u6709\u9884\u671F\u7684\u5FEB\uFF1F",id:"\u542F\u7528-rspack-\u6784\u5EFA\u540E\u6027\u80FD\u6CA1\u6709\u9884\u671F\u7684\u5FEB",depth:3,charIndex:6015}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/rspack-start.mdx"},{title:"\u4F7F\u7528 Storybook",routePath:"/builder/guide/advanced/storybook",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:391},{text:"\u5728 Modern.js \u9879\u76EE\u4E2D\u4F7F\u7528, \u6CA1\u6709\u4F7F\u7528\u8FC7 Storybook \u63D2\u4EF6(@modern-js/plugin-storybook)",id:"\u5728-modernjs-\u9879\u76EE\u4E2D\u4F7F\u7528-\u6CA1\u6709\u4F7F\u7528\u8FC7-storybook-\u63D2\u4EF6modern-jsplugin-storybook",depth:3,charIndex:591},{text:"\u4ECE @modern-js/plugin-storybook \u8FC1\u79FB",id:"\u4ECE-modern-jsplugin-storybook-\u8FC1\u79FB",depth:3,charIndex:950},{text:"\u539F\u751F Storybook \u9879\u76EE\uFF0C\u6CA1\u6709\u4F7F\u7528 Modern.js",id:"\u539F\u751F-storybook-\u9879\u76EE\u6CA1\u6709\u4F7F\u7528-modernjs",depth:3,charIndex:1401},{text:"\u5F00\u542F Rspack \u6784\u5EFA",id:"\u5F00\u542F-rspack-\u6784\u5EFA",depth:2,charIndex:1650},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:1861},{text:"configPath",id:"configpath",depth:3,charIndex:1898},{text:"bundler",id:"bundler",depth:3,charIndex:1975},{text:"builderConfig",id:"builderconfig",depth:3,charIndex:2187},{text:"\u547D\u4EE4\u884C",id:"\u547D\u4EE4\u884C",depth:2,charIndex:2325},{text:"storybook dev",id:"storybook-dev",depth:3,charIndex:2379},{text:"storybook build",id:"storybook-build",depth:3,charIndex:2471},{text:"\u914D\u7F6E\u6587\u4EF6",id:"\u914D\u7F6E\u6587\u4EF6",depth:2,charIndex:2575},{text:"Storybook addon \u517C\u5BB9\u6027",id:"storybook-addon-\u517C\u5BB9\u6027",depth:2,charIndex:2669},{text:"\u6536\u76CA",id:"\u6536\u76CA",depth:2,charIndex:2932},{text:"Trouble Shooting",id:"trouble-shooting",depth:2,charIndex:3151}],frontmatter:{},version:"",_relativePath:"zh/guide/advanced/storybook.mdx"},{title:"\u6784\u5EFA\u4EA7\u7269\u7C7B\u578B",routePath:"/builder/guide/basic/build-target",lang:"zh",toc:[{text:"\u9ED8\u8BA4\u4EA7\u7269",id:"\u9ED8\u8BA4\u4EA7\u7269",depth:2,charIndex:135},{text:"\u53EF\u9009\u7C7B\u578B",id:"\u53EF\u9009\u7C7B\u578B",depth:2,charIndex:238},{text:"\u5E76\u884C\u6784\u5EFA",id:"\u5E76\u884C\u6784\u5EFA",depth:2,charIndex:426},{text:"Node \u4EA7\u7269",id:"node-\u4EA7\u7269",depth:2,charIndex:505},{text:"Web Worker \u4EA7\u7269",id:"web-worker-\u4EA7\u7269",depth:2,charIndex:882},{text:"Modern Web \u4EA7\u7269",id:"modern-web-\u4EA7\u7269",depth:2,charIndex:1302}],frontmatter:{},version:"",_relativePath:"zh/guide/basic/build-target.md"},{title:"\u4F7F\u7528 Builder CLI",routePath:"/builder/guide/basic/builder-cli",lang:"zh",toc:[{text:"\u5B89\u88C5",id:"\u5B89\u88C5",depth:2,charIndex:196},{text:"\u547D\u4EE4",id:"\u547D\u4EE4",depth:2,charIndex:473},{text:"builder dev",id:"builder-dev",depth:3,charIndex:526},{text:"builder build",id:"builder-build",depth:3,charIndex:586},{text:"builder serve",id:"builder-serve",depth:3,charIndex:651},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:740},{text:"\u6784\u5EFA\u5165\u53E3",id:"\u6784\u5EFA\u5165\u53E3",depth:2,charIndex:917},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:2,charIndex:1041}],frontmatter:{},version:"",_relativePath:"zh/guide/basic/builder-cli.mdx"},{title:"Builder \u914D\u7F6E\u9879",routePath:"/builder/guide/basic/builder-config",lang:"zh",toc:[{text:"\u914D\u7F6E\u5206\u7C7B",id:"\u914D\u7F6E\u5206\u7C7B",depth:2,charIndex:39},{text:"\u914D\u7F6E\u9ED8\u8BA4\u503C",id:"\u914D\u7F6E\u9ED8\u8BA4\u503C",depth:2,charIndex:322},{text:"\u4F7F\u7528\u914D\u7F6E",id:"\u4F7F\u7528\u914D\u7F6E",depth:2,charIndex:444},{text:"\u5728\u4E0A\u5C42\u6846\u67B6\u4E2D\u4F7F\u7528",id:"\u5728\u4E0A\u5C42\u6846\u67B6\u4E2D\u4F7F\u7528",depth:3,charIndex:452},{text:"\u901A\u8FC7 Node API \u4F7F\u7528",id:"\u901A\u8FC7-node-api-\u4F7F\u7528",depth:3,charIndex:621},{text:"\u4E0E\u6846\u67B6\u914D\u7F6E\u7684\u5173\u7CFB",id:"\u4E0E\u6846\u67B6\u914D\u7F6E\u7684\u5173\u7CFB",depth:2,charIndex:763},{text:"\u8C03\u8BD5\u914D\u7F6E",id:"\u8C03\u8BD5\u914D\u7F6E",depth:2,charIndex:880}],frontmatter:{},version:"",_relativePath:"zh/guide/basic/builder-config.mdx"},{title:"\u5F15\u7528\u6837\u5F0F\u8D44\u6E90",routePath:"/builder/guide/basic/css-usage",lang:"zh",toc:[{text:"\u4F7F\u7528 Less\u3001Sass \u548C Stylus",id:"\u4F7F\u7528-lesssass-\u548C-stylus",depth:2,charIndex:122},{text:"\u4F7F\u7528 PostCSS",id:"\u4F7F\u7528-postcss",depth:2,charIndex:354},{text:"\u5185\u7F6E PostCSS \u63D2\u4EF6",id:"\u5185\u7F6E-postcss-\u63D2\u4EF6",depth:3,charIndex:442},{text:"CSS \u538B\u7F29",id:"css-\u538B\u7F29",depth:2,charIndex:1061},{text:"\u5185\u8054 CSS \u6587\u4EF6",id:"\u5185\u8054-css-\u6587\u4EF6",depth:2,charIndex:1370},{text:"\u5F15\u7528 node_modules \u91CC\u7684\u6837\u5F0F",id:"\u5F15\u7528-node_modules-\u91CC\u7684\u6837\u5F0F",depth:2,charIndex:-1}],frontmatter:{},version:"",_relativePath:"zh/guide/basic/css-usage.md"},{title:"\u914D\u7F6E HTML \u6A21\u677F",routePath:"/builder/guide/basic/html-template",lang:"zh",toc:[{text:"\u8BBE\u7F6E\u6A21\u677F\u6587\u4EF6",id:"\u8BBE\u7F6E\u6A21\u677F\u6587\u4EF6",depth:2,charIndex:113},{text:"\u8BBE\u7F6E\u9875\u9762\u6807\u9898",id:"\u8BBE\u7F6E\u9875\u9762\u6807\u9898",depth:2,charIndex:323},{text:"\u8BBE\u7F6E\u9875\u9762\u56FE\u6807",id:"\u8BBE\u7F6E\u9875\u9762\u56FE\u6807",depth:2,charIndex:-1},{text:"\u8BBE\u7F6E meta \u6807\u7B7E",id:"\u8BBE\u7F6E-meta-\u6807\u7B7E",depth:2,charIndex:-1},{text:"\u8BBE\u7F6E\u6A21\u677F\u53C2\u6570",id:"\u8BBE\u7F6E\u6A21\u677F\u53C2\u6570",depth:2,charIndex:-1},{text:"\u6A21\u677F\u5F15\u64CE",id:"\u6A21\u677F\u5F15\u64CE",depth:2,charIndex:-1},{text:"Lodash Template",id:"lodash-template",depth:3,charIndex:-1},{text:"EJS",id:"ejs",depth:3,charIndex:-1},{text:"Pug",id:"pug",depth:3,charIndex:-1},{text:"\u6CE8\u5165\u6807\u7B7E",id:"\u6CE8\u5165\u6807\u7B7E",depth:2,charIndex:-1},{text:"\u5BF9\u8C61\u5F62\u5F0F",id:"\u5BF9\u8C61\u5F62\u5F0F",depth:3,charIndex:-1},{text:"\u51FD\u6570\u5F62\u5F0F",id:"\u51FD\u6570\u5F62\u5F0F",depth:3,charIndex:-1}],frontmatter:{},version:"",_relativePath:"zh/guide/basic/html-template.md"},{title:"\u4F7F\u7528 TypeScript",routePath:"/builder/guide/basic/typescript",lang:"zh",toc:[{text:"TypeScript \u8F6C\u8BD1",id:"typescript-\u8F6C\u8BD1",depth:2,charIndex:70},{text:"\u4E3A\u4EC0\u4E48\u9ED8\u8BA4\u4F7F\u7528 Babel",id:"\u4E3A\u4EC0\u4E48\u9ED8\u8BA4\u4F7F\u7528-babel",depth:3,charIndex:674},{text:"\u7C7B\u578B\u68C0\u67E5",id:"\u7C7B\u578B\u68C0\u67E5",depth:2,charIndex:912}],frontmatter:{},version:"",_relativePath:"zh/guide/basic/typescript.md"},{title:"\u5F00\u542F\u8C03\u8BD5\u6A21\u5F0F",routePath:"/builder/guide/debug/debug-mode",lang:"zh",toc:[{text:"\u65E5\u5FD7\u4FE1\u606F",id:"\u65E5\u5FD7\u4FE1\u606F",depth:2,charIndex:162},{text:"Builder \u914D\u7F6E\u6587\u4EF6",id:"builder-\u914D\u7F6E\u6587\u4EF6",depth:2,charIndex:319},{text:"webpack \u914D\u7F6E\u6587\u4EF6",id:"webpack-\u914D\u7F6E\u6587\u4EF6",depth:2,charIndex:516},{text:"Rspack \u914D\u7F6E\u6587\u4EF6",id:"rspack-\u914D\u7F6E\u6587\u4EF6",depth:2,charIndex:861}],frontmatter:{},version:"",_relativePath:"zh/guide/debug/debug-mode.md"},{title:"\u5F02\u5E38\u7C7B\u95EE\u9898",routePath:"/builder/guide/faq/exceptions",lang:"zh",toc:[],frontmatter:{},version:"",_relativePath:"zh/guide/faq/exceptions.md"},{title:"\u529F\u80FD\u7C7B\u95EE\u9898",routePath:"/builder/guide/faq/features",lang:"zh",toc:[],frontmatter:{},version:"",_relativePath:"zh/guide/faq/features.md"},{title:"\u901A\u7528\u7C7B\u95EE\u9898",routePath:"/builder/guide/faq/general",lang:"zh",toc:[{text:"Modern.js Builder \u548C Modern.js \u7684\u5173\u7CFB\uFF1F",id:"modernjs-builder-\u548C-modernjs-\u7684\u5173\u7CFB",depth:3,charIndex:3},{text:"Builder \u80FD\u5426\u7528\u4E8E\u6784\u5EFA\u5DE5\u5177\u5E93\u6216\u7EC4\u4EF6\u5E93\uFF1F",id:"builder-\u80FD\u5426\u7528\u4E8E\u6784\u5EFA\u5DE5\u5177\u5E93\u6216\u7EC4\u4EF6\u5E93",depth:3,charIndex:289},{text:"Builder \u662F\u5426\u4F1A\u63A5\u5165 Turbopack\uFF1F",id:"builder-\u662F\u5426\u4F1A\u63A5\u5165-turbopack",depth:3,charIndex:495},{text:"Builder \u662F\u5426\u4F1A\u63A5\u5165 Vite\uFF1F",id:"builder-\u662F\u5426\u4F1A\u63A5\u5165-vite",depth:3,charIndex:740}],frontmatter:{},version:"",_relativePath:"zh/guide/faq/general.md"},{title:"\u70ED\u66F4\u65B0\u95EE\u9898",routePath:"/builder/guide/faq/hmr",lang:"zh",toc:[],frontmatter:{},version:"",_relativePath:"zh/guide/faq/hmr.md"},{title:"\u529F\u80FD\u5BFC\u822A",routePath:"/builder/guide/features",lang:"zh",toc:[{text:"JavaScript \u7F16\u8BD1",id:"javascript-\u7F16\u8BD1",depth:2,charIndex:229},{text:"CSS \u7F16\u8BD1",id:"css-\u7F16\u8BD1",depth:2,charIndex:1559},{text:"HTML \u7F16\u8BD1",id:"html-\u7F16\u8BD1",depth:2,charIndex:2306},{text:"\u5F00\u53D1\u8C03\u8BD5\u76F8\u5173",id:"\u5F00\u53D1\u8C03\u8BD5\u76F8\u5173",depth:2,charIndex:2682},{text:"\u524D\u7AEF\u6846\u67B6\u76F8\u5173",id:"\u524D\u7AEF\u6846\u67B6\u76F8\u5173",depth:2,charIndex:2874},{text:"\u9759\u6001\u8D44\u6E90\u76F8\u5173",id:"\u9759\u6001\u8D44\u6E90\u76F8\u5173",depth:2,charIndex:3124},{text:"\u6027\u80FD\u76F8\u5173",id:"\u6027\u80FD\u76F8\u5173",depth:2,charIndex:3630}],frontmatter:{},version:"",_relativePath:"zh/guide/features.mdx"},{title:"\u6784\u5EFA Vue 2 \u5E94\u7528",routePath:"/builder/guide/framework/vue2",lang:"zh",toc:[{text:"\u793A\u4F8B\u9879\u76EE",id:"\u793A\u4F8B\u9879\u76EE",depth:2,charIndex:195},{text:"CLI \u5DE5\u5177",id:"cli-\u5DE5\u5177",depth:2,charIndex:360},{text:"\u4F7F\u7528 Vue \u63D2\u4EF6",id:"\u4F7F\u7528-vue-\u63D2\u4EF6",depth:2,charIndex:478},{text:"\u7C7B\u578B\u5B9A\u4E49",id:"\u7C7B\u578B\u5B9A\u4E49",depth:2,charIndex:619}],frontmatter:{},version:"",_relativePath:"zh/guide/framework/vue2.mdx"},{title:"\u6784\u5EFA Vue 3 \u5E94\u7528",routePath:"/builder/guide/framework/vue3",lang:"zh",toc:[{text:"\u793A\u4F8B\u9879\u76EE",id:"\u793A\u4F8B\u9879\u76EE",depth:2,charIndex:195},{text:"CLI \u5DE5\u5177",id:"cli-\u5DE5\u5177",depth:2,charIndex:360},{text:"\u4F7F\u7528 Vue \u63D2\u4EF6",id:"\u4F7F\u7528-vue-\u63D2\u4EF6",depth:2,charIndex:478},{text:"\u7C7B\u578B\u5B9A\u4E49",id:"\u7C7B\u578B\u5B9A\u4E49",depth:2,charIndex:617}],frontmatter:{},version:"",_relativePath:"zh/guide/framework/vue3.mdx"},{title:"\u540D\u8BCD\u89E3\u91CA",routePath:"/builder/guide/glossary",lang:"zh",toc:[{text:"Bundler",id:"bundler",depth:2,charIndex:190},{text:"Builder",id:"builder",depth:2,charIndex:364},{text:"Builder Provider",id:"builder-provider",depth:2,charIndex:568},{text:"Micro-frontend",id:"micro-frontend",depth:2,charIndex:799},{text:"Module Federation",id:"module-federation",depth:2,charIndex:1e3},{text:"Rspack",id:"rspack",depth:2,charIndex:1348},{text:"Modern.js",id:"modernjs",depth:2,charIndex:1557},{text:"EdenX",id:"edenx",depth:2,charIndex:1651}],frontmatter:{},version:"",_relativePath:"zh/guide/glossary.mdx"},{title:"\u4ECB\u7ECD",routePath:"/builder/guide/introduction",lang:"zh",toc:[{text:"Rust \u5316",id:"rust-\u5316",depth:2,charIndex:423},{text:"\u5B9A\u4F4D",id:"\u5B9A\u4F4D",depth:2,charIndex:812},{text:"\u7279\u6027",id:"\u7279\u6027",depth:2,charIndex:1137},{text:"\u652F\u6301 Rspack \u6253\u5305",id:"\u652F\u6301-rspack-\u6253\u5305",depth:3,charIndex:1143},{text:"\u6DF1\u5EA6\u4F18\u5316\u6784\u5EFA\u4EA7\u7269",id:"\u6DF1\u5EA6\u4F18\u5316\u6784\u5EFA\u4EA7\u7269",depth:3,charIndex:1713},{text:"\u6613\u4E8E\u6269\u5C55\u7684\u63D2\u4EF6\u7CFB\u7EDF",id:"\u6613\u4E8E\u6269\u5C55\u7684\u63D2\u4EF6\u7CFB\u7EDF",depth:3,charIndex:1913},{text:"npm \u5305",id:"npm-\u5305",depth:2,charIndex:2140},{text:"\u4E0B\u4E00\u6B65",id:"\u4E0B\u4E00\u6B65",depth:2,charIndex:3064}],frontmatter:{},version:"",_relativePath:"zh/guide/introduction.mdx"},{title:"\u62C6\u5305\u6700\u4F73\u5B9E\u8DF5",routePath:"/builder/guide/optimization/split-chunk",lang:"zh",toc:[{text:"\u62C6\u5305\u7B56\u7565",id:"\u62C6\u5305\u7B56\u7565",depth:2,charIndex:119},{text:"split-by-experience",id:"split-by-experience",depth:3,charIndex:452},{text:"\u5206\u5305\u7B56\u7565",id:"\u5206\u5305\u7B56\u7565",depth:4,charIndex:474},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:4,charIndex:1054},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879",depth:4,charIndex:1061},{text:"split-by-module",id:"split-by-module",depth:3,charIndex:1110},{text:"\u5206\u5305\u7B56\u7565",id:"\u5206\u5305\u7B56\u7565-1",depth:4,charIndex:1128},{text:"\u914D\u7F6E",id:"\u914D\u7F6E-1",depth:4,charIndex:1162},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879-1",depth:4,charIndex:1169},{text:"all-in-one",id:"all-in-one",depth:3,charIndex:1314},{text:"\u5206\u5305\u7B56\u7565",id:"\u5206\u5305\u7B56\u7565-2",depth:4,charIndex:1327},{text:"\u914D\u7F6E",id:"\u914D\u7F6E-2",depth:4,charIndex:1367},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879-2",depth:4,charIndex:1374},{text:"single-vendor",id:"single-vendor",depth:3,charIndex:1475},{text:"\u5206\u5305\u7B56\u7565",id:"\u5206\u5305\u7B56\u7565-3",depth:4,charIndex:1491},{text:"\u914D\u7F6E",id:"\u914D\u7F6E-3",depth:4,charIndex:1544},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879-3",depth:4,charIndex:1551},{text:"split-by-size",id:"split-by-size",depth:3,charIndex:1596},{text:"\u5206\u5305\u7B56\u7565",id:"\u5206\u5305\u7B56\u7565-4",depth:4,charIndex:1612},{text:"\u914D\u7F6E",id:"\u914D\u7F6E-4",depth:4,charIndex:1674},{text:"\u81EA\u5B9A\u4E49\u62C6\u5305",id:"\u81EA\u5B9A\u4E49\u62C6\u5305",depth:2,charIndex:1682},{text:"\u81EA\u5B9A\u4E49\u5206\u7EC4",id:"\u81EA\u5B9A\u4E49\u5206\u7EC4",depth:3,charIndex:1864},{text:"\u6CE8\u610F\u4E8B\u9879",id:"\u6CE8\u610F\u4E8B\u9879-4",depth:4,charIndex:2019},{text:"\u81EA\u5B9A\u4E49 bundler \u62C6\u5305\u914D\u7F6E",id:"\u81EA\u5B9A\u4E49-bundler-\u62C6\u5305\u914D\u7F6E",depth:3,charIndex:-1},{text:"\u4F7F\u7528 Dynamic Import \u62C6\u5305",id:"\u4F7F\u7528-dynamic-import-\u62C6\u5305",depth:2,charIndex:-1}],frontmatter:{},version:"",_relativePath:"zh/guide/optimization/split-chunk.md"},{title:"\u5FEB\u901F\u4E0A\u624B",routePath:"/builder/guide/quick-start",lang:"zh",toc:[{text:"\u73AF\u5883\u51C6\u5907",id:"\u73AF\u5883\u51C6\u5907",depth:2,charIndex:190},{text:"\u4F7F\u7528 Modern.js \u6846\u67B6",id:"\u4F7F\u7528-modernjs-\u6846\u67B6",depth:2,charIndex:594},{text:"\u4F7F\u7528 Builder CLI \u5DE5\u5177",id:"\u4F7F\u7528-builder-cli-\u5DE5\u5177",depth:2,charIndex:928},{text:"\u5728\u524D\u7AEF\u6846\u67B6\u4E2D\u63A5\u5165",id:"\u5728\u524D\u7AEF\u6846\u67B6\u4E2D\u63A5\u5165",depth:2,charIndex:1116},{text:"1. \u5B89\u88C5 Builder",id:"1-\u5B89\u88C5-builder",depth:3,charIndex:1165},{text:"2. \u521B\u5EFA Builder \u5B9E\u4F8B",id:"2-\u521B\u5EFA-builder-\u5B9E\u4F8B",depth:3,charIndex:1468},{text:"3. \u8C03\u7528 Builder \u5B9E\u4F8B\u65B9\u6CD5",id:"3-\u8C03\u7528-builder-\u5B9E\u4F8B\u65B9\u6CD5",depth:3,charIndex:1844},{text:"\u4E0B\u4E00\u6B65",id:"\u4E0B\u4E00\u6B65",depth:2,charIndex:2178}],frontmatter:{},version:"",_relativePath:"zh/guide/quick-start.mdx"},{title:"",routePath:"/builder/",lang:"zh",toc:[],frontmatter:{pageType:"home",hero:{name:"Modern.js Builder",tagline:"\u57FA\u4E8E Rspack \u7684 Web \u6784\u5EFA\u5DE5\u5177",actions:[{theme:"brand",text:"\u4ECB\u7ECD",link:"/guide/introduction.html"},{theme:"alt",text:"\u5FEB\u901F\u4E0A\u624B",link:"/guide/quick-start.html"}]},features:[{title:"Rust \u6784\u5EFA",details:"\u8F7B\u677E\u5207\u6362\u5230 Rspack \u6784\u5EFA\u5DE5\u5177\uFF0C\u7F16\u8BD1\u98DE\u5FEB\u3002",icon:"\uD83D\uDE80"},{title:"\u6DF1\u5EA6\u4F18\u5316",details:"\u81EA\u52A8\u4F18\u5316\u9759\u6001\u8D44\u6E90\uFF0C\u4EA7\u7269\u6027\u80FD\u6709\u4FDD\u969C\u3002",icon:"\uD83C\uDF6D"},{title:"\u5F00\u7BB1\u5373\u7528",details:"\u57FA\u4E8E\u5B57\u8282\u8DF3\u52A8\u6570\u5343\u4E2A\u5E94\u7528\u7684\u5B9E\u8DF5\u7ECF\u9A8C\uFF0C\u5404\u79CD\u80FD\u529B\u5F00\u7BB1\u5373\u7528\u3002",icon:"\uD83D\uDCE6"},{title:"\u6613\u4E8E\u914D\u7F6E",details:"\u4EE5\u96F6\u914D\u7F6E\u542F\u52A8\uFF0C\u7136\u540E\u4E00\u5207\u7686\u53EF\u914D\u7F6E\u3002",icon:"\uD83D\uDCD6"},{title:"\u53EF\u63D2\u62D4",details:"\u81EA\u5E26\u8F7B\u91CF\u7EA7\u63D2\u4EF6\u7CFB\u7EDF\uFF0C\u6EE1\u8DB3\u4F60\u7684\u5B9A\u5236\u8BC9\u6C42\u3002",icon:"\uD83C\uDFA8"},{title:"\u591A\u79CD\u4EA7\u7269",details:"\u652F\u6301\u6784\u5EFA\u51FA\u8FD0\u884C\u5728 Node.js\u3001Web Worker \u7B49\u73AF\u5883\u7684\u4EA7\u7269\u3002",icon:"\u2728"}]},version:"",_relativePath:"zh/index.md"},{title:"\u63D2\u4EF6\u7CFB\u7EDF",routePath:"/builder/plugins/introduction",lang:"zh",toc:[{text:"\u5F00\u53D1\u63D2\u4EF6",id:"\u5F00\u53D1\u63D2\u4EF6",depth:2,charIndex:250},{text:"\u751F\u547D\u5468\u671F\u94A9\u5B50",id:"\u751F\u547D\u5468\u671F\u94A9\u5B50",depth:2,charIndex:555},{text:"\u4F7F\u7528\u914D\u7F6E\u9879",id:"\u4F7F\u7528\u914D\u7F6E\u9879",depth:2,charIndex:720},{text:"\u4FEE\u6539 webpack \u914D\u7F6E",id:"\u4FEE\u6539-webpack-\u914D\u7F6E",depth:2,charIndex:1377},{text:"\u53C2\u8003\u8303\u4F8B",id:"\u53C2\u8003\u8303\u4F8B",depth:2,charIndex:1714},{text:"\u4FEE\u6539 Loader",id:"\u4FEE\u6539-loader",depth:3,charIndex:1722},{text:"\u6DFB\u52A0\u6A21\u5757\u5165\u53E3",id:"\u6DFB\u52A0\u6A21\u5757\u5165\u53E3",depth:3,charIndex:1787},{text:"\u63A5\u5165 webpack \u63D2\u4EF6",id:"\u63A5\u5165-webpack-\u63D2\u4EF6",depth:3,charIndex:1799}],frontmatter:{},version:"",_relativePath:"zh/plugins/introduction.md"},{title:"\u603B\u89C8",routePath:"/builder/plugins/list",lang:"zh",toc:[{text:"\u5B98\u65B9\u63D2\u4EF6",id:"\u5B98\u65B9\u63D2\u4EF6",depth:2,charIndex:3}],frontmatter:{},version:"",_relativePath:"zh/plugins/list.md"},{title:"Esbuild \u63D2\u4EF6",routePath:"/builder/plugins/plugin-esbuild",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:436},{text:"\u5728 Modern.js \u6846\u67B6\u4E2D\u4F7F\u7528",id:"\u5728-modernjs-\u6846\u67B6\u4E2D\u4F7F\u7528",depth:3,charIndex:444},{text:"\u901A\u8FC7 Node API \u4F7F\u7528",id:"\u901A\u8FC7-node-api-\u4F7F\u7528",depth:3,charIndex:551},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:4,charIndex:621},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:4,charIndex:645},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:688},{text:"loader",id:"loader",depth:3,charIndex:734},{text:"\u8BBE\u7F6E JSX \u683C\u5F0F",id:"\u8BBE\u7F6E-jsx-\u683C\u5F0F",depth:4,charIndex:891},{text:"\u4FEE\u6539\u76EE\u6807\u73AF\u5883",id:"\u4FEE\u6539\u76EE\u6807\u73AF\u5883",depth:4,charIndex:1086},{text:"\u5173\u95ED\u4EE3\u7801\u8F6C\u8BD1",id:"\u5173\u95ED\u4EE3\u7801\u8F6C\u8BD1",depth:4,charIndex:1369},{text:"minimize",id:"minimize",depth:3,charIndex:1450},{text:"\u4FEE\u6539\u76EE\u6807\u73AF\u5883",id:"\u4FEE\u6539\u76EE\u6807\u73AF\u5883-1",depth:4,charIndex:1553},{text:"\u5173\u95ED\u4EE3\u7801\u538B\u7F29",id:"\u5173\u95ED\u4EE3\u7801\u538B\u7F29",depth:4,charIndex:1591},{text:"esbuild \u5C40\u9650\u6027",id:"esbuild-\u5C40\u9650\u6027",depth:2,charIndex:1674},{text:"\u517C\u5BB9\u6027",id:"\u517C\u5BB9\u6027",depth:3,charIndex:1773},{text:"\u4E0D\u652F\u6301 Babel \u63D2\u4EF6",id:"\u4E0D\u652F\u6301-babel-\u63D2\u4EF6",depth:3,charIndex:2236},{text:"\u4EA7\u7269\u4F53\u79EF",id:"\u4EA7\u7269\u4F53\u79EF",depth:3,charIndex:2462}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-esbuild.mdx"},{title:"Image Compress \u63D2\u4EF6",routePath:"/builder/plugins/plugin-image-compress",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:64},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:3,charIndex:72},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:3,charIndex:97},{text:"\u914D\u7F6E\u9879",id:"\u914D\u7F6E\u9879",depth:2,charIndex:246}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-image-compress.mdx"},{title:"Node Polyfill \u63D2\u4EF6",routePath:"/builder/plugins/plugin-node-polyfill",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:213},{text:"\u5728 Modern.js \u6846\u67B6\u4E2D\u4F7F\u7528",id:"\u5728-modernjs-\u6846\u67B6\u4E2D\u4F7F\u7528",depth:3,charIndex:221},{text:"\u901A\u8FC7 Node API \u4F7F\u7528",id:"\u901A\u8FC7-node-api-\u4F7F\u7528",depth:3,charIndex:353},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:4,charIndex:429},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:4,charIndex:453},{text:"Node Polyfills",id:"node-polyfills",depth:2,charIndex:502},{text:"Globals",id:"globals",depth:3,charIndex:520},{text:"Modules",id:"modules",depth:3,charIndex:592},{text:"Fallbacks",id:"fallbacks",depth:3,charIndex:988}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-node-polyfill.mdx"},{title:"Stylus \u63D2\u4EF6",routePath:"/builder/plugins/plugin-stylus",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:66},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:3,charIndex:74},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:3,charIndex:99},{text:"\u793A\u4F8B",id:"\u793A\u4F8B",depth:2,charIndex:232},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:357},{text:"stylusOptions",id:"stylusoptions",depth:3,charIndex:397},{text:"sourceMap",id:"sourcemap",depth:3,charIndex:484}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-stylus.mdx"},{title:"SWC \u63D2\u4EF6",routePath:"/builder/plugins/plugin-swc",lang:"zh",toc:[{text:"\u9002\u7528\u573A\u666F",id:"\u9002\u7528\u573A\u666F",depth:2,charIndex:220},{text:"Rspack \u573A\u666F",id:"rspack-\u573A\u666F",depth:3,charIndex:287},{text:"Babel \u63D2\u4EF6",id:"babel-\u63D2\u4EF6",depth:3,charIndex:432},{text:"\u4EA7\u7269\u4F53\u79EF",id:"\u4EA7\u7269\u4F53\u79EF",depth:3,charIndex:1062},{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:1245},{text:"\u5728 Modern.js \u6846\u67B6\u4E2D\u4F7F\u7528",id:"\u5728-modernjs-\u6846\u67B6\u4E2D\u4F7F\u7528",depth:3,charIndex:1253},{text:"\u901A\u8FC7 Node API \u4F7F\u7528",id:"\u901A\u8FC7-node-api-\u4F7F\u7528",depth:3,charIndex:1435},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:4,charIndex:1511},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:4,charIndex:1535},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:1615},{text:"presetReact",id:"presetreact",depth:3,charIndex:1811},{text:"presetEnv",id:"presetenv",depth:3,charIndex:1977},{text:"jsMinify",id:"jsminify",depth:3,charIndex:2063},{text:"cssMinify",id:"cssminify",depth:3,charIndex:2224},{text:"overrides",id:"overrides",depth:3,charIndex:2318},{text:"extensions",id:"extensions",depth:3,charIndex:2439},{text:"extensions.reactUtils",id:"extensionsreactutils",depth:4,charIndex:2503},{text:"extensions.lodash",id:"extensionslodash",depth:4,charIndex:2890},{text:"extensions.styledComponents",id:"extensionsstyledcomponents",depth:4,charIndex:3004},{text:"extensions.emotion",id:"extensionsemotion",depth:4,charIndex:3093},{text:"extensions.pluginImport",id:"extensionspluginimport",depth:4,charIndex:3164},{text:"\u9650\u5236",id:"\u9650\u5236",depth:2,charIndex:3816}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-swc.mdx"},{title:"Vue \u63D2\u4EF6",routePath:"/builder/plugins/plugin-vue",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:73},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:3,charIndex:81},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:3,charIndex:106},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:206},{text:"vueLoaderOptions",id:"vueloaderoptions",depth:3,charIndex:243},{text:"vueJsxOptions",id:"vuejsxoptions",depth:3,charIndex:347}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-vue.mdx"},{title:"Vue 2 \u63D2\u4EF6",routePath:"/builder/plugins/plugin-vue2",lang:"zh",toc:[{text:"\u5FEB\u901F\u5F00\u59CB",id:"\u5FEB\u901F\u5F00\u59CB",depth:2,charIndex:75},{text:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",depth:3,charIndex:83},{text:"\u6CE8\u518C\u63D2\u4EF6",id:"\u6CE8\u518C\u63D2\u4EF6",depth:3,charIndex:108},{text:"\u914D\u7F6E",id:"\u914D\u7F6E",depth:2,charIndex:210},{text:"vueLoaderOptions",id:"vueloaderoptions",depth:3,charIndex:247},{text:"vueJsxOptions",id:"vuejsxoptions",depth:3,charIndex:417}],frontmatter:{},version:"",_relativePath:"zh/plugins/plugin-vue2.mdx"}],markdown:{showLineNumbers:!1,defaultWrapCode:!1,codeHighlighter:"prism"}}},96954:function(e,t,n){"use strict";n.r(t),n.d(t,{MDXProvider:function(){return i.MDXProvider},useMDXComponents:function(){return i.useMDXComponents}});var i=n("61162")},61162:function(e,t,n){"use strict";n.r(t),n.d(t,{MDXProvider:function(){return o},useMDXComponents:function(){return a}});var i=n("2363");let r=i.createContext({});function a(e){let t=i.useContext(r);return i.useMemo(()=>"function"==typeof e?e(t):{...t,...e},[t,e])}let d={};function o({components:e,children:t,disableParentContext:n}){let o=a(e);return n&&(o=e||d),i.createElement(r.Provider,{value:o},t)}},87429:function(e,t,n){"use strict";n.r(t),n.d(t,{APPEARANCE_KEY:function(){return tt},MDX_REGEXP:function(){return te},SEARCH_INDEX_NAME:function(){return tn},addTrailingSlash:function(){return tl},cleanUrl:function(){return tr},inBrowser:function(){return td},isDataUrl:function(){return tu},isExternalUrl:function(){return tc},isProduction:function(){return ti},normalizeHref:function(){return tf},normalizeSlash:function(){return ts},removeBase:function(){return tb},removeHash:function(){return ta},replaceLang:function(){return th},replaceVersion:function(){return tp},withBase:function(){return tg},withoutBase:function(){return tm}});var i,r,a,d,o,l,s,c,u,h="object"==typeof global&&global&&global.Object===Object&&global,p="object"==typeof self&&self&&self.Object===Object&&self,x=h||p||Function("return this")(),f=x.Symbol,m=Object.prototype,g=m.hasOwnProperty,b=m.toString,v=f?f.toStringTag:void 0,y=function(e){var t=g.call(e,v),n=e[v];try{e[v]=void 0;var i=!0}catch(e){}var r=b.call(e);return i&&(t?e[v]=n:delete e[v]),r},I=Object.prototype.toString,k=f?f.toStringTag:void 0,w=function(e){var t;if(null==e)return void 0===e?"[object Undefined]":"[object Null]";return k&&k in Object(e)?y(e):(t=e,I.call(t))},j=function(e){return null!=e&&"object"==typeof e},P=Array.isArray,S=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},C=function(e){return e},z=function(e){if(!S(e))return!1;var t=w(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t},E=x["__core-js_shared__"];var _=(i=/[^.]+$/.exec(E&&E.keys&&E.keys.IE_PROTO||""))?"Symbol(src)_1."+i:"",N=Function.prototype.toString,A=function(e){if(null!=e){try{return N.call(e)}catch(e){}try{return e+""}catch(e){}}return""},T=/^\[object .+?Constructor\]$/,L=Object.prototype,O=Function.prototype.toString,M=L.hasOwnProperty,B=RegExp("^"+O.call(M).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),R=function(e){var t;return!!S(e)&&(t=e,!_||!(_ in t))&&(z(e)?B:T).test(A(e))},D=function(e,t){var n,i,r=(n=e,i=t,null==n?void 0:n[i]);return R(r)?r:void 0},H=Object.create,F=function(){function e(){}return function(t){if(!S(t))return{};if(H)return H(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}(),$=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)},W=function(e,t){var n=-1,i=e.length;for(t||(t=Array(i));++n0){if(++a>=800)return arguments[0]}else a=0;return r.apply(void 0,arguments)}),V=/^(?:0|[1-9]\d*)$/,G=function(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&V.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991},ei=function(e){return null!=e&&en(e.length)&&!z(e)},er=function(e,t,n){if(!S(n))return!1;var i=typeof t;return("number"==i?!!(ei(n)&&G(t,n.length)):"string"==i&&t in n)&&Y(n[t],e)},ea=Object.prototype,ed=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||ea)},eo=function(e,t){for(var n=-1,i=Array(e);++n-1},eB.prototype.set=function(e,t){var n=this.__data__,i=eO(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this};var eR=D(x,"Map"),eD=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e},eH=function(e,t){var n=e.__data__;return eD(t)?n["string"==typeof t?"string":"hash"]:n.map};function eF(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t1?t[i-1]:void 0,a=i>2?t[2]:void 0;for(r=u.length>3&&"function"==typeof r?(i--,r):void 0,a&&er(t[0],t[1],a)&&(r=i<3?void 0:r,i=1),e=Object(e);++n!0,tr=e=>e.replace(e9,"").replace(e8,"");function ta(e){return e.replace(/#.*$/,"")}var td=()=>!0;function to(e){return"/"===e.charAt(0)||tc(e)?e:`/${e}`}function tl(e){return"/"===e.charAt(e.length-1)?e:`${e}/`}function ts(e){var t;return"/"===(t=to(function(e){let t=e.replace(/\\/g,"/"),n=t.startsWith("/"),i=t.split("/"),r=[];for(let e of i){if("."!==e&&""!==e)".."===e?r.length>0&&".."!==r[r.length-1]?r.pop():n&&r.push(".."):r.push(e)}let a=r.join("/");return n&&(a=`/${a}`),a}(e))).charAt(t.length-1)?t.slice(0,-1):t}function tc(e=""){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("mailto:")||e.startsWith("tel:")}function tu(e=""){return/^\s*data:/i.test(e)}function th(e,t,n,i="",r=!1){let a=tb(e,i);!a&&(a=r?"/index":"/index.html"),a.endsWith("/")&&(a+=r?"/index":"/index.html");let d="",o="",l="",s=a.split("/").filter(Boolean);return n.current&&n.current!==n.default&&(d=s.shift()||""),t.target!==t.default?(o=t.target,t.current!==t.default&&s.shift()):s.shift(),l=s.join("/")||"",(d||o)&&!l&&(l=r?"index":"index.html"),tg(to([d,o,l].filter(Boolean).join("/")),i)}function tp(e,t,n="",i=!1){let r=tb(e,n);!r&&(r=i?"/index":"/index.html");let a="",d=r.split("/").filter(Boolean);t.target!==t.default?(a=t.target,t.current!==t.default&&d.shift()):d.shift();let o=d.join("/")||"";return a&&!o&&(o=i?"index":"index.html"),tg(to([a,o].filter(Boolean).join("/")),n)}var tx=e=>{let[t,n=""]=e.split("#");return{url:t,hash:n}};function tf(e,t=!1){if(!e)return"/";if(tc(e))return e;let{url:n,hash:i}=tx(decodeURIComponent(e)),r=n.split("/").pop()?.includes(".");return!t&&!n.endsWith(".html")&&!r&&(n.endsWith("/")?n+="index.html":n+=".html"),t&&n.endsWith("/")&&(n+="index"),to(i?`${n}#${i}`:n)}function tm(e,t=""){return to(e).replace(ts(t),"")}function tg(e="/",t=""){let n=to(e),i=ts(t);return n.startsWith(i)?n:`${i}${n}`}function tb(e,t){return to(e).replace(RegExp(`^${ts(t)}`),"")}},83788:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"})})},77761:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M22 16 12 26l-1.4-1.4 8.6-8.6-8.6-8.6L12 6z"})})},34332:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M24 9.4 22.6 8 16 14.6 9.4 8 8 9.4l6.6 6.6L8 22.6 9.4 24l6.6-6.6 6.6 6.6 1.4-1.4-6.6-6.6L24 9.4z"})})},76363:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:32,height:32,viewBox:"0 0 30 30",...e,children:[(0,i.jsx)("path",{fill:"currentColor",d:"M28 10v18H10V10h18m0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2Z"}),(0,i.jsx)("path",{fill:"currentColor",d:"M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z"})]})},16480:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"})})},70146:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:48,height:48,fill:"none",viewBox:"0 0 48 48",...e,children:[(0,i.jsx)("path",{stroke:"currentColor",strokeWidth:4,d:"M24 5v6m7 1 4-4m-18 4-4-4m27 33H8a2 2 0 0 1-2-2v-8.46a2 2 0 0 1 .272-1.007l6.15-10.54A2 2 0 0 1 14.148 18H33.85a2 2 0 0 1 1.728.992l6.149 10.541A2 2 0 0 1 42 30.541V39a2 2 0 0 1-2 2Z"}),(0,i.jsx)("path",{stroke:"currentColor",strokeWidth:4,d:"M41.5 30H28s-1 3-4 3-4-3-4-3H6.5"})]})},99482:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 32 32",...e,children:[(0,i.jsx)("circle",{cx:22,cy:24,r:2,fill:"currentColor"}),(0,i.jsx)("path",{fill:"none",d:"M22 28a4 4 0 1 1 4-4 4.004 4.004 0 0 1-4 4Zm0-6a2 2 0 1 0 2 2 2.003 2.003 0 0 0-2-2Z"}),(0,i.jsx)("path",{fill:"currentColor",d:"M29.777 23.479A8.64 8.64 0 0 0 22 18a8.64 8.64 0 0 0-7.777 5.479L14 24l.223.521A8.64 8.64 0 0 0 22 30a8.64 8.64 0 0 0 7.777-5.479L30 24ZM22 28a4 4 0 1 1 4-4 4.005 4.005 0 0 1-4 4Z"}),(0,i.jsx)("path",{fill:"currentColor",d:"M12 28H8V4h8v6a2.006 2.006 0 0 0 2 2h6v4h2v-6a.91.91 0 0 0-.3-.7l-7-7A.909.909 0 0 0 18 2H8a2.006 2.006 0 0 0-2 2v24a2.006 2.006 0 0 0 2 2h4Zm6-23.6 5.6 5.6H18Z"})]})},5434:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"})})},89743:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"m21.94 13.11-1.05-3.22c0-.03-.01-.06-.02-.09l-2.11-6.48a.859.859 0 0 0-.8-.57c-.36 0-.68.25-.79.58l-2 6.17H8.84L6.83 3.33a.851.851 0 0 0-.79-.58c-.37 0-.69.25-.8.58L3.13 9.82v.01l-1.07 3.28c-.16.5.01 1.04.44 1.34l9.22 6.71c.17.12.39.12.56-.01l9.22-6.7c.43-.3.6-.84.44-1.34M8.15 10.45l2.57 7.91-6.17-7.91m8.73 7.92 2.47-7.59.1-.33h3.61l-5.59 7.16m4.1-13.67 1.81 5.56h-3.62m-1.3.95-1.79 5.51L12 19.24l-2.86-8.79M6.03 3.94 7.84 9.5H4.23m-1.18 4.19c-.09-.07-.13-.19-.09-.29l.79-2.43 5.82 7.45m11.38-4.73-6.51 4.73.02-.03 5.79-7.42.79 2.43c.04.1 0 .22-.09.29"})})},56428:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M28 12v-2h-6V4h-2v6h-8V4h-2v6H4v2h6v8H4v2h6v6h2v-6h8v6h2v-6h6v-2h-6v-8Zm-8 8h-8v-8h8Z"})})},50193:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M13.414 17.586 18 22.172V8H8V6h10a2.002 2.002 0 0 1 2 2v14.172l4.586-4.586L26 19l-7 7-7-7Z"})})},71780:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:32,height:32,viewBox:"0 0 24 24",...e,children:(0,i.jsxs)("g",{fill:"none",stroke:"var(--rp-c-brand)",strokeLinecap:"round",strokeWidth:2,children:[(0,i.jsx)("path",{strokeDasharray:60,strokeDashoffset:60,strokeOpacity:.3,d:"M12 3a9 9 0 1 1 0 18 9 9 0 0 1 0-18Z",children:(0,i.jsx)("animate",{fill:"freeze",attributeName:"stroke-dashoffset",dur:"1.3s",values:"60;0"})}),(0,i.jsxs)("path",{strokeDasharray:15,strokeDashoffset:15,d:"M12 3a9 9 0 0 1 9 9",children:[(0,i.jsx)("animate",{fill:"freeze",attributeName:"stroke-dashoffset",dur:"0.3s",values:"15;0"}),(0,i.jsx)("animateTransform",{attributeName:"transform",dur:"1.5s",repeatCount:"indefinite",type:"rotate",values:"0 12 12;360 12 12"})]})]})})},56902:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M4 6h24v2H4zm0 18h24v2H4zm0-12h24v2H4zm0 6h24v2H4z"})})},59452:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{d:"M12.1 22h-.9c-5.5-.5-9.5-5.4-9-10.9.4-4.8 4.2-8.6 9-9 .4 0 .8.2 1 .5.2.3.2.8-.1 1.1-2 2.7-1.4 6.4 1.3 8.4 2.1 1.6 5 1.6 7.1 0 .3-.2.7-.3 1.1-.1.3.2.5.6.5 1-.2 2.7-1.5 5.1-3.6 6.8-1.9 1.4-4.1 2.2-6.4 2.2zM9.3 4.4c-2.9 1-5 3.6-5.2 6.8-.4 4.4 2.8 8.3 7.2 8.7 2.1.2 4.2-.4 5.8-1.8 1.1-.9 1.9-2.1 2.4-3.4-2.5.9-5.3.5-7.5-1.1-2.8-2.2-3.9-5.9-2.7-9.2z"})})},49616:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:24,height:24,viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"var(--rp-c-gray)",d:"m29 27.586-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29ZM4 13a9 9 0 1 1 9 9 9.01 9.01 0 0 1-9-9Z"})})},10509:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:32,height:32,viewBox:"0 0 32 32",...e,children:[(0,i.jsx)("circle",{cx:8,cy:16,r:2,fill:"currentColor"}),(0,i.jsx)("circle",{cx:16,cy:16,r:2,fill:"currentColor"}),(0,i.jsx)("circle",{cx:24,cy:16,r:2,fill:"currentColor"})]})},94781:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:32,height:32,viewBox:"0 0 30 30",...e,children:(0,i.jsx)("path",{fill:"#49cd37",d:"m13 24-9-9 1.414-1.414L13 21.171 26.586 7.586 28 9 13 24z"})})},26010:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{d:"M12 18c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm0-10c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zM12 4c-.6 0-1-.4-1-1V1c0-.6.4-1 1-1s1 .4 1 1v2c0 .6-.4 1-1 1zM12 24c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1s1 .4 1 1v2c0 .6-.4 1-1 1zM5.6 6.6c-.3 0-.5-.1-.7-.3L3.5 4.9c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l1.4 1.4c.4.4.4 1 0 1.4-.1.2-.4.3-.7.3zM19.8 20.8c-.3 0-.5-.1-.7-.3l-1.4-1.4c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l1.4 1.4c.4.4.4 1 0 1.4-.2.2-.5.3-.7.3zM3 13H1c-.6 0-1-.4-1-1s.4-1 1-1h2c.6 0 1 .4 1 1s-.4 1-1 1zM23 13h-2c-.6 0-1-.4-1-1s.4-1 1-1h2c.6 0 1 .4 1 1s-.4 1-1 1zM4.2 20.8c-.3 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l1.4-1.4c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-1.4 1.4c-.2.2-.4.3-.7.3zM18.4 6.6c-.3 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l1.4-1.4c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-1.4 1.4c-.2.2-.5.3-.7.3z"})})},31172:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M4 4a2 2 0 0 1 2-2h8a1 1 0 0 1 .707.293l5 5A1 1 0 0 1 20 8v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4zm13.586 4L14 4.414V8h3.586zM12 4H6v16h12V10h-5a1 1 0 0 1-1-1V4z"})})},92923:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{width:18,height:18,viewBox:"0 0 32 32",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M27.85 29H30l-6-15h-2.35l-6 15h2.15l1.6-4h6.85zm-7.65-6 2.62-6.56L25.45 23zM18 7V5h-7V2H9v3H2v2h10.74a14.71 14.71 0 0 1-3.19 6.18A13.5 13.5 0 0 1 7.26 9h-2.1a16.47 16.47 0 0 0 3 5.58A16.84 16.84 0 0 1 3 18l.75 1.86A18.47 18.47 0 0 0 9.53 16a16.92 16.92 0 0 0 5.76 3.84L16 18a14.48 14.48 0 0 1-5.12-3.37A17.64 17.64 0 0 0 14.8 7z"})})},2579:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:32,height:32,viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M16 7H3V5h13v2M3 19h13v-2H3v2m19-7-4-3v2H3v2h15v2l4-3Z"})})},87861:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r}}),n("2363");var i=n("39980"),r=e=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:32,height:32,viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"#22a041",d:"M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"})})},95022:function(e,t,n){"use strict";n.r(t),n.d(t,{Badge:function(){return nz},Button:function(){return tU},DocLayout:function(){return t$},HomeFooter:function(){return nE},HomeLayout:function(){return tQ},LastUpdated:function(){return tc},Layout:function(){return tW},Link:function(){return th},Nav:function(){return nf},NotFoundLayout:function(){return eD},PackageManagerTabs:function(){return nW},PrevNextPage:function(){return tx},RenderType:function(){return e8},Search:function(){return nS},SearchPanel:function(){return nP},SourceCode:function(){return nU},Steps:function(){return nV},Tab:function(){return ny},Tabs:function(){return nv},Toc:function(){return tT},bindingAsideScroll:function(){return eG},default:function(){return id},getCustomMDXComponent:function(){return ia},getLogoUrl:function(){return ti},isActive:function(){return tn},isMobileDevice:function(){return tr},renderHtmlOrText:function(){return ta},renderInlineMarkdown:function(){return td},scrollToTarget:function(){return eV},setup:function(){return eZ},useEditLink:function(){return eK},useEnableNav:function(){return eU},useFullTextSearch:function(){return te},useHiddenNav:function(){return eq},useLocaleSiteData:function(){return eH},usePathUtils:function(){return eY},usePrevNextPage:function(){return eW},useRedirect4FirstVisit:function(){return tt},useSidebarData:function(){return e$}});var i,r,a,d,o,l,s,c,u,h,p,x,f,m,g,b,v,y,I,k,w,j,P,S,C=n("69423"),z=n("39980");n("2815");var E=n("20288"),_=n("75962"),N=n("2363"),A=n("96954"),T=n("87429"),L=n("71082"),O=n("85653"),M=n("25756"),B=n("93371"),R=n("49555"),D=n("75686"),H=n("47841"),F=n("99593"),$=n("29310"),W=n("56902"),K=n("77761"),U=n("54701"),q=n("51460"),V=n("10509"),G=n("12555"),Z=n("26010"),Y=n("59452"),X=n("13328"),Q=n("83788"),J=n("92923"),ee=n("16480"),et=n("50287"),en=n("49616"),ei=n("61850"),er=n("51801"),ea=n("34332"),ed=n("71780"),eo=n("70146"),el=n("99482"),es=n("50193"),ec=n("56428"),eu=n("31172"),eh=n("2579"),ep=n("87861"),ex=n("16288"),ef=n("52305"),em=n("79522"),eg=n("76363"),eb=n("94781"),ev=n("3245"),ey=n("5434"),eI=n("89743"),ek=n("54218"),ew=Object.defineProperty,ej=Object.defineProperties,eP=Object.getOwnPropertyDescriptors,eS=Object.getOwnPropertySymbols,eC=Object.prototype.hasOwnProperty,ez=Object.prototype.propertyIsEnumerable,eE=(e,t,n)=>t in e?ew(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,e_=(e,t)=>{for(var n in t||(t={}))eC.call(t,n)&&eE(e,n,t[n]);if(eS)for(var n of eS(t))ez.call(t,n)&&eE(e,n,t[n]);return e},eN=(e,t)=>ej(e,eP(t)),eA=(e,t)=>{var n={};for(var i in e)eC.call(e,i)&&0>t.indexOf(i)&&(n[i]=e[i]);if(null!=e&&eS)for(var i of eS(e))0>t.indexOf(i)&&ez.call(e,i)&&(n[i]=e[i]);return n},eT=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},eL=(e,t,n)=>(eT(e,t,"read from private field"),n?n.call(e):t.get(e)),eO=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},eM=(e,t,n,i)=>(eT(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n),eB=(e,t,n)=>(eT(e,t,"access private method"),n),eR=(e,t,n)=>new Promise((i,r)=>{var a=e=>{try{o(n.next(e))}catch(e){r(e)}},d=e=>{try{o(n.throw(e))}catch(e){r(e)}},o=e=>e.done?i(e.value):Promise.resolve(e.value).then(a,d);o((n=n.apply(e,t)).next())});function eD(){let{siteData:e}=(0,C.usePageData)(),t=e.lang;if(!(t&&"undefined"!=typeof window&&location.pathname.includes(`/${t}/`)))return(0,z.jsxs)("div",{className:"m-auto mt-50 p-16 sm:p-8 sm:pt-24 sm:pb-40 text-center flex-center flex-col",children:[(0,z.jsx)("p",{className:"text-6xl font-semibold",children:"404"}),(0,z.jsx)("h1",{className:"leading-5 pt-3 text-xl font-bold",children:"PAGE NOT FOUND"}),(0,z.jsx)("div",{style:{height:"1px"},className:"mt-6 mx-auto mb-4.5 w-16 bg-gray-light-1"}),(0,z.jsx)("div",{className:"pt-5",children:(0,z.jsx)("a",{className:"py-2 px-4 rounded-2xl inline-block border-solid border-brand text-brand font-medium hover:border-brand-dark hover:text-brand-dark transition-colors duration-300",href:e.base,"aria-label":"go to home",children:"Take me home"})})]});{let e=location.pathname.replace(`/${t}/`,"/");return window.location.replace(e),(0,z.jsx)(z.Fragment,{})}}function eH(){var e,t,n;let i=(0,C.usePageData)(),{page:{lang:r}}=i,a=null!=(t=null==(e=null==i?void 0:i.siteData)?void 0:e.themeConfig)?t:{},d=null!=(n=i.siteData.lang)?n:"",o=null==a?void 0:a.locales;return o&&0!==o.length?eN(e_({},o.find(e=>e.lang===r)),{langRoutePrefix:r===d?"/":r}):{nav:a.nav,sidebar:a.sidebar,prevPageText:a.prevPageText,nextPageText:a.nextPageText,sourceCodeText:a.sourceCodeText,searchPlaceholderText:a.searchPlaceholderText}}var eF=(e,t)=>{let n;for(let i of Object.keys(e)){if(n&&n!==i)continue;if((0,C.isEqualPath)((0,C.withBase)(i),t))return{group:"Documentation",items:e[i]};let r=e[i].find(r=>{let a=r=>{if(!t.startsWith((0,C.withBase)(i))){for(let r of Object.keys(e))if(r!==i&&t.startsWith((0,T.addTrailingSlash)((0,C.withBase)(r))))return n=r,!1}let d=()=>"link"in r&&(0,C.isEqualPath)((0,C.withBase)(r.link),t);return"items"in r?!!d()||r.items.some(e=>a(e)):d()};return a(r)});if(r){let t=e[i];return{group:"text"in r&&r.text||"",items:t}}}return{group:"Documentation",items:[]}};function e$(){var e;let t=eH(),n=null!=(e=t.sidebar)?e:{},{pathname:i}=(0,C.useLocation)(),r=decodeURIComponent(i),[a,d]=(0,N.useState)(eF(n,r));return(0,N.useEffect)(()=>{d(eF(n,r))},[r,t.lang]),a}function eW(){let{pathname:e}=(0,C.useLocation)(),{items:t}=e$(),n=[],i=e=>{"items"in e?(e.link&&n.push({text:e.text,link:e.link}),e.items.forEach(e=>{"dividerType"in e||i(e)})):n.push(e)};t.forEach(e=>!("dividerType"in e)&&i(e));let r=n.findIndex(t=>(0,C.isEqualPath)((0,C.withBase)(t.link),e)),a=n[r-1]||null;return{prevPage:a,nextPage:n[r+1]||null}}function eK(){var e,t,n;let{siteData:i,page:r}=(0,C.usePageData)(),a=null!=(n=null!=(t=eH().editLink)?t:null==(e=i.themeConfig)?void 0:e.editLink)?n:{};if(!a.docRepoBaseUrl||!a.text)return null;let{docRepoBaseUrl:d}=a;!d.endsWith("/")&&(d+="/");let o=r._relativePath.replace(/\\/g,"/"),l=`${d}${o}`;return{text:a.text,link:l}}function eU(){var e;let{siteData:{themeConfig:t},page:{frontmatter:n={}}}=(0,C.usePageData)(),i=(null==(e=null==n?void 0:n.navbar)||e)&&(null==t?void 0:t.hideNavbar)!=="always",[r,a]=(0,N.useState)(i);return[r,a]}function eq(){var e;let{siteData:{themeConfig:t}}=(0,C.usePageData)(),n=null!=(e=t.hideNavbar)?e:"never",[i,r]=(0,N.useState)(!1),{pathname:a}=(0,C.useLocation)(),d=(0,N.useRef)(0);return"never"!==n&&("always"===n||((0,N.useEffect)(()=>{r(!1);let e=(0,L.throttle)(()=>{let{scrollTop:e}=document.documentElement;if(e!==d.current)r(d.current>0&&e-d.current>0),d.current=e<=0?0:e},200);return window.addEventListener("mousewheel",e),window.addEventListener("touchmove",e),()=>{window.removeEventListener("mousewheel",e),window.removeEventListener("touchmove",e)}},[a]),i))}function eV(e,t,n=72){let i=parseInt(window.getComputedStyle(e).paddingTop,10),r=window.scrollY+e.getBoundingClientRect().top-n-i;window.scrollTo(e_({left:0,top:Math.round(r)},t?{behavior:"smooth"}:{}))}function eG(){let e=document.getElementById("aside-container"),t=Array.from(document.querySelectorAll(".rspress-doc .header-anchor")).filter(e=>{var t;return(null==(t=e.parentElement)?void 0:t.tagName)!=="H1"});if(!e||!t.length)return;let n=null;if(!Array.from((null==e?void 0:e.getElementsByTagName("a"))||[]).map(e=>decodeURIComponent(e.hash)).length)return;let i=(t,i)=>{if(t[i]){let r=t[i].getAttribute("href"),a=null==e?void 0:e.querySelector(`a[href="#${null==r?void 0:r.slice(1)}"] > span`);a&&(n&&n.classList.remove("aside-active"),(n=a).classList.add("aside-active"))}},r=()=>{if(document.documentElement.scrollTop+window.innerHeight>=document.documentElement.scrollHeight)i(t,t.length-1);else for(let e=0;e=d&&a{n&&n.classList.remove("aside-active"),window.removeEventListener("scroll",a)}}function eZ(){(0,T.inBrowser)()&&(window.addEventListener("click",e=>{let t=e.target.closest("a");if(t){let{origin:n,hash:i,target:r,pathname:a,search:d}=t,o=window.location;i&&"_blank"!==r&&n===o.origin&&(a===o.pathname&&d===o.search&&i&&t.classList.contains("header-anchor")?(e.preventDefault(),history.pushState(null,"",i),!function(e,t,n=!1){let i=null;try{i=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t.slice(1)))}catch(e){console.warn(e)}i&&eV(i,n)}(t,i,!0),window.dispatchEvent(new Event("hashchange"))):window.addEventListener("RspressReloadContent",()=>{location.hash.length>1&&eV(document.getElementById(location.hash.slice(1)),!1)}))}},{capture:!0}),window.addEventListener("hashchange",e=>{e.preventDefault()}))}function eY(){let e=(0,C.useLang)(),t=(0,C.useVersion)(),n=(0,C.usePageData)(),i=n.siteData.lang,r=n.siteData.multiVersion.default;return{normalizeLinkHref:n=>{let a=n;if(!i&&!r||(0,T.isExternalUrl)(a)||a.startsWith("#"))return a;{let n=(a=(0,C.removeBase)(a)).split("/").filter(Boolean),d="",o="",l="";return r&&(t!==r?(d=t,n[0]===t&&n.shift()):n[0]===r&&n.shift()),i&&(e!==i?(o=e,n[0]===e&&n.shift()):n[0]===i&&n.shift()),l=n.join("/"),(0,C.normalizeHrefInRuntime)((0,C.withBase)([d,o,l].filter(Boolean).join("/")))}}}}var eX="default",eQ=/[\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3]/u;function eJ(e){let t=e.toString().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"");return eQ.test(String(e))?t.normalize("NFC"):t}function e1(e){return e.replace(/https?:\/\/[^/]+/,"")}function e0(e){return e.charCodeAt(0)>255?3:1}var e2=e=>e.map(e=>"string"==typeof e?{value:e,label:e}:e);function e3(e,t){let n=0,i=0;for(let r=0;r=t);r++)i+=e0(e.charAt(r)),n++;return n}function e4(e){let t=0;for(let n=0;ne.lang===t).map(e=>eN(e_({},e),{normalizedContent:eJ(e.content),headers:e.toc.map(e=>eJ(e.text)).join(" "),normalizedTitle:eJ(e.title)})),i={tokenize:"full",async:!0,doc:{id:"routePath",field:["normalizedTitle","headers","normalizedContent"]},cache:100,split:/\W+/};eM(this,r,O.create(i)),eM(this,a,O.create(eN(e_({},i),{tokenize(e){let t=[],n=null;do(n=e5.exec(e))&&t.push(n[0]);while(n);return t}}))),eL(this,r).add(n),eL(this,a).add(n)})}search(e){return eR(this,null,function*(){var t,n;let{keyword:i,limit:d}=e,o={query:i,limit:d,field:["normalizedTitle","headers","normalizedContent"]};return[{index:eX,hits:(yield Promise.all([null==(t=eL(this,r))?void 0:t.search(o),null==(n=eL(this,a))?void 0:n.search(o)])).flat(2).filter(Boolean)}]})}};r=new WeakMap,a=new WeakMap,d=new WeakSet,o=function(e){return eR(this,null,function*(){return(yield fetch(`/builder/static/${T.SEARCH_INDEX_NAME}${e?`.${e}`:""}.${M.default[e]}.json`)).json()})};var e7=class{constructor(){eO(this,l,void 0)}init(e){return eR(this,null,function*(){eM(this,l,e)})}search(e){return eR(this,null,function*(){let{apiUrl:t,searchIndexes:n}=eL(this,l),{keyword:i,limit:r}=e,a=Object.entries({keyword:i,limit:r.toString(),searchIndexes:(null==n?void 0:n.map(e=>"string"==typeof e?e:e.value).join(","))||"",lang:eL(this,l).currentLang}).map(e=>e.map(encodeURIComponent).join("=")).join("&");try{return(yield fetch(`${t}?${a}`)).json()}catch(e){return console.error(e),[]}})}};l=new WeakMap;var e8=((i=e8||{}).Default="default",i.Custom="custom",i),e9=class{constructor(e){if(eO(this,h),eO(this,x),eO(this,m),eO(this,b),eO(this,y),eO(this,k),eO(this,s,void 0),eO(this,c,eX),eO(this,u,void 0),eM(this,s,e),eM(this,c,e.indexName),"remote"===e.mode)eM(this,u,new e7);else eM(this,u,new e6)}init(){return eR(this,null,function*(){var e;yield null==(e=eL(this,u))?void 0:e.init(eL(this,s))})}match(e,t=7){return eR(this,null,function*(){var n;let i=yield null==(n=eL(this,u))?void 0:n.search({keyword:e,limit:t}),r=eJ(e),a=(null==i?void 0:i.find(e=>eB(this,k,w).call(this,e.index)))||{index:eX,renderType:"default",hits:[]};return[{group:eL(this,c),renderType:"default",result:eB(this,h,p).call(this,r,a)},...((null==i?void 0:i.filter(e=>!eB(this,k,w).call(this,e.index)))||[]).map(e=>({group:e.index,renderType:"default",result:eB(this,h,p).call(this,r,e)}))]})}};function te(){var e;let t=(0,C.useLang)(),[n,i]=(0,N.useState)(!1),{sidebar:r}=eH(),a=e=>eF(r,e).group,d=(0,N.useRef)(null);return(0,N.useEffect)(()=>{!function(){eR(this,null,function*(){if(!n){let e=new e9({mode:"local",currentLang:t,extractGroupName:a});d.current=e,yield e.init(),i(!0)}})}()},[]),{initialized:n,search:null==(e=d.current)?void 0:e.match.bind(d.current)}}function tt(){let{siteData:e,page:t}=(0,C.usePageData)(),n=e.lang||"",i=Object.values(e.themeConfig.locales||{}).map(e=>e.lang)||[],r=t.lang;(0,N.useEffect)(()=>{if(!n)return;let{pathname:e}=window.location,t=(0,C.removeBase)(e),a="rspress-visited";if(localStorage.getItem(a))return;localStorage.setItem(a,"1");let d=window.navigator.language.split("-")[0];i.includes(d)&&d!==r&&(d===n?window.location.replace(e.replace(`/${r}`,"")):r===n?window.location.replace((0,C.withBase)(`/${d}${t}`)):window.location.replace(e.replace(`/${r}`,`/${d}`)))},[])}function tn(e,t,n=!1){return!!t&&(n?(0,C.isEqualPath)(e,t):(0,C.isEqualPath)(e,t)||e.startsWith(t))}function ti(e,t){return"string"==typeof e?e:"dark"===t?e.dark:e.light}function tr(){return window.innerWidth<768}function ta(e){return e?(0,L.isNumber)(e)?e:(0,R.default)(e)?B(e):e:""}function td(e){return ta(e.replace(/\*\*(.*?)\*\*/g,"$1").replace(/`(.*?)`/g,"$1"))}function to(e){var t;let{headers:n}=e,i=n.length>0,r=(null==(t=n[0])?void 0:t.depth)||2,a=eq();return(0,N.useEffect)(()=>{let e;setTimeout(()=>{e=eG()},100);let t=decodeURIComponent(window.location.hash);if(t){let e=document.getElementById(t.slice(1));e&&eV(e,!1,a?0:D.DEFAULT_NAV_HEIGHT)}else window.scrollTo(0,0);return()=>{e&&e()}},[n]),(0,z.jsx)("div",{className:"flex flex-col",children:(0,z.jsx)("div",{className:i?"(0,z.jsx)("li",{children:(0,z.jsx)("a",{href:`#${e.id}`,className:"aside-link transition-all duration-300 hover:text-text-1 text-text-2 block",style:{paddingLeft:(e.depth-r)*12,fontWeight:"semibold"},onClick:t=>{t.preventDefault(),window.location.hash=e.id;let n=document.getElementById(e.id);n&&eV(n,!1,a?0:D.DEFAULT_NAV_HEIGHT)},children:(0,z.jsx)("span",{className:"aside-link-text block",children:td(e.text)})})},e.id))})})]})})})}s=new WeakMap,c=new WeakMap,u=new WeakMap,h=new WeakSet,p=function(e,t){let n=[];return null==t||t.hits.forEach(t=>{eB(this,x,f).call(this,t,e,n),!eB(this,m,g).call(this,t,e,n)&&eB(this,b,v).call(this,t,e,n)}),n},x=new WeakSet,f=function(e,t,n){let{title:i=""}=e,r=eJ(i);return!!r.includes(t)&&(n.push({type:"title",title:i,header:i,link:`${e.domain}${(0,C.normalizeHrefInRuntime)(e.routePath)}`,query:t,highlightInfoList:[{start:r.indexOf(t),length:e4(t)}],group:eL(this,s).extractGroupName(e.routePath)}),!0)},m=new WeakSet,g=function(e,t,n){let{toc:i=[],domain:r="",title:a=""}=e;for(let[d,o]of i.entries())if(eJ(o.text).includes(t)){let l=(function(e,t){let n=e[t],i=t,r=[n];for(;n&&n.depth>2;){let t=!1;for(let a=i-1;a>=0;a--){let d=e[a];if(d.depth>1&&d.depth===n.depth-1){n=d,i=a,r.unshift(n),t=!0;break}}if(!t)break}return r})(i,d).map(e=>e.text).join(" > "),c=eJ(l).indexOf(t),u=`${a} > `;return n.push({type:"header",title:e.title,header:`${u}${l}`,highlightInfoList:[{start:c+u.length,length:e4(t)}],link:`${r}${(0,C.normalizeHrefInRuntime)(e.routePath)}#${o.id}`,query:t,group:eL(this,s).extractGroupName(e.routePath)}),!0}return!1},b=new WeakSet,v=function(e,t,n){var i,r,a;let{content:d,toc:o,domain:l}=e;if(!d.length)return;let c=eJ(d),u=c.indexOf(t),h=o.map(e=>e.charIndex),p=e=>o[h.findIndex((t,n)=>{if(!(n=e)return!0}return!1})];if(-1===u){let a=null==(i=e._matchesPosition)?void 0:i.content;if(!(null==a?void 0:a.length))return;let o=e._matchesPosition.content[0].start,c=p(o),u=e3(d,o),h=e3(d,o+100),x=d.slice(u,h),f=e._matchesPosition.content.filter(e=>e.start>=o&&e.start+e.length<=o+100).map(e=>({start:e3(d,e.start)-u+3,length:e.length}));n.push({type:"content",title:e.title,header:null!=(r=null==c?void 0:c.text)?r:e.title,link:`${l}${(0,C.normalizeHrefInRuntime)(e.routePath)}${c?`#${c.id}`:""}`,query:t,highlightInfoList:f,group:eL(this,s).extractGroupName(e.routePath),statement:`...${x}...`});return}for(;-1!==u;){let i=p(u),r=d.slice(0,u).lastIndexOf("\n");r=-1===r?0:r;let o=d.indexOf("\n\n",u+t.length),h=d.slice(r,o);h.length>100&&(h=eB(this,y,I).call(this,h,t));let x=eJ(h).indexOf(t),f=[{start:x,length:e4(t)}];n.push({type:"content",title:e.title,header:null!=(a=null==i?void 0:i.text)?a:e.title,statement:h,highlightInfoList:f,link:`${l}${(0,C.normalizeHrefInRuntime)(e.routePath)}${i?`#${i.id}`:""}`,query:t,group:eL(this,s).extractGroupName(e.routePath)}),u=c.indexOf(t,u+h.length-x)}},y=new WeakSet,I=function(e,t){let n=eJ(e).indexOf(eJ(t)),i=Math.floor((100-t.length)/2),r=e.slice(0,n);r.length>i&&(r=`...${e.slice(n-i+3,n)}`);let a=e.slice(n+t.length);return a.length>i&&(a=`${e.slice(n+t.length,n+i-3)}...`),r+t+a},k=new WeakSet,w=function(e){return e===eL(this,c)||e===eX};var tl={editLink:"editLink_2a169"};function ts(){let e=eK();if(!e)return null;let{text:t,link:n}=e;return(0,z.jsx)("a",{href:n,target:"_blank",className:tl.editLink,children:t})}function tc(){let{lastUpdatedText:e="Last Updated"}=eH(),{page:{lastUpdatedTime:t},siteData:n}=(0,C.usePageData)(),{themeConfig:i}=n,r=(null==i?void 0:i.lastUpdatedText)||e;return(0,z.jsx)("div",{className:"flex text-sm text-text-2 leading-6 sm:leading-8 font-medium",children:(0,z.jsxs)("p",{children:[r,": ",(0,z.jsx)("span",{children:t})]})})}var tu={link:"link_03735"};function th(e){let{href:t="/",children:n,className:i="",onNavigate:r}=e,a=eA(e,["href","children","className","onNavigate"]),d=(0,T.isExternalUrl)(t),o=d?"_blank":"",l=d?"noopener noreferrer":void 0,s=d?t:(0,C.withBase)((0,C.normalizeHrefInRuntime)(t)),c=(0,C.useNavigate)(),{pathname:u}=(0,C.useLocation)(),h=(0,C.isEqualPath)(u,s);return d?(0,z.jsx)("a",eN(e_({},a),{href:s,target:o,rel:l,className:`${tu.link} ${i}`,children:n})):(0,z.jsx)("a",eN(e_({},a),{className:`${tu.link} ${i} cursor-pointer`,rel:l,target:o,onClick:e=>eR(this,null,function*(){if(0!==e.button||e.currentTarget.target&&"_self"!==e.currentTarget.target||e.metaKey||e.shiftKey||e.altKey||e.ctrlKey)return;e.preventDefault();let t=s.split("#")[1];if(!d&&h&&t){let e=document.getElementById(t);e&&(0,$.scrollToTarget)(e,!0);return}if(!h){let e=(0,C.matchRoutes)(F.routes,(0,C.normalizeRoutePath)(s));if(null==e?void 0:e.length){let t=setTimeout(()=>{H.start()},200);yield e[0].route.preload(),clearTimeout(t),H.done()}null==r||r(),c(s,{replace:!1})}}),href:s,children:n}))}H.configure({showSpinner:!1});var tp={pagerLink:"pager-link_9b9a7",title:"title_9b9a7",next:"next_9b9a7",desc:"desc_9b9a7"};function tx(e){let{type:t,text:n,href:i}=e,{prevPageText:r="Previous Page",nextPageText:a="Next page"}=eH(),d="prev"===t?tp.pagerLink:`${tp.pagerLink} ${tp.next}`;return(0,z.jsxs)(th,{href:i,className:d,children:[(0,z.jsx)("span",{className:tp.desc,children:"prev"===t?r:a}),(0,z.jsx)("span",{className:tp.title,children:n})]})}var tf={prev:"prev_e7091",next:"next_e7091"};function tm(){let{prevPage:e,nextPage:t}=eW(),{lastUpdated:n=!1}=eH(),{siteData:i}=(0,C.usePageData)(),{themeConfig:r}=i,a=r.lastUpdated||n;return(0,z.jsxs)("footer",{className:"mt-8",children:[(0,z.jsx)("div",{className:"xs:flex pb-5 px-2 justify-end items-center",children:a&&(0,z.jsx)(tc,{})}),(0,z.jsx)("div",{className:"flex flex-col",children:(0,z.jsx)(ts,{})}),(0,z.jsxs)("div",{className:"flex flex-col sm:flex-row sm:justify-around gap-4 pt-6",children:[(0,z.jsx)("div",{className:"prev_e7091 flex flex-col",children:e?(0,z.jsx)(tx,{type:"prev",text:e.text,href:(0,C.normalizeHrefInRuntime)(e.link)}):null}),(0,z.jsx)("div",{className:"next_e7091 flex flex-col",children:t?(0,z.jsx)(tx,{type:"next",text:t.text,href:(0,C.normalizeHrefInRuntime)(t.link)}):null})]})]})}var tg={hidden:"hidden_f6cde",container:"container_f6cde",navContainer:"navContainer_f6cde",leftNav:"leftNav_f6cde",rightNav:"rightNav_f6cde",singleItem:"singleItem_f6cde",activeItem:"activeItem_f6cde",navBarTitle:"navBarTitle_f6cde",menuItem:"menu-item_f6cde",mobileNavMenu:"mobileNavMenu_f6cde"},tb=()=>{var e;let{siteData:t}=(0,C.usePageData)(),n=(0,$.useLocaleSiteData)(),{logo:i}=t,r=null!=(e=n.title)?e:t.title,{theme:a}=(0,N.useContext)(C.ThemeContext),[d,o]=(0,N.useState)((0,$.getLogoUrl)(i,a));return(0,N.useEffect)(()=>{o((0,$.getLogoUrl)(i,a))},[a]),(0,z.jsx)("div",{className:`${tg.navBarTitle}`,children:(0,z.jsx)("a",{href:(0,C.withBase)(n.langRoutePrefix||"/"),className:"flex items-center w-full h-full text-base font-semibold transition-opacity duration-300 hover:opacity-60",children:d?(0,z.jsx)("img",{src:(0,C.normalizeImagePath)(d),alt:"logo",id:"logo",className:"mr-4 rspress-logo"}):(0,z.jsx)("span",{children:r})})})},tv={navTitleMask:"navTitleMask_71eca",sidebar:"sidebar_71eca",sidebarContainer:"sidebarContainer_71eca",sidebarContent:"sidebarContent_71eca",open:"open_71eca",menuLink:"menuLink_71eca",menuItem:"menuItem_71eca",collapseContainer:"collapseContainer_71eca",menuItemStatic:"menuItemStatic_71eca",menuItemActive:"menuItemActive_71eca",menuGroupActive:"menuGroupActive_71eca"},ty=({tag:e})=>e?e.trim().startsWith("{if(h.current||!s.current||!u.current)return;c.current&&clearTimeout(c.current);let e=s.current,t=u.current,n=t.clientHeight+4;f?(e.style.maxHeight=`${n}px`,e.style.transitionDuration="0.5s",t.style.opacity="0",c.current=setTimeout(()=>{s.current&&(s.current.style.maxHeight="0px")},0)):(e.style.maxHeight=`${n}px`,e.style.transitionDuration="0.3s",t.style.opacity="1",c.current=setTimeout(()=>{s.current&&s.current.style.removeProperty("max-height")},300))},[f]),(0,N.useEffect)(()=>{h.current=!1},[]);let b=e=>{e.stopPropagation(),d(e=>{let t=[...e],n=a.split("-").map(Number),i=t[n.shift()];for(let e of n)i=i.items[e];return"items"in i&&(i.collapsed=!i.collapsed),t})};return(0,z.jsxs)("section",{className:"mt-0.5 block",style:{marginLeft:0===i?0:"18px"},children:[(0,z.jsxs)("div",{className:`flex justify-between items-center ${l&&!x?tv.menuGroupActive:""} ${x?tv.menuItemActive:m||n.link?tv.menuItem:tv.menuItemStatic}`,onMouseEnter:()=>n.link&&e.preloadLink(n.link),onClick:e=>{n.link?(o((0,C.withBase)((0,C.normalizeHrefInRuntime)(n.link))),f&&b(e)):m&&b(e)},style:{borderRadius:0===i?"0 var(--rp-radius) var(--rp-radius) 0":void 0,cursor:m||n.link?"pointer":"normal"},children:[(0,z.jsxs)("h2",{className:"py-2 px-3 text-sm font-medium flex",style:e_({},0===i?tE:{}),children:[(0,z.jsx)(ty,{tag:n.tag}),(0,z.jsx)("span",{className:"flex-center",children:(0,$.renderInlineMarkdown)(n.text)})]}),m&&(0,z.jsx)("div",{className:`${tv.collapseContainer} p-2 rounded-xl`,onClick:b,children:g})]}),(0,z.jsx)("div",{ref:s,className:"transition-all duration-300 ease-in-out",style:{overflow:"hidden",maxHeight:p.current?0:void 0},children:(0,z.jsx)("div",{ref:u,className:"rspress-sidebar-group transition-opacity duration-500 ease-in-out",style:{opacity:p.current?0:1,marginLeft:0===i?"12px":0},children:null==(t=null==n?void 0:n.items)?void 0:t.map((t,n)=>"dividerType"in t?(0,z.jsx)(tI,{depth:i+1,dividerType:t.dividerType},n):(0,z.jsx)("div",{children:(0,z.jsx)(tP,eN(e_({},e),{item:t,depth:i+1,id:`${a}-${n}`,preloadLink:e.preloadLink}))},n))})})]},a)}var tj=e=>e.replace(/\.(mdx?)$/,"");function tP(e){let{item:t,depth:n=0,activeMatcher:i,id:r,setSidebarData:a}=e,d="link"in t&&t.link&&i(t.link),{page:o}=(0,C.usePageData)(),l=(0,N.useRef)(null),s=(0,N.useRef)(t.text);return((0,N.useEffect)(()=>{var e;d&&(null==(e=l.current)||e.scrollIntoView({block:"center"}))},[]),t._fileKey===tj(o.pagePath)&&o.title&&(s.current=o.title),"items"in t)?(0,z.jsx)(tw,{id:r,item:t,depth:n,activeMatcher:i,collapsed:t.collapsed,setSidebarData:a,preloadLink:e.preloadLink},`${t.text}-${r}`):(0,z.jsx)(th,{href:(0,C.normalizeHrefInRuntime)(t.link),className:tv.menuLink,children:(0,z.jsxs)("div",{ref:l,onMouseEnter:()=>e.preloadLink(t.link),className:`${d?tv.menuItemActive:tv.menuItem} mt-0.5 py-2 px-3 font-medium flex`,style:e_(e_({fontSize:0===n?"14px":"13px",marginLeft:0===n?0:"18px",borderRadius:"0 var(--rp-radius) var(--rp-radius) 0"},0===n?tE:{}),d?{color:"var(--rp-c-brand)"}:{}),children:[(0,z.jsx)(ty,{tag:t.tag}),(0,z.jsx)("span",{className:"flex-center",children:(0,$.renderInlineMarkdown)(s.current)})]})})}function tS({sectionHeaderText:e,tag:t}){return(0,z.jsxs)("div",{className:"rspress-sidebar-section-header",children:[(0,z.jsx)(ty,{tag:t}),(0,z.jsx)("span",{children:(0,$.renderInlineMarkdown)(e)})]})}var tC=e=>"dividerType"in e,tz=e=>"sectionHeaderText"in e,tE={fontSize:"14px",paddingLeft:"24px",fontWeight:"bold"},t_=new WeakMap;function tN(e){let{isSidebarOpen:t,beforeSidebar:n,afterSidebar:i,uiSwitch:r}=e,{items:a}=e$(),d=eH(),{pathname:o}=(0,C.useLocation)(),l=(0,T.normalizeSlash)(d.langRoutePrefix||""),[s,c]=(0,N.useState)(a.filter(Boolean).flat()),u=decodeURIComponent(o);(0,N.useEffect)(()=>{if(a===s)return;t_=new WeakMap;let e=t=>t_.has(t)?t_.get(t):"link"in t&&t.link&&p(t.link)||"items"in t&&t.items.some(t=>e(t))?(t_.set(t,!0),!0):(t_.set(t,!1),!1),t=n=>{"items"in n&&(n.items.forEach(t),e(n)&&(n.collapsed=!1))},n=a.filter(Boolean).flat();n.forEach(t),c(n)},[a,u]);let h=e=>e.replace(l,""),p=e=>tn((0,C.removeBase)(h(u)),h(e),!0),x=e=>{let t=(0,C.matchRoutes)(F.routes,e);if(null==t?void 0:t.length){let{route:e}=t[0];e.preload()}};return(0,z.jsx)("aside",{className:`${tv.sidebar} rspress-sidebar ${t?tv.open:""}`,children:(0,z.jsxs)("div",{className:`${tv.sidebarContainer}`,children:[r.showNavbar?(0,z.jsx)("div",{className:tv.navTitleMask,children:(0,z.jsx)(tb,{})}):null,(0,z.jsx)("div",{className:`mt-1 ${tv.sidebarContent}`,children:(0,z.jsx)("div",{className:"rspress-scrollbar",style:{maxHeight:"calc(100vh - var(--rp-nav-height) - 8px)",overflow:"auto"},children:(0,z.jsxs)("nav",{className:"pb-2",children:[n,s.map((e,t)=>{var n;return tC(e)?(0,z.jsx)(tI,{depth:0,dividerType:e.dividerType},t):tz(e)?(0,z.jsx)(tS,{sectionHeaderText:e.sectionHeaderText,tag:e.tag},t):(0,z.jsx)(tP,{id:String(t),item:e,depth:0,activeMatcher:p,collapsed:null==(n=e.collapsed)||n,setSidebarData:c,preloadLink:x},t)}),i]})})})]})})}var tA=e=>(0,z.jsx)("li",{children:(0,z.jsx)("a",{href:`#${e.id}`,className:"rspress-toc-link sm:text-normal text-sm",style:{marginLeft:(e.depth-2)*12},onClick:t=>{t.preventDefault(),window.location.hash=e.id;let n=document.getElementById(e.id);n&&(0,$.scrollToTarget)(n,!1)},children:(0,z.jsx)("span",{className:"rspress-toc-link-text block",children:(0,$.renderInlineMarkdown)(e.text)})})},e.id);function tT(){let{page:e}=(0,C.usePageData)();return(0,z.jsx)("ul",{children:e.toc.map(e=>(0,z.jsx)(tA,e_({},e),e.id))})}function tL({beforeSidebar:e,afterSidebar:t,uiSwitch:n}){let[i,r]=(0,N.useState)(!1),[a,d]=(0,N.useState)(!1),o=(0,N.useRef)(),{pathname:l}=(0,C.useLocation)();(0,N.useEffect)(()=>{r(!1)},[l]),(0,N.useEffect)(()=>(document.addEventListener("mouseup",s),document.addEventListener("touchend",s),()=>{document.addEventListener("mouseup",s),document.removeEventListener("touchend",s)}),[]);let s=e=>{let{current:t}=o;t&&!t.contains(e.target)&&d(!1)};return(0,z.jsxs)(N.Fragment,{children:[(0,z.jsxs)("div",{className:"rspress-sidebar-menu",children:[(0,z.jsxs)("button",{onClick:function(){r(!0)},className:"flex-center",children:[(0,z.jsx)("div",{className:"text-md mr-2",children:(0,z.jsx)(tk,{icon:W.default})}),(0,z.jsx)("span",{className:"text-sm",children:"Menu"})]}),(0,z.jsxs)("button",{onClick:()=>d(e=>!e),className:"flex-center",children:[(0,z.jsx)("span",{className:"text-sm",children:"On this page"}),(0,z.jsx)("div",{className:"text-md mr-2",children:(0,z.jsx)(tk,{icon:K.default})})]}),(0,z.jsx)("div",{className:"rspress-local-toc-container",style:{display:a?"block":"none"},ref:o,children:(0,z.jsx)(tT,{})})]}),(0,z.jsx)(tN,{isSidebarOpen:i,beforeSidebar:e,afterSidebar:t,uiSwitch:n}),i?(0,z.jsx)("div",{onClick:function(){r(!1)},className:"rspress-sidebar-back-drop",style:{background:"rgba(0, 0, 0, 0.6)"}}):null]})}var tO={"header-anchor":"header-anchor_8f375",headerAnchor:"header-anchor_8f375","overview-groups":"overview-groups_8f375",overviewGroups:"overview-groups_8f375","overview-group-li":"overview-group-li_8f375",overviewGroupLi:"overview-group-li_8f375","level-2":"level-2_8f375",level2:"level-2_8f375","overview-group":"overview-group_8f375",overviewGroup:"overview-group_8f375",header:"header_8f375"},tM="Others";function tB(e){let{siteData:t,page:{routePath:n,title:i}}=(0,C.usePageData)(),{pages:r}=t,a=r.filter(e=>e.routePath.startsWith(n.replace(/overview$/,""))&&e.routePath!==n),{items:d}=e$();function o(e){var t;let n=a.find(t=>(0,C.isEqualPath)(t.routePath,(0,C.withBase)(e.link||""))),i=e=>"link"in e&&e.link?e.link:"items"in e?i(e.items[0]):"",r=i(e);return eN(e_({},e),{link:r,headers:(null==(t=null==n?void 0:n.toc)?void 0:t.filter(e=>2===e.depth))||[]})}let l=(0,N.useMemo)(()=>{let e=d.filter(e=>"items"in e).map(e=>({name:e.text||"",items:e.items.map(o).filter(Boolean)})),t=d.filter(e=>!("items"in e)&&!(0,C.isEqualPath)(e.link||"",n));return[...e,...t.length>0?[{name:tM,items:t.map(o)}]:[]]},[d]);return(0,z.jsxs)("div",{className:"overview-index mx-auto px-8",children:[(0,z.jsx)("div",{className:"flex items-center justify-between",children:!i&&(0,z.jsx)("h1",{className:"text-3xl leading-10 tracking-tight",children:"Overview"})}),e.content,l.map(e=>(0,z.jsxs)("div",{className:"mb-16",children:[e.name===tM&&1===l.length?(0,z.jsx)("h2",{style:{paddingTop:0}}):(0,z.jsx)("h2",{children:e.name}),(0,z.jsx)("div",{className:tO.overviewGroups,children:e.items.map(e=>{var t;return(0,z.jsxs)("div",{className:tO.overviewGroup,children:[(0,z.jsx)("div",{className:"flex",children:(0,z.jsx)("h3",{style:{marginBottom:8},children:(0,z.jsx)(th,{href:(0,C.normalizeHrefInRuntime)(e.link),children:e.text})})}),(0,z.jsx)("ul",{className:"list-none",children:null==(t=e.headers)?void 0:t.map(t=>(0,z.jsx)("li",{className:`${tO.overviewGroupLi} ${tO[`level${t.depth}`]} first:mt-2`,children:(0,z.jsx)(th,{href:`${(0,C.normalizeHrefInRuntime)(e.link)}#${t.id}`,children:t.text})},t.id))})]},e.link)})})]},e.name))]})}var tR=(0,N.createContext)({}),tD={scrollToTop:"scroll-to-top_1a167",entered:"entered_1a167"};function tH(){let[e,t]=(0,N.useState)(!1),n=()=>{t((window.scrollY||document.documentElement.scrollTop)>0)};return(0,N.useEffect)(()=>{window.addEventListener("scroll",n)},[]),(0,z.jsx)("button",{className:`${tD.scrollToTop} ${e?tD.entered:""}`,onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})},children:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:"w-6 h-6",children:(0,z.jsx)("path",{fillRule:"evenodd",d:"M11.47 2.47a.75.75 0 0 1 1.06 0l7.5 7.5a.75.75 0 1 1-1.06 1.06l-6.22-6.22V21a.75.75 0 0 1-1.5 0V4.81l-6.22 6.22a.75.75 0 1 1-1.06-1.06l7.5-7.5Z",clipRule:"evenodd"})})})}var tF={asideContainer:"aside-container_edeb4",docLayout:"docLayout_edeb4",content:"content_edeb4"};function t$(e){var t,n;let{beforeDocFooter:i,afterDocFooter:r,beforeDoc:a,afterDoc:d,beforeOutline:o,afterOutline:l,beforeSidebar:s,afterSidebar:c,uiSwitch:u}=e,{siteData:h,page:p}=(0,C.usePageData)(),{toc:x=[],frontmatter:f}=p,[m,g]=(0,N.useState)({}),{themeConfig:b}=h,v=null!=(t=b.enableScrollToTop)&&t,y=eH(),I=(null==y?void 0:y.outlineTitle)||(null==b?void 0:b.outlineTitle)||"ON THIS PAGE",k=null!=(n=null==f?void 0:f.overview)&&n,w=(0,z.jsx)(tR.Provider,{value:{tabData:m,setTabData:g},children:(0,z.jsx)(A.MDXProvider,{components:(0,_.getCustomMDXComponent)(),children:(0,z.jsx)(C.Content,{})})});return(0,z.jsxs)("div",{className:`${tF.docLayout} pt-0`,style:e_({},u.showNavbar?{}:{marginTop:0}),children:[a,u.showSidebar?(0,z.jsx)(tL,{beforeSidebar:s,afterSidebar:c,uiSwitch:u}):null,(0,z.jsxs)("div",{className:`${tF.content} rspress-doc-container flex flex-shrink-0 mx-auto`,children:[(0,z.jsx)("div",{className:"w-full flex-1",children:k?(0,z.jsx)(tB,{content:w}):(0,z.jsxs)("div",{children:[(0,z.jsx)("div",{className:"rspress-doc",children:w}),(0,z.jsxs)("div",{className:"rspress-doc-footer",children:[i,u.showDocFooter&&(0,z.jsx)(tm,{}),r]})]})}),v&&(0,z.jsx)(C.NoSSR,{children:(0,z.jsx)(tH,{})}),u.showAside?(0,z.jsx)("div",{className:tF.asideContainer,style:e_({},u.showNavbar?{}:{marginTop:0,paddingTop:"32px"}),children:(0,z.jsxs)("div",{children:[o,(0,z.jsx)(to,{headers:x,outlineTitle:I}),l]})}):null]}),d]})}var tW=e=>{var t;let{top:n,bottom:i,beforeDocFooter:r,afterDocFooter:a,beforeDoc:d,afterDoc:o,beforeSidebar:l,afterSidebar:s,beforeOutline:c,afterOutline:u,beforeNavTitle:h,afterNavTitle:p,beforeNav:x,beforeHero:f,afterHero:m,beforeFeatures:g,afterFeatures:b,afterNavMenu:v}=e,y={beforeDocFooter:r,afterDocFooter:a,beforeDoc:d,afterDoc:o,beforeSidebar:l,afterSidebar:s,beforeOutline:c,afterOutline:u},I={beforeHero:f,afterHero:m,beforeFeatures:g,afterFeatures:b},{siteData:k,page:w}=(0,C.usePageData)(),{pageType:j,lang:P,title:S,frontmatter:N}=w,A=(0,$.useLocaleSiteData)();(0,U.useRedirect4FirstVisit)();let T=null!=(t=null==N?void 0:N.title)?t:S,L=k.title||A.title;T=T&&"doc"===j?`${T} - ${L}`:L;let O=(null==N?void 0:N.description)||k.description||A.description,M=(0,q.useUISwitch)();return(0,z.jsxs)("div",{children:[(0,z.jsxs)(E.Helmet,{htmlAttributes:{lang:P||"en"},children:[T?(0,z.jsx)("title",{children:T}):null,O?(0,z.jsx)("meta",{name:"description",content:O}):null]}),n,"blank"!==j&&M.showNavbar&&(0,z.jsx)(_.Nav,{beforeNavTitle:h,afterNavTitle:p,beforeNav:x,afterNavMenu:v}),(0,z.jsx)("section",{children:(()=>{switch(j){case"home":return(0,z.jsx)(_.default.HomeLayout,e_({},I));case"doc":return(0,z.jsx)(t$,eN(e_({},y),{uiSwitch:M}));case"404":return(0,z.jsx)(_.default.NotFoundLayout,{});case"custom":case"blank":return(0,z.jsx)(C.Content,{});default:return(0,z.jsx)(t$,e_({},y))}})()}),i]})},tK={button:"button_72e53",medium:"medium_72e53",big:"big_72e53",brand:"brand_72e53",alt:"alt_72e53"};function tU(e){let{theme:t="brand",size:n="big",href:i="/",external:r=!1,className:a=""}=e,d=null;return"button"===e.type?d="button":"a"===e.type&&(d=r?"a":th),N.createElement(null!=d?d:"a",{className:`button_72e53 ${tK[t]} ${tK[n]} ${a}`,href:i},e.text)}var tq={clip:"clip_c867a",mask:"mask_c867a"},tV={name:"modern",text:"modern ssg",tagline:"modern ssg",actions:[],image:void 0};function tG({frontmatter:e}){var t,n,i;let r=(null==e?void 0:e.hero)||tV,a=void 0!==r.image,d=a?"sm:max-w-xl":"sm:max-w-4xl",o=r.text?r.text.toString().split(/\n/g).filter(e=>""!==e):[];return(0,z.jsxs)("div",{className:"m-auto pt-0 px-6 pb-12 sm:pt-10 sm:px-16 md:pt-16 md:px-16 md:pb-16",children:[(0,z.jsx)("div",{className:"mask_c867a",style:{left:a?"75%":"50%"}}),(0,z.jsxs)("div",{className:"m-auto flex flex-col md:flex-row max-w-6xl min-h-[50vh] mt-12 sm:mt-0",children:[(0,z.jsxs)("div",{className:"flex flex-col justify-center text-center max-w-xl sm:max-w-4xl m-auto order-2 md:order-1",children:[(0,z.jsx)("h1",{className:"font-bold text-3xl pb-2 sm:text-6xl md:text-7xl m-auto sm:m-4 md:m-0 md:pb-3 lg:pb-2 leading-tight z-10",children:(0,z.jsx)("span",{className:"clip_c867a",style:{lineHeight:"1.3"},children:ta(r.name)})}),0!==o.length&&o.map(e=>(0,z.jsx)("p",{className:`rspress-home-hero-text mx-auto md:m-0 text-3xl sm:text-5xl md:text-6xl sm:pb-2 font-bold z-10 ${d}`,style:{lineHeight:"1.2"},children:ta(e)},e)),(0,z.jsx)("p",{className:`rspress-home-hero-tagline whitespace-pre-wrap pt-4 m-auto md:m-0 text-sm sm:tex-xl md:text-2xl text-text-2 font-medium z-10 ${d}`,children:ta(r.tagline)}),(null==(t=r.actions)?void 0:t.length)&&(0,z.jsx)("div",{className:"grid md:flex md:flex-wrap md:justify-center gap-3 m--1.5 pt-6 sm:pt-8 z-10",children:r.actions.map(e=>(0,z.jsx)("div",{className:"flex flex-shrink-0 p-1",children:(0,z.jsx)(tU,{type:"a",text:ta(e.text),href:(0,C.normalizeHrefInRuntime)(e.link),theme:e.theme,className:"w-full"})},e.link))})]}),a?(0,z.jsx)("div",{className:"rspress-home-hero-image md:flex-center m-auto order-1 md:order-2 sm:flex md:none lg:flex",children:(0,z.jsx)("img",{src:(0,C.normalizeImagePath)(null==(n=r.image)?void 0:n.src),alt:null==(i=r.image)?void 0:i.alt,width:375,height:375})}):null]})]})}var tZ={"grid-2":"grid-2_ffda3",grid2:"grid-2_ffda3","grid-4":"grid-4_ffda3",grid4:"grid-4_ffda3","grid-6":"grid-6_ffda3",grid6:"grid-6_ffda3","grid-3":"grid-3_ffda3",grid3:"grid-3_ffda3",featureCard:"featureCard_ffda3"},tY=e=>{let{span:t}=e;return`grid-${t||4}`};function tX({frontmatter:e}){let t=null==e?void 0:e.features;return(0,z.jsx)("div",{className:"overflow-hidden m-auto flex flex-wrap max-w-6xl",children:null==t?void 0:t.map(e=>{let{icon:t,title:n,details:i,link:r}=e;return(0,z.jsx)("div",{className:`${tZ[tY(e)]} rounded hover:var(--rp-c-brand)`,children:(0,z.jsx)("div",{className:"h-full p-2",children:(0,z.jsxs)("article",{className:`rspress-home-feature-card ${tZ.featureCard} h-full p-8 rounded-4xl border-transparent`,style:{cursor:r?"pointer":"auto"},onClick:()=>{r&&(window.location.href=r)},children:[t?(0,z.jsx)("div",{className:"flex-center",children:(0,z.jsx)("div",{className:"rspress-home-feature-icon w-12 h-12 text-3xl text-center",children:t})}):null,(0,z.jsx)("h2",{className:"rspress-home-feature-title font-bold text-center",children:n}),(0,z.jsx)("p",{className:"rspress-home-feature-detail leading-6 pt-2 text-sm text-text-2 font-medium",children:(0,$.renderHtmlOrText)(i)})]},n)})},n)})})}function tQ(e){let{beforeHero:t,afterHero:n,beforeFeatures:i,afterFeatures:r}=e,{page:{frontmatter:a}}=(0,C.usePageData)();return(0,z.jsxs)("div",{className:"relative",style:{minHeight:"calc(100vh - var(--rp-nav-height))",paddingBottom:"80px"},children:[(0,z.jsxs)("div",{className:"pb-12",children:[t,(0,z.jsx)(tG,{frontmatter:a}),n,i,(0,z.jsx)(tX,{frontmatter:a}),r]}),(0,z.jsx)(_.HomeFooter,{})]})}function tJ(e){let{pathname:t,base:n}=e,i=new RegExp(e.activeMatch||e.link).test((0,T.withoutBase)(t,n));return(0,z.jsx)(th,{href:(0,C.normalizeHrefInRuntime)(e.link),children:(0,z.jsxs)("div",{className:`rspress-nav-menu-item ${tg.singleItem} ${i?tg.activeItem:""} text-sm font-medium mx-1.5 px-3 py-2 flex items-center`,children:[(0,z.jsx)(ty,{tag:e.tag}),e.text,e.rightIcon]},e.text)})}var t1=e=>{null==j||j[e?"add":"remove"]("dark")},t0=()=>{let e=localStorage.getItem(T.APPEARANCE_KEY)||"auto";S=window.matchMedia("(prefers-color-scheme: dark)");let t="auto"===e?S.matches:"dark"===e;return t1(t),t};"undefined"!=typeof window&&"undefined"!=typeof localStorage&&(j=document.documentElement.classList,(()=>{var e;let t=!1===X.default.themeConfig.darkMode,n=null!=(e=window.RSPRESS_THEME)?e:window.MODERN_THEME;if(n){t1("dark"===n);return}!t&&t0()})());var t2=()=>null==j?void 0:j.contains("dark"),t3=()=>()=>{let e=t2();"undefined"!=typeof window&&"undefined"!=typeof localStorage&&(t1(!e),P=e?"light":"dark",localStorage.setItem(T.APPEARANCE_KEY,P))};function t4({onClick:e}){let{theme:t,setTheme:n}=(0,N.useContext)(C.ThemeContext),i=t3(),r=()=>{n(t0()?"dark":"light")};return(0,N.useEffect)(()=>(t2()&&n("dark"),"undefined"!=typeof window&&window.addEventListener("storage",r),()=>{"undefined"!=typeof window&&window.removeEventListener("storage",r)}),[]),(0,z.jsx)("div",{onClick:()=>{n("dark"===t?"light":"dark"),i(),null==e||e()},className:"md:mr-2 rspress-nav-appearance",children:(0,z.jsx)("div",{className:"p-1 border border-solid border-gray-300 text-gray-400 cursor-pointer rounded-md hover:border-gray-600 hover:text-gray-600 dark:hover:border-gray-200 dark:hover:text-gray-200 transition-all duration-300",children:(0,z.jsx)(tk,{icon:"light"===t?Z.default:Y.default,width:"18",height:"18",fill:"currentColor"})})})}var t5={socialLinksIcon:"social-links-icon_93d67",menuItem:"menu-item_93d67"},t6={discord:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"Discord"}),(0,z.jsx)("path",{d:"M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"})]}),facebook:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"Facebook"}),(0,z.jsx)("path",{d:"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"})]}),github:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"GitHub"}),(0,z.jsx)("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"})]}),gitlab:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"GitLab"}),(0,z.jsx)("path",{fill:"currentColor",d:"m21.94 13.11l-1.05-3.22c0-.03-.01-.06-.02-.09l-2.11-6.48a.859.859 0 0 0-.8-.57c-.36 0-.68.25-.79.58l-2 6.17H8.84L6.83 3.33a.851.851 0 0 0-.79-.58c-.37 0-.69.25-.8.58L3.13 9.82v.01l-1.07 3.28c-.16.5.01 1.04.44 1.34l9.22 6.71c.17.12.39.12.56-.01l9.22-6.7c.43-.3.6-.84.44-1.34M8.15 10.45l2.57 7.91l-6.17-7.91m8.73 7.92l2.47-7.59l.1-.33h3.61l-5.59 7.16m4.1-13.67l1.81 5.56h-3.62m-1.3.95l-1.79 5.51L12 19.24l-2.86-8.79M6.03 3.94L7.84 9.5H4.23m-1.18 4.19c-.09-.07-.13-.19-.09-.29l.79-2.43l5.82 7.45m11.38-4.73l-6.51 4.73l.02-.03l5.79-7.42l.79 2.43c.04.1 0 .22-.09.29"})]}),instagram:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"Instagram"}),(0,z.jsx)("path",{d:"M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 12 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678c-3.405 0-6.162 2.76-6.162 6.162 0 3.405 2.76 6.162 6.162 6.162 3.405 0 6.162-2.76 6.162-6.162 0-3.405-2.76-6.162-6.162-6.162zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405c0 .795-.646 1.44-1.44 1.44-.795 0-1.44-.646-1.44-1.44 0-.794.646-1.439 1.44-1.439.793-.001 1.44.645 1.44 1.439z"})]}),linkedin:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"LinkedIn"}),(0,z.jsx)("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"})]}),slack:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"Slack"}),(0,z.jsx)("path",{d:"M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"})]}),twitter:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"Twitter"}),(0,z.jsx)("path",{d:"M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"})]}),youtube:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"YouTube"}),(0,z.jsx)("path",{d:"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"})]}),juejin:(0,z.jsxs)("svg",{className:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","data-spm-anchor-id":"a313x.7781069.0.i5",children:[(0,z.jsx)("path",{d:"M465.189 161.792c-22.967 18.14-44.325 35.109-47.397 37.742l-5.851 4.68 10.971 8.632c5.998 4.827 11.85 9.508 13.02 10.532 1.17 1.024 17.993 14.336 37.156 29.696l34.962 27.795 5.267-3.95c2.925-2.194 23.259-18.432 45.348-35.986 21.943-17.555 41.253-32.768 42.716-33.646 1.609-1.024 2.779-2.194 2.779-2.78 0-0.438-9.655-8.63-21.504-17.846-11.995-9.363-22.674-17.847-23.845-18.871-15.945-13.02-49.737-39.059-50.76-39.059-0.586 0.147-19.896 14.922-42.862 33.061z m233.325 180.37C507.465 493.275 508.928 492.105 505.417 489.911c-3.072-1.902-11.556-8.485-64.073-50.03-9.07-7.168-18.578-14.775-21.358-16.823-2.78-2.194-8.777-6.875-13.312-10.532-4.68-3.657-10.679-8.339-13.312-10.533-13.165-10.24-71.095-56.027-102.107-80.457-5.852-4.681-11.41-8.485-12.142-8.485-0.731 0-10.971 7.754-22.674 17.116-11.703 9.508-22.674 18.286-24.284 19.456-1.755 1.17-5.12 3.95-7.46 6.144-2.34 2.34-4.828 4.096-5.413 4.096-3.072 0-0.731 3.072 6.437 8.777 4.096 3.218 8.777 6.875 10.094 8.046 1.316 1.024 10.24 8.045 19.748 15.506s23.26 18.286 30.428 23.99c19.31 15.215 31.89 25.308 127.853 101.084 47.836 37.742 88.796 69.779 90.844 71.095 3.657 2.487 3.95 2.487 7.46-0.292a1041.42 1041.42 0 0 0 16.092-12.727c6.875-5.413 14.775-11.703 17.554-13.897 30.135-23.699 80.018-63.05 81.774-64.512 1.17-1.024 12.434-9.802 24.868-19.603s37.888-29.696 56.32-44.324c18.579-14.629 46.227-36.425 61.733-48.567 15.506-12.142 27.794-22.528 27.502-23.26-0.878-1.17-57.637-47.104-59.978-48.274-0.731-0.439-18.578 12.727-39.497 29.257z","data-spm-anchor-id":"a313x.7781069.0.i2"}),(0,z.jsx)("path",{d:"M57.93 489.326c-15.215 12.288-28.527 23.405-29.697 24.576-2.34 2.194-5.412-0.44 80.018 66.852 33.207 26.185 32.622 25.747 57.637 45.495 10.386 8.192 36.279 28.672 57.783 45.495 38.18 30.135 44.91 35.401 52.663 41.545 2.048 1.756 22.967 18.14 46.372 36.572 23.26 18.432 74.167 58.514 112.933 89.088 38.912 30.573 71.095 55.734 71.826 56.027 0.732 0.293 7.46-4.389 14.921-10.386 21.797-16.97 90.259-70.949 101.523-79.872 5.705-4.535 12.873-10.24 15.945-12.58 3.072-2.488 6.436-5.12 7.314-5.852 0.878-0.878 11.85-9.509 24.283-19.31 20.773-16.091 59.1-46.226 64.366-50.615 1.17-1.024 5.12-4.096 8.777-6.875 3.657-2.78 7.9-6.29 9.509-7.607 1.609-1.317 14.775-11.703 29.257-23.113 29.11-22.82 42.277-33.207 88.503-69.632 17.262-13.605 32.475-25.454 33.646-26.478 2.486-2.048 31.451-24.869 44.617-35.255 4.827-3.657 9.07-7.168 9.508-7.607 0.44-0.585 5.998-4.827 12.435-9.8 6.436-4.828 13.165-10.24 15.067-11.85l3.365-2.926-9.948-7.753c-5.412-4.388-10.24-8.192-10.679-8.63-1.17-1.317-22.381-18.433-30.135-24.284-3.95-3.072-7.314-5.998-7.606-6.73-1.317-3.071-6.73 0.147-29.258 17.994-13.458 10.532-25.746 20.187-27.355 21.504-1.61 1.463-10.533 8.338-19.749 15.652-9.216 7.168-17.115 13.459-17.554 13.898-0.439 0.438-6.583 5.412-13.897 10.971-7.168 5.559-15.214 11.703-17.7 13.75-4.974 4.097-5.413 4.39-20.334 16.239-5.56 4.388-11.264 8.777-12.435 9.8-1.17 1.025-20.333 16.092-42.422 33.354-22.09 17.408-41.546 32.768-43.155 34.084-1.609 1.463-14.482 11.557-28.525 22.528s-40.814 32.037-59.539 46.812c-18.578 14.775-42.276 33.353-52.516 41.399s-23.26 18.285-28.965 22.82l-10.386 8.339-4.389-3.072c-2.34-1.756-4.68-3.511-5.12-3.95-0.439-0.439-4.973-4.096-10.24-8.046-11.849-9.216-14.482-11.264-16.676-13.166-0.878-0.877-4.243-3.51-7.46-5.851-3.22-2.487-6.145-4.681-6.584-5.12-0.439-0.439-6.875-5.705-14.482-11.703-7.607-5.851-14.921-11.556-16.091-12.58-1.317-1.17-17.116-13.605-35.255-27.795-17.993-14.19-35.109-27.648-38.035-29.842-5.705-4.681-33.499-26.624-125.074-98.743-34.523-27.209-72.704-57.344-84.846-66.852-49.737-39.498-55.15-43.594-56.905-43.447-0.877 0-14.043 10.24-29.257 22.528z","data-spm-anchor-id":"a313x.7781069.0.i3"})]}),qq:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",className:"iconify iconify--ri",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 24 24",children:(0,z.jsx)("path",{fill:"currentColor",d:"M19.913 14.529a31.977 31.977 0 0 0-.675-1.886l-.91-2.246c0-.026.012-.468.012-.696C18.34 5.86 16.507 2 12 2S5.66 5.86 5.66 9.7c0 .229.011.671.012.697l-.91 2.246a32.777 32.777 0 0 0-.675 1.886c-.86 2.737-.581 3.87-.369 3.895c.455.054 1.771-2.06 1.771-2.06c0 1.224.637 2.822 2.016 3.976c-.515.157-1.147.399-1.554.695c-.365.267-.319.54-.253.65c.289.481 4.955.307 6.303.157c1.347.15 6.014.324 6.302-.158c.066-.11.112-.382-.253-.649c-.407-.296-1.039-.538-1.555-.696c1.379-1.153 2.016-2.751 2.016-3.976c0 0 1.316 2.115 1.771 2.06c.212-.025.49-1.157-.37-3.894"})}),wechat:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",className:"iconify iconify--ri",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 24 24",children:(0,z.jsx)("path",{fill:"currentColor",d:"M18.574 13.711a.91.91 0 0 0 .898-.898c0-.498-.399-.898-.898-.898s-.898.4-.898.898c0 .5.4.898.898.898zm-4.425 0a.91.91 0 0 0 .898-.898c0-.498-.4-.898-.898-.898c-.5 0-.898.4-.898.898c0 .5.399.898.898.898zm6.567 5.04a.347.347 0 0 0-.172.37c0 .048 0 .097.025.147c.098.417.294 1.081.294 1.106c0 .073.025.122.025.172a.22.22 0 0 1-.221.22c-.05 0-.074-.024-.123-.048l-1.449-.836a.799.799 0 0 0-.344-.098c-.073 0-.147 0-.196.024c-.688.197-1.4.295-2.161.295c-3.66 0-6.607-2.457-6.607-5.505c0-3.047 2.947-5.505 6.607-5.505c3.659 0 6.606 2.458 6.606 5.505c0 1.647-.884 3.146-2.284 4.154zM16.673 8.099a9.105 9.105 0 0 0-.28-.005c-4.174 0-7.606 2.86-7.606 6.505c0 .554.08 1.09.228 1.6h-.089a9.963 9.963 0 0 1-2.584-.368c-.074-.025-.148-.025-.222-.025a.832.832 0 0 0-.418.123l-1.748 1.005c-.05.025-.099.05-.148.05a.273.273 0 0 1-.27-.27c0-.074.024-.123.049-.197c.024-.024.246-.834.369-1.324c0-.05.024-.123.024-.172a.556.556 0 0 0-.221-.442C2.058 13.376 1 11.586 1 9.598C1 5.945 4.57 3 8.95 3c3.765 0 6.93 2.169 7.723 5.098zm-5.154.418c.573 0 1.026-.477 1.026-1.026c0-.573-.453-1.026-1.026-1.026s-1.026.453-1.026 1.026s.453 1.026 1.026 1.026zm-5.26 0c.573 0 1.027-.477 1.027-1.026c0-.573-.454-1.026-1.027-1.026c-.572 0-1.026.453-1.026 1.026s.454 1.026 1.026 1.026z"})}),weibo:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",className:"iconify iconify--ri",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 24 24",children:(0,z.jsx)("path",{fill:"currentColor",d:"M17.525 11.378c1.263.392 2.669 1.336 2.669 3.004c0 2.763-3.98 6.239-9.964 6.239c-4.565 0-9.23-2.213-9.23-5.852c0-1.902 1.204-4.102 3.277-6.177c2.773-2.77 6.004-4.033 7.219-2.816c.537.537.588 1.464.244 2.572c-.178.557.525.25.525.25c2.24-.938 4.196-.994 4.909.027c.38.543.343 1.306-.008 2.19c-.163.407.048.471.36.563zm-7.282 7.939c3.641-.362 6.401-2.592 6.167-4.983c-.237-2.391-3.382-4.038-7.023-3.677c-3.64.36-6.403 2.59-6.167 4.98c.237 2.394 3.382 4.039 7.023 3.68zM6.16 14.438c.754-1.527 2.712-2.39 4.446-1.94c1.793.463 2.707 2.154 1.976 3.8c-.744 1.682-2.882 2.578-4.695 1.993c-1.752-.566-2.493-2.294-1.727-3.853zm1.446 2.587c.568.257 1.325.013 1.676-.55c.346-.568.163-1.217-.407-1.459c-.563-.237-1.291.008-1.64.553c-.354.547-.189 1.202.371 1.456zm2.206-1.808c.219.092.501-.012.628-.231c.123-.22.044-.466-.178-.548c-.216-.084-.486.018-.613.232c-.123.214-.054.458.163.547zM19.873 9.5a.725.725 0 1 1-1.378-.451a1.38 1.38 0 0 0-.288-1.357a1.395 1.395 0 0 0-1.321-.425a.723.723 0 1 1-.303-1.416a2.836 2.836 0 0 1 3.29 3.649zm-3.916-6.575A5.831 5.831 0 0 1 21.5 4.72a5.836 5.836 0 0 1 1.22 5.704a.838.838 0 0 1-1.06.54a.844.844 0 0 1-.542-1.062a4.143 4.143 0 0 0-4.807-5.327a.845.845 0 0 1-.354-1.65z"})}),zhihu:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",className:"iconify iconify--ri",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 24 24",children:(0,z.jsx)("path",{fill:"currentColor",d:"m12.344 17.963l-1.688 1.074l-2.131-3.35c-.44 1.402-1.172 2.665-2.139 3.825c-.402.483-.82.918-1.301 1.375c-.155.147-.775.717-.878.82l-1.414-1.414c.139-.139.787-.735.915-.856c.43-.408.795-.79 1.142-1.206c1.266-1.518 2.03-3.21 2.137-5.231H3v-2h4V7h-.868c-.689 1.266-1.558 2.222-2.618 2.857L2.486 8.143c1.395-.838 2.425-2.604 3.038-5.36l1.952.434c-.14.633-.303 1.227-.489 1.783H11.5v2H9v4h2.5v2H9.185l3.159 4.963zm3.838-.07L17.298 17H19V7h-4v10h.736l.446.893zM13 5h8v14h-3l-2.5 2l-1-2H13V5z"})}),bilibili:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",className:"iconify iconify--ri",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 24 24",children:(0,z.jsx)("path",{fill:"currentColor",d:"M18.223 3.086a1.25 1.25 0 0 1 0 1.768L17.08 5.996h1.17A3.75 3.75 0 0 1 22 9.747v7.5a3.75 3.75 0 0 1-3.75 3.75H5.75A3.75 3.75 0 0 1 2 17.247v-7.5a3.75 3.75 0 0 1 3.75-3.75h1.166L5.775 4.855a1.25 1.25 0 1 1 1.767-1.768l2.652 2.652c.079.079.145.165.198.257h3.213c.053-.092.12-.18.199-.258l2.651-2.652a1.25 1.25 0 0 1 1.768 0zm.027 5.42H5.75a1.25 1.25 0 0 0-1.247 1.157l-.003.094v7.5c0 .659.51 1.199 1.157 1.246l.093.004h12.5a1.25 1.25 0 0 0 1.247-1.157l.003-.093v-7.5c0-.69-.56-1.25-1.25-1.25zm-10 2.5c.69 0 1.25.56 1.25 1.25v1.25a1.25 1.25 0 1 1-2.5 0v-1.25c0-.69.56-1.25 1.25-1.25zm7.5 0c.69 0 1.25.56 1.25 1.25v1.25a1.25 1.25 0 1 1-2.5 0v-1.25c0-.69.56-1.25 1.25-1.25z"})}),lark:(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",children:(0,z.jsxs)("g",{fillRule:"evenodd",clipRule:"evenodd",children:[(0,z.jsx)("path",{d:"M41.0716 5.99409L3.31071 16.5187L12.3856 25.8126L20.7998 25.9594L30.4827 16.5187C30.2266 15.9943 30.0985 15.5552 30.0985 15.2013C30.0985 14.4074 30.4104 13.7786 30.8947 13.333C31.7241 12.57 32.7222 12.4558 33.8889 12.9905L41.0716 5.99409Z"}),(0,z.jsx)("path",{d:"M42.1021 6.72842L31.5775 44.4893L22.2836 35.4144L22.1367 27.0002L31.5115 17.4816C32.0195 17.8454 32.5743 18.0105 33.1759 17.9769C34.0784 17.9264 34.6614 17.3813 34.9349 17.0602C35.2083 16.7392 35.5293 16.2051 35.5025 15.4113C35.4847 14.8821 35.3109 14.3941 34.9812 13.9472L42.1021 6.72842Z"})]})}),x:(0,z.jsxs)("svg",{role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,z.jsx)("title",{children:"X"}),(0,z.jsx)("path",{d:"M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"})]})},t7=e=>{let{link:t,popperStyle:n={}}=e,{icon:i,mode:r="link",content:a}=t,d="object"==typeof i?(0,z.jsx)("div",{dangerouslySetInnerHTML:{__html:i.svg}}):t6[i],[o,l]=(0,N.useState)(!1),s=()=>{l(!0)},c=()=>{l(!1)};return"link"===r?(0,z.jsx)("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"social-links",children:(0,z.jsx)("div",{className:`${t5.socialLinksIcon}`,children:d})},a):"text"===r?(0,z.jsxs)("div",{className:`${t5.socialLinksIcon} cursor-pointer relative mx-3`,onMouseEnter:s,onMouseLeave:c,children:[d,o?(0,z.jsx)("div",{style:e_({boxShadow:"var(--rp-shadow-3)",border:"1px solid var(--rp-c-divider-light)"},n),className:"z-[1] p-3 w-50 absolute right-0 bg-white dark:bg-dark",children:(0,z.jsx)("div",{className:"text-md",children:a})}):null]}):"img"===r?(0,z.jsxs)("div",{className:`${t5.socialLinksIcon} cursor-pointer relative`,onMouseEnter:s,onMouseLeave:c,children:[d,o?(0,z.jsx)("div",{className:"break-all z-[1] p-3 w-[50px] h-[50px] absolute right-0 bg-white dark:bg-dark rounded-xl",style:e_({boxShadow:"var(--rp-shadow-3)"},n),children:(0,z.jsx)("img",{src:a,alt:"img"})}):null]}):(0,z.jsx)("div",{})},t8=e=>{let{links:t,moreIconVisible:n=!1,mouseEnter:i}=e;return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{className:"flex-center h-full gap-x-4 transition-colors duration-300 md:mr-2",children:t.map((e,t)=>(0,z.jsx)(t7,{link:e,popperStyle:{top:"2.5rem"}},t))}),n?(0,z.jsx)("div",{className:"md:ml-1 p-2",onMouseEnter:i,children:(0,z.jsx)(tk,{icon:Q.default})}):null]})},t9=e=>{let{links:t}=e;return(0,z.jsx)("div",{style:{boxShadow:"var(--rp-shadow-3)",marginRight:"-2px",border:"1px solid var(--rp-c-divider-light)",background:"var(--rp-c-bg)"},className:"absolute top-8 right-0 z-1 p-3 w-32 rounded-2xl flex flex-wrap gap-4",children:t.map(e=>(0,z.jsx)(t7,{link:e,popperStyle:{top:"1.25rem"}},e.content))})},ne=({socialLinks:e})=>{let t=e.length>3,n=[],i=[];e.forEach((e,t)=>{t<3?n.push(e):i.push(e)});let[r,a]=(0,N.useState)(!1);return(0,z.jsxs)("div",{className:`social-links ${t5.menuItem} flex-center relative`,onMouseLeave:()=>a(!1),children:[(0,z.jsx)(t8,{links:n,moreIconVisible:t,mouseEnter:()=>a(!0)}),r?(0,z.jsx)(t9,{links:i}):null]})};function nt(){var e,t;let{siteData:n,page:i}=(0,C.usePageData)(),r=(0,C.useVersion)(),{pathname:a}=(0,C.useLocation)(),d=n.lang||"",o=n.multiVersion.default||"",l=Object.values(n.locales||n.themeConfig.locales||{}),s=(null==(e=n.route)?void 0:e.cleanUrls)||!1,c=l.length>1,{lang:u}=i,{base:h}=n;return c?{text:(0,z.jsx)(tk,{icon:J.default,style:{width:"18px",height:"18px"}}),items:l.map(e=>({text:null==e?void 0:e.label,link:(0,T.replaceLang)(a,{current:u,target:e.lang,default:d},{current:r,default:o},h,s)})),activeValue:null==(t=l.find(e=>u===e.lang))?void 0:t.label}:null}function nn(){var e;let{siteData:t}=(0,C.usePageData)(),n=(0,C.useVersion)(),{pathname:i}=(0,C.useLocation)(),r=(null==(e=t.route)?void 0:e.cleanUrls)||!1,a=t.multiVersion.default||"",d=t.multiVersion.versions||[],{base:o}=t;return{items:d.map(e=>({text:e,link:(0,T.replaceVersion)(i,{current:n,target:e,default:a},o,r)})),text:n,activeValue:n}}var ni={navScreen:"navScreen_457e8",active:"active_457e8",container:"container_457e8",navMenu:"navMenu_457e8",navMenuItem:"navMenuItem_457e8",navAppearance:"navAppearance_457e8",navScreenMenuGroup:"navScreenMenuGroup_457e8",open:"open_457e8",button:"button_457e8",buttonSpan:"buttonSpan_457e8",items:"items_457e8",down:"down_457e8"};function nr(e){let{activeValue:t}=e,[n,i]=(0,N.useState)(!1);function r({item:e}){return(0,z.jsx)("div",{className:"p-1 text-center",children:(0,z.jsx)("span",{className:"text-brand",children:e.text})})}function a({item:e}){return(0,z.jsx)("div",{className:"py-1 font-medium",children:(0,z.jsx)(th,{href:e.link,children:(0,z.jsx)("div",{children:(0,z.jsx)("div",{className:"flex justify-center",children:(0,z.jsx)("span",{children:e.text})})})})})}let d=e=>t===e.text?(0,z.jsx)(r,{item:e},e.link):(0,z.jsx)(a,{item:e},e.link),o=e=>(0,z.jsxs)("div",{children:["link"in e?d(e):(0,z.jsx)("p",{className:"font-bold text-gray-400 my-1 not:first:border",children:e.text}),e.items.map(d)]});return(0,z.jsxs)("div",{className:`${n?ni.open:""} ${ni.navScreenMenuGroup} relative`,children:[(0,z.jsxs)("button",{className:ni.button,onClick:()=>{i(!n)},children:[(0,z.jsx)("span",{className:ni.buttonSpan,children:e.text}),(0,z.jsx)(ee.default,{className:`${n?ni.open:""} ${ni.down} `})]}),(0,z.jsx)("div",{children:(0,z.jsx)("div",{className:ni.items,children:e.items.map(e=>(0,z.jsx)("div",{children:"items"in e?o(e):d(e)},e.text))})})]})}var na=()=>{let e=nt();return(0,z.jsx)("div",{className:`${ni.navTranslations} flex text-sm font-bold justify-center`,children:(0,z.jsx)("div",{className:"mx-1.5 my-1",children:(0,z.jsx)(nr,e_({},e))})})},nd=()=>{let e=nn();return(0,z.jsx)("div",{className:`${ni.navTranslations} flex text-sm font-bold justify-center`,children:(0,z.jsx)("div",{className:"mx-1.5 my-1",children:(0,z.jsx)(nr,e_({},e))})})};function no(e){var t;let{isScreenOpen:n,siteData:i,pathname:r}=e,a=(0,N.useRef)(null),d=i.themeConfig.locales||[],o=d.length>1,l=i.multiVersion.versions.length>1,s=(0,et.useNavData)(),c=!1!==i.themeConfig.darkMode,u=(null==(t=null==i?void 0:i.themeConfig)?void 0:t.socialLinks)||[],h=u.length>0,p=d.map(e=>e.lang||"zh")||[],{base:x}=i;return(0,N.useEffect)(()=>(a.current&&n&&(0,G.disableBodyScroll)(a.current,{reserveScrollBarGap:!0}),()=>{(0,G.clearAllBodyScrollLocks)()}),[n]),(0,z.jsx)("div",{className:`${ni.navScreen} ${n?ni.active:""}`,ref:a,id:"navScreen",children:(0,z.jsxs)("div",{className:ni.container,children:[(0,z.jsx)(({menuItems:e})=>(0,z.jsx)("div",{className:ni.navMenu,children:e.map(e=>(0,z.jsx)("div",{className:`${ni.navMenuItem} w-full`,children:"link"in e?(0,z.jsx)(tJ,e_({pathname:r,base:x,langs:p},e),e.text):(0,z.jsx)("div",{className:"mx-3 last:mr-0",children:(0,z.jsx)(nr,eN(e_({},e),{items:"items"in e?e.items:e}))},e.text)},e.text))}),{menuItems:s}),(0,z.jsxs)("div",{className:"flex-center flex-col gap-2",children:[c&&(0,z.jsx)(()=>(0,z.jsx)("div",{className:`mt-2 ${ni.navAppearance} flex justify-center`,children:(0,z.jsx)(C.NoSSR,{children:(0,z.jsx)(t4,{})})}),{}),o&&(0,z.jsx)(na,{}),l&&(0,z.jsx)(nd,{}),h&&(0,z.jsx)(ne,{socialLinks:u})]})]})})}var nl={navHamburger:"navHamburger_e7b06",active:"active_e7b06"};function ns(e){let{siteData:t,pathname:n}=e,{isScreenOpen:i,toggleScreen:r}=function(){let{pathname:e}=(0,C.useLocation)(),[t,n]=(0,N.useState)(!1);function i(){n(!0),window.addEventListener("resize",a)}function r(){n(!1),window.removeEventListener("resize",a)}function a(){window.outerWidth>=768&&r()}return(0,N.useEffect)(()=>{r()},[e]),{isScreenOpen:t,openScreen:i,closeScreen:r,toggleScreen:function(){t?r():i()}}}();return(0,z.jsxs)(N.Fragment,{children:[(0,z.jsx)(no,{isScreenOpen:i,siteData:t,pathname:n}),(0,z.jsx)("button",{onClick:r,"aria-label":"mobile hamburger",className:`${i?nl.active:""} ${nl.navHamburger} text-gray-500`,children:(0,z.jsx)(tk,{icon:V.default,fill:"currentColor"})})]})}function nc({item:e}){return(0,z.jsxs)("div",{className:"rounded-2xl my-1 flex",style:{padding:"0.4rem 1.5rem 0.4rem 0.75rem"},children:[e.tag&&(0,z.jsx)(ty,{tag:e.tag}),(0,z.jsx)("span",{className:"text-brand",children:e.text})]},e.link)}function nu({item:e}){return(0,z.jsx)("div",{className:"font-medium my-1",children:(0,z.jsx)(th,{href:e.link,children:(0,z.jsx)("div",{className:"rounded-2xl hover:bg-mute",style:{padding:"0.4rem 1.5rem 0.4rem 0.75rem"},children:(0,z.jsxs)("div",{className:"flex",children:[e.tag&&(0,z.jsx)(ty,{tag:e.tag}),(0,z.jsx)("span",{children:e.text})]})})})},e.link)}function nh(e){let{activeValue:t,items:n,base:i="",link:r="",pathname:a=""}=e,[d,o]=(0,N.useState)(!1),l=e=>{let n=new RegExp(e.activeMatch||e.link).test((0,T.withoutBase)(a,i));return t===e.text||!t&&n?(0,z.jsx)(nc,{item:e},e.link):(0,z.jsx)(nu,{item:e},e.link)},s=e=>(0,z.jsxs)("div",{children:["link"in e?l(e):(0,z.jsx)("p",{className:"font-bold text-gray-400 my-1 not:first:border",children:e.text}),e.items.map(l)]});return(0,z.jsxs)("div",{className:"relative flex-center h-14",onMouseLeave:()=>o(!1),children:[(0,z.jsx)("button",{onMouseEnter:()=>o(!0),className:"rspress-nav-menu-group-button flex-center items-center font-medium text-sm text-text-1 hover:text-text-2 transition-colors duration-200",children:r?(0,z.jsx)(tJ,eN(e_({},e),{rightIcon:(0,z.jsx)(tk,{icon:ee.default})})):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)("span",{className:"text-sm font-medium flex",style:{marginRight:"2px"},children:[(0,z.jsx)(ty,{tag:e.tag}),e.text]}),(0,z.jsx)(tk,{icon:ee.default})]})}),(0,z.jsx)("div",{className:"rspress-nav-menu-group-content absolute mx-0.8 transition-opacity duration-300",style:{opacity:d?1:0,visibility:d?"visible":"hidden",right:0,top:"52px"},children:(0,z.jsx)("div",{className:"p-3 pr-2 w-full h-full max-h-100vh whitespace-nowrap",style:{boxShadow:"var(--rp-shadow-3)",zIndex:100,border:"1px solid var(--rp-c-divider-light)",borderRadius:"var(--rp-radius-large)",background:"var(--rp-c-bg)"},children:n.map(e=>(0,z.jsx)("div",{children:"items"in e?s(e):l(e)},e.text))})})]})}function np(){let e=nt();return(0,z.jsx)("div",{className:`translation ${tg.menuItem} flex text-sm font-bold items-center px-3 py-2`,children:(0,z.jsx)("div",{children:(0,z.jsx)(nh,e_({},e))})})}function nx(){let e=nn();return(0,z.jsx)("div",{className:`translation ${tg.menuItem} flex text-sm font-bold items-center px-3 py-2`,children:(0,z.jsx)("div",{children:(0,z.jsx)(nh,e_({},e))})})}function nf(e){var t;let{beforeNavTitle:n,afterNavTitle:i,beforeNav:r,afterNavMenu:a}=e,{siteData:d}=(0,C.usePageData)(),{base:o}=d,{pathname:l}=(0,C.useLocation)(),[s,c]=(0,N.useState)(!1),u=eq(),h=Object.values(d.locales||d.themeConfig.locales||{}),p=h.length>1,x=d.multiVersion.versions.length>1,f=d.themeConfig.socialLinks||[],m=f.length>0,g=h.map(e=>e.lang||"")||[];(0,N.useEffect)(()=>{c(tr())},[]);let b=({menuItems:e})=>(0,z.jsx)("div",{className:"rspress-nav-menu menu h-14",children:e.map(e=>"items"in e||Array.isArray(e)?(0,z.jsx)("div",{className:"mx-3 last:mr-0",children:(0,z.jsx)(nh,eN(e_({},e),{base:o,pathname:l,langs:g,items:"items"in e?e.items:e}))},e.text):(0,z.jsx)(tJ,e_({pathname:l,langs:g,base:o},e),e.link))}),v=(0,et.useNavData)(),y=e=>{var t;return null!=(t=e.position)?t:"right"},I=v.filter(e=>"left"===y(e)),k=v.filter(e=>"right"===y(e)),w=(null==(t=null==d?void 0:d.themeConfig)?void 0:t.search)!==!1,j=!1!==d.themeConfig.darkMode;return(0,z.jsxs)(z.Fragment,{children:[r,(0,z.jsx)("div",{className:`${tg.navContainer} sticky rspress-nav px-6 ${u?tg.hidden:""}`,children:(0,z.jsxs)("div",{className:`${tg.container} flex justify-between items-center h-full`,children:[n,(0,z.jsx)(tb,{}),i,(0,z.jsxs)("div",{className:`${tg.content} flex flex-1 justify-end items-center`,children:[I.length>0?(0,z.jsx)("div",{className:tg.leftNav,children:(0,z.jsx)(b,{menuItems:I})}):null,(0,z.jsxs)("div",{className:tg.rightNav,children:[w&&(0,z.jsx)("div",{className:"flex sm:flex-1 items-center sm:pl-4 sm:pr-2",children:(0,z.jsx)(_.Search,{})}),(0,z.jsx)(b,{menuItems:k}),(0,z.jsxs)("div",{className:"flex-center flex-row",children:[p&&(0,z.jsx)(np,{}),x&&(0,z.jsx)(nx,{}),j&&(0,z.jsx)("div",{className:"mx-2",children:(0,z.jsx)(t4,{})}),m&&(0,z.jsx)(ne,{socialLinks:f})]})]}),a,(0,z.jsxs)("div",{className:tg.mobileNavMenu,children:[s&&w&&(0,z.jsx)(_.Search,{}),(0,z.jsx)(ns,{siteData:d,pathname:l})]})]})]})})]})}var nm={mask:"mask_6e282",modal:"modal_6e282",inputForm:"inputForm_6e282",input:"input_6e282",close:"close_6e282",searchHits:"searchHits_6e282",navSearchButton:"navSearchButton_6e282",searchWord:"searchWord_6e282",suggestItem:"suggestItem_6e282",suggestItemContainer:"suggestItemContainer_6e282",contentWrapper:"contentWrapper_6e282",mark:"mark_6e282",titleForContent:"titleForContent_6e282",actionIcon:"actionIcon_6e282",current:"current_6e282",tabClassName:"tabClassName_6e282",mobileNavSearchButton:"mobileNavSearchButton_6e282"},ng={container:"container_fa768",tabList:"tab-list_fa768",tab:"tab_fa768",notSelected:"not-selected_fa768",selected:"selected_fa768",noScrollbar:"no-scrollbar_fa768"},nb=e=>{var t;return(t=e)&&"object"==typeof t&&"label"in t?e.label||e.value:e};function nv(e){let{values:t,defaultValue:n,onChange:i,children:r,groupId:a,tabPosition:d="left",tabContainerClassName:o}=e,l=t||[];0===l.length&&(l=r.map(e=>{var t,n,i;return{label:null==(t=e.props)?void 0:t.label,value:(null==(n=e.props)?void 0:n.value)||(null==(i=e.props)?void 0:i.label)}}));let{tabData:s,setTabData:c}=(0,N.useContext)(tR),u=0;a&&void 0!==s[a]?u=s[a]:n&&(u=l.findIndex(e=>"string"==typeof e?e===n:!!e&&"object"==typeof e&&"value"in e&&e.value===n));let[h,p]=(0,N.useState)(u);return(0,z.jsxs)("div",{className:ng.container,children:[(0,z.jsx)("div",{className:o,children:l.length?(0,z.jsx)("div",{className:`${ng.tabList} ${ng.noScrollbar}`,style:{justifyContent:"center"===d?"center":"flex-start"},children:l.map((e,t)=>(0,z.jsx)("div",{className:`${ng.tab} ${h===t?ng.selected:ng.notSelected}`,onClick:()=>{null==i||i(t),p(t),a&&c(eN(e_({},s),{[a]:t}))},children:nb(e)},t))}):null}),(0,z.jsx)("div",{children:r[h]})]})}function ny(e){var{children:t}=e,n=eA(e,["children"]);return(0,z.jsx)("div",eN(e_({},n),{className:"rounded px-2",children:t}))}function nI({query:e}){return(0,z.jsxs)("div",{className:"flex flex-col items-center pt-8 pb-2",children:[(0,z.jsx)(tk,{icon:eo.default,className:"mb-4 opacity-80"}),(0,z.jsxs)("p",{className:"mb-2",children:["No results for ",(0,z.jsxs)("b",{children:['"',e,'"']}),"."]}),(0,z.jsx)("p",{children:"Please try again with a different keyword."})]})}var nk={title:eu.default,header:ec.default,content:el.default};function nw({suggestion:e,closeSearch:t,isCurrent:n,setCurrentSuggestionIndex:i,inCurrentDocIndex:r}){let a=nk[e.type],d=r&&!(0,C.isProduction)()?e1(e.link):e.link,o=(e,t)=>{let n=[],i=0;for(let o of t){var r,a,d;let{start:t,length:l}=o,s=e.slice(i,t);let c=(r=e,a=t,d=l,function(e,t,n){let i="",r=0,a=e.length;for(let d=0;dt+n);d++){;r>t&&(i+=e.charAt(d))}return i}(r.slice(a),0,d));n.push(s),n.push((0,z.jsx)("span",{className:nm.mark,children:c},t)),i=t+c.length}return i{if("header"!==e.type&&"title"!==e.type)return(0,z.jsx)("div",{className:"font-medium",children:e.header});{let{header:t,highlightInfoList:n}=e;return(0,z.jsx)("div",{className:"font-medium",children:o(t,n)})}})();break;case"content":l=(0,z.jsxs)(z.Fragment,{children:[(()=>{if("content"!==e.type)return(0,z.jsx)("div",{});let{statement:t,highlightInfoList:n}=e;return(0,z.jsx)("div",{className:"text-sm text-gray-light w-full",children:o(t,n)})})(),(0,z.jsx)("p",{className:nm.titleForContent,children:e.title})]})}return(0,z.jsx)("li",{className:`${nm.suggestItem} ${n?nm.current:""}`,onMouseEnter:i,children:(0,z.jsx)("a",{href:d,onClick:e=>{t(),e.stopPropagation()},target:r?"_self":"_blank",children:(0,z.jsxs)("div",{className:nm.suggestItemContainer,children:[(0,z.jsx)("div",{className:nm.hitIcon,children:(0,z.jsx)(tk,{icon:a})}),(0,z.jsx)("div",{className:nm.contentWrapper,children:(0,z.jsx)("span",{children:l})}),(0,z.jsx)("div",{className:nm.actionIcon,children:(0,z.jsx)(tk,{icon:es.default})})]})})},e.link)}var nj={ARROW_UP:"ArrowUp",ARROW_DOWN:"ArrowDown",ENTER:"Enter",SEARCH:"KeyK",ESC:"Escape"};function nP({focused:e,setFocused:t}){let[n,i]=(0,N.useState)(""),[r,a]=(0,N.useState)([]),d=(0,N.useRef)(null),[o,l]=(0,N.useState)(!0),[s,c]=(0,N.useState)(0),u=(0,N.useRef)(null),{siteData:h,page:{lang:p}}=(0,C.usePageData)(),{sidebar:x}=eH(),{search:f,title:m}=h,g=[{group:m,result:[],renderType:"default"}],[b,v]=(0,N.useState)([]),[y,I]=(0,N.useState)("default"),k=e=>eF(x,e).group;function w(){return eR(this,null,function*(){var e,t;if(!1===f)return;let n=new e9(eN(e_({indexName:m},f),{currentLang:p,extractGroupName:k}));u.current=n,yield Promise.all([u.current.init(),new Promise(e=>setTimeout(e,1e3))]),l(!1);let i=null==(e=d.current)?void 0:e.value;i&&a((yield null==(t=u.current)?void 0:t.match(i))||g)})}(0,N.useEffect)(()=>{let n=n=>{switch(n.code){case nj.SEARCH:(n.ctrlKey||n.metaKey)&&(n.preventDefault(),t(!e));break;case nj.ARROW_DOWN:e&&(n.preventDefault(),b&&"default"===y&&c((s+1)%b.length));break;case nj.ARROW_UP:if(e&&(n.preventDefault(),"default"===y)){let e=b.length;c((s-1+e)%e)}break;case nj.ENTER:if(s>=0&&"default"===y){let e=b[s];b===r[0].result?(window.location.href=(0,T.isProduction)()?e.link:e1(e.link),t(!1)):window.open(e.link)}break;case nj.ESC:t(!1)}};return document.addEventListener("keydown",n),()=>{document.removeEventListener("keydown",n)}},[c,t,b,s]),(0,N.useEffect)(()=>{e?(a(g),!u.current&&w()):i("")},[e]),(0,N.useEffect)(()=>{o||w()},[p]);let j=e=>eR(this,null,function*(){var t;let n=e;if(i(n),n){let e=[];if(er.beforeSearch){let e=yield er.beforeSearch(n);e&&(n=e)}let i=yield null==(t=u.current)?void 0:t.match(n);if(i&&e.push(...i),er.onSearch){let t=yield er.onSearch(n,e);t&&e.push(...t.map(e=>e_({renderType:"custom"},e)))}a(e||g),er.afterSearch&&(yield er.afterSearch(n,e)),e.length>0&&v(e[0].result)}}),P=(0,N.useMemo)(()=>(0,L.debounce)(j,150),[]),S=e=>(0,L.groupBy)(e,"group"),E=-1,_=e=>{if(0===e.length&&!o)return(0,z.jsx)("div",{className:"mt-4 flex-center",children:(0,z.jsx)("div",{className:"p-2 font-bold text-md",style:{color:"#2c3e50"},children:"No results found"})});let n=S(e);return(0,z.jsx)("ul",{className:nm.suggestList,children:Object.keys(n).map(e=>{let i=n[e]||[];return(0,z.jsx)("li",{children:(0,z.jsx)("ul",{className:"pb-2",children:i.map(e=>{let n=++E;return(0,z.jsx)(nw,{suggestion:e,isCurrent:n===s,setCurrentSuggestionIndex:()=>{c(n)},closeSearch:()=>t(!1),inCurrentDocIndex:b===r[0].result},`${e.title}-${n}`)})})},e)})})};return(0,z.jsx)(z.Fragment,{children:e&&(0,ei.createPortal)((0,z.jsx)("div",{className:nm.mask,onClick:()=>t(!1),children:(0,z.jsxs)("div",{className:`${nm.modal}`,onClick:e=>{t(!0),e.stopPropagation()},children:[(0,z.jsxs)("div",{className:"flex items-center",children:[(0,z.jsxs)("div",{className:nm.inputForm,children:[(0,z.jsx)("label",{children:(0,z.jsx)(tk,{icon:en.default})}),(0,z.jsx)("input",{className:nm.input,ref:d,placeholder:"Search Docs","aria-label":"Search",autoComplete:"off",autoFocus:!0,onChange:e=>P(e.target.value)}),(0,z.jsx)("label",{children:(0,z.jsx)(tk,{icon:ea.default,className:nm.close,onClick:e=>{d.current&&(e.stopPropagation(),n?(d.current.value="",i("")):t(!1))}})})]}),(0,z.jsx)("h2",{className:"text-brand ml-2 sm:hidden cursor-pointer",onClick:e=>{e.stopPropagation(),t(!1)},children:"Cancel"})]}),n?(0,z.jsx)("div",{className:`${nm.searchHits} rspress-scrollbar`,children:((e,t)=>{if(1===e.length){let t=e[0].result;return 0===t.length?(0,z.jsx)(nI,{query:n}):(0,z.jsx)("div",{children:_(t)})}let i=e.map(e=>t&&"remote"===t.mode?e2(t.searchIndexes||[]).find(t=>t.value===e.group).label:e.group);return(0,z.jsx)(nv,{values:i,tabContainerClassName:nm.tabClassName,onChange:t=>{v(e[t].result),c(0),I(e[t].renderType)},children:e.map(e=>(0,z.jsxs)(ny,{children:["default"===e.renderType&&_(e.result),"custom"===e.renderType&&er.render(e.result)]},e.group))})})(r,f)}):null,o&&(0,z.jsx)("div",{className:"flex-center",children:(0,z.jsx)("div",{className:"p-2 text-sm",children:(0,z.jsx)(tk,{icon:ed.default})})})]})}),document.getElementById("search-container"))})}function nS(){let[e,t]=(0,N.useState)(!1),[n,i]=(0,N.useState)(null),{searchPlaceholderText:r="Search Docs"}=(0,$.useLocaleSiteData)();return(0,N.useEffect)(()=>{i(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"\u2318":"Ctrl")},[]),(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{className:`rspress-nav-search-button ${nm.navSearchButton}`,onClick:()=>t(!0),children:(0,z.jsxs)("button",{children:[(0,z.jsx)(tk,{icon:en.default,width:"18",height:"18"}),(0,z.jsx)("p",{className:nm.searchWord,children:r}),(0,z.jsxs)("div",{style:{opacity:n?1:0},children:[(0,z.jsx)("span",{children:n}),(0,z.jsx)("span",{children:"K"})]})]})}),(0,z.jsx)("div",{className:nm.mobileNavSearchButton,onClick:()=>t(!0),children:(0,z.jsx)(tk,{icon:en.default})}),(0,z.jsx)(nP,{focused:e,setFocused:t})]})}var nC={badge:"badge_99dcf",info:"info_99dcf",warning:"warning_99dcf",danger:"danger_99dcf"};function nz(e){let{text:t,type:n="info"}=e;return(0,z.jsx)("span",{className:`inline-block rounded-full border border-solid border-transparent font-medium badge_99dcf ${nC[n]}`,children:t})}function nE(){let{siteData:e}=(0,C.usePageData)(),{message:t}=e.themeConfig.footer||{};return(0,z.jsx)("footer",{className:"absolute bottom-0 mt-12 py-8 px-6 sm:p-8 w-full border-t border-solid border-divider-light",children:(0,z.jsx)("div",{className:"m-auto w-full text-center",children:t&&(0,z.jsx)("div",{className:"font-meduim text-sm text-text-2",children:t})})})}function n_({children:e}){if(Array.isArray(e))return(0,z.jsx)("pre",{children:e});let{className:t,meta:n}=e.props,i=function(e){var t,n;if(!e)return"";let i=e,r=/{[\d,-]*}/i;return(null==(t=r.exec(e))?void 0:t[0])&&(i=e.replace(r,"").trim()),null==(i=null!=(n=i.split("=")[1])?n:"")?void 0:i.replace(/["'`]/g,"")}(n);return(0,z.jsxs)("div",{className:t||"language-bash",children:[i&&(0,z.jsx)("div",{className:"rspress-code-title",children:i}),(0,z.jsx)("div",{className:"rspress-code-content rspress-scrollbar",children:e})]})}var nN={codeButtonGroup:"code-button-group_15153",codeCopyButton:"code-copy-button_15153",iconSuccess:"icon-success_15153",codeCopied:"code-copied_15153",iconCopy:"icon-copy_15153",iconWrapped:"icon-wrapped_15153",wrappedBtn:"wrapped-btn_15153",iconWrap:"icon-wrap_15153"},nA={doctype:{color:"var(--code-token-text)",fontStyle:"italic"},token:{color:"var(--code-token-text)"},comment:{color:"var(--code-token-comment)"},punctuation:{color:"var(--code-token-punctuation)"},property:{color:"var(--code-token-parameter)"},constant:{color:"var(--code-token-constant)"},string:{color:"var(--code-token-string)"},symbol:{color:"var(--code-token-symbol)"},variable:{color:"var(--code-token-variable)"},"attr-name":{color:"var(--code-token-symbol)"},"attr-value":{color:"var(--code-token-string-expression)"},builtin:{color:"var(--code-token-symbol)"},function:{color:"var(--code-token-function)"},keyword:{color:"var(--code-token-keyword)"},tag:{color:"var(--code-token-function)"},inserted:{color:"#22863a"},deleted:{color:"#b31d28"},regex:{color:"var(--code-token-keyword)"},key:{color:"var(--code-token-variable)"},title:{color:"var(--code-token-keyword)"},important:{color:"#EBCB8B",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},table:{display:"content"}},nT=!1;function nL(e){var t;let{siteData:n}=(0,C.usePageData)(),{meta:i,language:r,codeWrap:a}=e,{showLineNumbers:d}=n.markdown,o="",l=[];return i&&(o=(null==(t=/{[\d,-]*}/i.exec(i))?void 0:t[0])||"")&&(l=o.replace(/[{}]/g,"").split(",").map(e=>{let[t,n]=e.split("-");return n?Array.from({length:Number(n)-Number(t)+1},(e,n)=>n+Number(t)):Number(t)}).flat()),!nT&&(Object.keys(ex.default).forEach(e=>{ef.PrismLight.registerLanguage(e,ex.default[e])}),nT=!0),(0,z.jsx)(ef.PrismLight,{language:r,style:nA,wrapLines:!0,className:"code",wrapLongLines:a,customStyle:{backgroundColor:"inherit"},showLineNumbers:d||l.length>0,lineProps:e=>({style:eN(e_({},l.includes(e)?{backgroundColor:"var(--rp-code-line-highlight-color)"}:{}),{display:"block",padding:"0 1.25rem"})}),children:String(e.children).trim()})}var nO=new Map;function nM({codeBlockRef:e}){let t=(0,N.useRef)(null);return(0,z.jsxs)("button",{className:nN.codeCopyButton,onClick:()=>(function(e,t){let n="",i=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null),r=i.nextNode();for(;r;)!r.parentElement.classList.contains("linenumber")&&(n+=r.nodeValue),r=i.nextNode();if(em(n)&&t){t.classList.add(nN.codeCopied),clearTimeout(nO.get(t));let e=setTimeout(()=>{t.classList.remove(nN.codeCopied),t.blur(),nO.delete(t)},2e3);nO.set(t,e)}})(e.current,t.current),ref:t,children:[(0,z.jsx)(ev.SvgWrapper,{icon:eg.default,className:nN.iconCopy}),(0,z.jsx)(ev.SvgWrapper,{icon:eb.default,className:nN.iconSuccess})]})}function nB(e){let{siteData:t}=(0,C.usePageData)(),{defaultWrapCode:n,codeHighlighter:i}=t.markdown,[r,a]=(0,N.useState)(n),d=(0,N.useRef)(null),o=(0,N.useRef)(),{className:l}=e,s=null==l?void 0:l.replace(/language-/,"");if(!s)return(0,z.jsx)("code",e_({},e));let c=e=>{r?null==e||e.classList.remove(nN.wrappedBtn):null==e||e.classList.add(nN.wrappedBtn),a(!r)};return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{ref:o,children:(()=>{if("prism"===i)return(0,z.jsx)(nL,eN(e_({},e),{language:s,codeWrap:r}));return(0,z.jsx)("code",e_({},e))})()}),(0,z.jsxs)("div",{className:nN.codeButtonGroup,children:[(0,z.jsxs)("button",{ref:d,className:nN.codeWrapButton,onClick:()=>c(d.current),children:[(0,z.jsx)(ev.SvgWrapper,{icon:ep.default,className:nN.iconWrapped}),(0,z.jsx)(ev.SvgWrapper,{icon:eh.default,className:nN.iconWrap})]}),(0,z.jsx)(nM,{codeBlockRef:o})]})]})}function nR(e){return(0,z.jsxs)("svg",eN(e_({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 256 256"},e),{children:[(0,z.jsx)("path",{fill:"#C12127",d:"M0 256V0h256v256z"}),(0,z.jsx)("path",{fill:"#FFF",d:"M48 48h160v160h-32V80h-48v128H48z"})]}))}function nD(e){return(0,z.jsx)("svg",eN(e_({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 128 128"},e),{children:(0,z.jsxs)("g",{fill:"#2c8ebb",children:[(0,z.jsx)("path",{d:"M99.24 80.71C94.9 80.76 91.1 83 87.89 85c-6 3.71-9 3.47-9 3.47l-.1-.17c-.41-.67 1.92-6.68-.69-13.84c-2.82-7.83-7.3-9.72-6.94-10.32c1.53-2.59 5.36-6.7 6.89-14.36c.91-4.64.67-12.28-1.39-16.28c-.38-.74-3.78 1.24-3.78 1.24s-3.18-7.09-4.07-7.66c-2.87-1.84-6 7.61-6 7.61a14 14 0 0 0-11.71 4.5a9.64 9.64 0 0 1-3.85 2.27c-.41.14-.91.12-2.15 3.47c-1.9 5.07 3.24 10.81 3.24 10.81s-6.13 4.33-8.4 9.72a24.78 24.78 0 0 0-1.75 11.68s-4.36 3.78-4.64 7.68a12.87 12.87 0 0 0 1.77 7.83a1.94 1.94 0 0 0 2.63.91s-2.9 3.38-.19 4.81c2.47 1.29 6.63 2 8.83-.19c1.6-1.6 1.92-5.17 2.51-6.63c.14-.34.62.57 1.08 1a10 10 0 0 0 1.36 1s-3.9 1.68-2.3 5.51c.53 1.27 2.42 2.08 5.51 2.06c1.15 0 13.76-.72 17.12-1.53a4.33 4.33 0 0 0 2.61-1.46a63 63 0 0 0 15.49-7c4.74-3.09 6.68-3.93 10.51-4.84c3.16-.75 2.95-5.65-1.24-5.58z"}),(0,z.jsx)("path",{d:"M64 2a62 62 0 1 0 62 62A62 62 0 0 0 64 2zm37.3 87.83c-3.35.81-4.91 1.44-9.41 4.36a67 67 0 0 1-15.56 7.18a8.71 8.71 0 0 1-3.64 1.77c-3.81.93-16.88 1.63-17.91 1.63h-.24c-4 0-6.27-1.24-7.49-2.54c-3.4 1.7-7.8 1-11-.69a5.55 5.55 0 0 1-3-3.9a6 6 0 0 1 0-2.06a6.66 6.66 0 0 1-.79-1A16.38 16.38 0 0 1 30 84.52c.29-3.73 2.87-7.06 4.55-8.83A28.56 28.56 0 0 1 36.61 64a26.82 26.82 0 0 1 6.82-9c-1.65-2.78-3.33-7.06-1.7-11.42c1.17-3.11 2.13-4.84 4.24-5.58a6.84 6.84 0 0 0 2.51-1.34A17.65 17.65 0 0 1 60.34 31c.19-.48.41-1 .65-1.46c1.6-3.4 3.3-5.31 5.29-6a4.88 4.88 0 0 1 4.4.5c.65.43 1.48 1 3.9 6a4.69 4.69 0 0 1 2.85-.1a3.81 3.81 0 0 1 2.39 1.94c2.47 4.74 2.8 13.19 1.72 18.62a33.8 33.8 0 0 1-5.84 13.31a25.73 25.73 0 0 1 5.77 9.43a25.42 25.42 0 0 1 1.41 10.41A28.7 28.7 0 0 0 86 81.91c3.06-1.89 7.68-4.74 13.19-4.81a6.62 6.62 0 0 1 7 5.7a6.35 6.35 0 0 1-4.89 7.03z"})]})}))}function nH(e){return(0,z.jsxs)("svg",eN(e_({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 128 128"},e),{children:[(0,z.jsx)("path",{fill:"#f8ab00",d:"M0 .004V40h39.996V.004Zm43.996 0V40h40V.004Zm44.008 0V40H128V.004Zm0 43.996v39.996H128V44Z"}),(0,z.jsx)("path",{fill:"#4c4c4c",d:"M43.996 44v39.996h40V44ZM0 87.996v40h39.996v-40Zm43.996 0v40h40v-40Zm44.008 0v40H128v-40Z"})]}))}function nF(e){return(0,z.jsxs)("svg",eN(e_({id:"Bun",width:"1.2em",height:"1.2em",viewBox:"0 0 80 70"},e),{children:[(0,z.jsx)("path",{id:"Shadow",d:"M71.09,20.74c-.16-.17-.33-.34-.5-.5s-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5A26.46,26.46,0,0,1,75.5,35.7c0,16.57-16.82,30.05-37.5,30.05-11.58,0-21.94-4.23-28.83-10.86l.5.5.5.5.5.5.5.5.5.5.5.5.5.5C19.55,65.3,30.14,69.75,42,69.75c20.68,0,37.5-13.48,37.5-30C79.5,32.69,76.46,26,71.09,20.74Z"}),(0,z.jsxs)("g",{id:"Body",children:[(0,z.jsx)("path",{id:"Background",d:"M73,35.7c0,15.21-15.67,27.54-35,27.54S3,50.91,3,35.7C3,26.27,9,17.94,18.22,13S33.18,3,38,3s8.94,4.13,19.78,10C67,17.94,73,26.27,73,35.7Z",style:{fill:"#fbf0df"}}),(0,z.jsx)("path",{id:"Bottom_Shadow","data-name":"Bottom Shadow",d:"M73,35.7a21.67,21.67,0,0,0-.8-5.78c-2.73,33.3-43.35,34.9-59.32,24.94A40,40,0,0,0,38,63.24C57.3,63.24,73,50.89,73,35.7Z",style:{fill:"#f6dece"}}),(0,z.jsx)("path",{id:"Light_Shine","data-name":"Light Shine",d:"M24.53,11.17C29,8.49,34.94,3.46,40.78,3.45A9.29,9.29,0,0,0,38,3c-2.42,0-5,1.25-8.25,3.13-1.13.66-2.3,1.39-3.54,2.15-2.33,1.44-5,3.07-8,4.7C8.69,18.13,3,26.62,3,35.7c0,.4,0,.8,0,1.19C9.06,15.48,20.07,13.85,24.53,11.17Z",style:{fill:"#fffefc"}}),(0,z.jsx)("path",{id:"Top",d:"M35.12,5.53A16.41,16.41,0,0,1,29.49,18c-.28.25-.06.73.3.59,3.37-1.31,7.92-5.23,6-13.14C35.71,5,35.12,5.12,35.12,5.53Zm2.27,0A16.24,16.24,0,0,1,39,19c-.12.35.31.65.55.36C41.74,16.56,43.65,11,37.93,5,37.64,4.74,37.19,5.14,37.39,5.49Zm2.76-.17A16.42,16.42,0,0,1,47,17.12a.33.33,0,0,0,.65.11c.92-3.49.4-9.44-7.17-12.53C40.08,4.54,39.82,5.08,40.15,5.32ZM21.69,15.76a16.94,16.94,0,0,0,10.47-9c.18-.36.75-.22.66.18-1.73,8-7.52,9.67-11.12,9.45C21.32,16.4,21.33,15.87,21.69,15.76Z",style:{fill:"#ccbea7",fillRule:"evenodd"}}),(0,z.jsx)("path",{id:"Outline",d:"M38,65.75C17.32,65.75.5,52.27.5,35.7c0-10,6.18-19.33,16.53-24.92,3-1.6,5.57-3.21,7.86-4.62,1.26-.78,2.45-1.51,3.6-2.19C32,1.89,35,.5,38,.5s5.62,1.2,8.9,3.14c1,.57,2,1.19,3.07,1.87,2.49,1.54,5.3,3.28,9,5.27C69.32,16.37,75.5,25.69,75.5,35.7,75.5,52.27,58.68,65.75,38,65.75ZM38,3c-2.42,0-5,1.25-8.25,3.13-1.13.66-2.3,1.39-3.54,2.15-2.33,1.44-5,3.07-8,4.7C8.69,18.13,3,26.62,3,35.7,3,50.89,18.7,63.25,38,63.25S73,50.89,73,35.7C73,26.62,67.31,18.13,57.78,13,54,11,51.05,9.12,48.66,7.64c-1.09-.67-2.09-1.29-3-1.84C42.63,4,40.42,3,38,3Z"})]}),(0,z.jsxs)("g",{id:"Mouth",children:[(0,z.jsx)("g",{id:"Background-2","data-name":"Background",children:(0,z.jsx)("path",{d:"M45.05,43a8.93,8.93,0,0,1-2.92,4.71,6.81,6.81,0,0,1-4,1.88A6.84,6.84,0,0,1,34,47.71,8.93,8.93,0,0,1,31.12,43a.72.72,0,0,1,.8-.81H44.26A.72.72,0,0,1,45.05,43Z",style:{fill:"#b71422"}})}),(0,z.jsxs)("g",{id:"Tongue",children:[(0,z.jsx)("path",{id:"Background-3","data-name":"Background",d:"M34,47.79a6.91,6.91,0,0,0,4.12,1.9,6.91,6.91,0,0,0,4.11-1.9,10.63,10.63,0,0,0,1-1.07,6.83,6.83,0,0,0-4.9-2.31,6.15,6.15,0,0,0-5,2.78C33.56,47.4,33.76,47.6,34,47.79Z",style:{fill:"#ff6164"}}),(0,z.jsx)("path",{id:"Outline-2","data-name":"Outline",d:"M34.16,47a5.36,5.36,0,0,1,4.19-2.08,6,6,0,0,1,4,1.69c.23-.25.45-.51.66-.77a7,7,0,0,0-4.71-1.93,6.36,6.36,0,0,0-4.89,2.36A9.53,9.53,0,0,0,34.16,47Z"})]}),(0,z.jsx)("path",{id:"Outline-3","data-name":"Outline",d:"M38.09,50.19a7.42,7.42,0,0,1-4.45-2,9.52,9.52,0,0,1-3.11-5.05,1.2,1.2,0,0,1,.26-1,1.41,1.41,0,0,1,1.13-.51H44.26a1.44,1.44,0,0,1,1.13.51,1.19,1.19,0,0,1,.25,1h0a9.52,9.52,0,0,1-3.11,5.05A7.42,7.42,0,0,1,38.09,50.19Zm-6.17-7.4c-.16,0-.2.07-.21.09a8.29,8.29,0,0,0,2.73,4.37A6.23,6.23,0,0,0,38.09,49a6.28,6.28,0,0,0,3.65-1.73,8.3,8.3,0,0,0,2.72-4.37.21.21,0,0,0-.2-.09Z"})]}),(0,z.jsxs)("g",{id:"Face",children:[(0,z.jsx)("ellipse",{id:"Right_Blush","data-name":"Right Blush",cx:"53.22",cy:"40.18",rx:"5.85",ry:"3.44",style:{fill:"#febbd0"}}),(0,z.jsx)("ellipse",{id:"Left_Bluch","data-name":"Left Bluch",cx:"22.95",cy:"40.18",rx:"5.85",ry:"3.44",style:{fill:"#febbd0"}}),(0,z.jsx)("path",{id:"Eyes",d:"M25.7,38.8a5.51,5.51,0,1,0-5.5-5.51A5.51,5.51,0,0,0,25.7,38.8Zm24.77,0A5.51,5.51,0,1,0,45,33.29,5.5,5.5,0,0,0,50.47,38.8Z",style:{fillRule:"evenodd"}}),(0,z.jsx)("path",{id:"Iris",d:"M24,33.64a2.07,2.07,0,1,0-2.06-2.07A2.07,2.07,0,0,0,24,33.64Zm24.77,0a2.07,2.07,0,1,0-2.06-2.07A2.07,2.07,0,0,0,48.75,33.64Z",style:{fill:"#fff",fillRule:"evenodd"}})]})]}))}function n$(e){if(!(null==e?void 0:e.includes("install")))return e;let t=e.split(" ").filter(e=>!e.startsWith("-")&&!e.startsWith("--")).join(" ");return"yarn install"===t||"bun install"===t?e:e.replace("install","add")}function nW({command:e,additionalTabs:t=[]}){let n;let i={npm:(0,z.jsx)(nR,{}),yarn:(0,z.jsx)(nD,{}),pnpm:(0,z.jsx)(nH,{}),bun:(0,z.jsx)(nF,{})};return t.forEach(e=>{i[e.tool]=e.icon}),"string"==typeof e?(n={npm:`npm ${e}`,yarn:`yarn ${e}`,pnpm:`pnpm ${e}`,bun:`bun ${e}`},t.forEach(t=>{n[t.tool]=`${t.tool} ${e}`})):n=e,n.yarn&&(n.yarn=n$(n.yarn)),n.bun&&(n.bun=n$(n.bun)),(0,z.jsx)(nv,{values:Object.entries(n).map(([e])=>(0,z.jsxs)("div",{style:{display:"flex",alignItems:"center",fontSize:15},children:[i[e],(0,z.jsx)("span",{style:{marginLeft:6,marginBottom:2},children:e})]},e)),children:Object.entries(n).map(([e,t])=>(0,z.jsx)(ny,{children:(0,z.jsx)(n_,{children:(0,z.jsx)(nB,{className:"language-js",children:t})})},e))})}var nK={sourceCode:"sourceCode_bf1b0"};function nU(e){let{href:t,platform:n="github"}=e,{sourceCodeText:i="Source"}=eH();return(0,z.jsx)("div",{className:"inline-block rounded border border-solid border-gray-300 text-gray-400 sourceCode_bf1b0",children:(0,z.jsxs)("a",{href:t,target:"_blank",className:"flex items-center content-center transition-all duration-300 text-xs block px-2 py-1 ",children:[(0,z.jsx)("span",{className:"mr-2 inline-flex w-4 h-4",children:(0,z.jsx)(tk,{icon:"gitlab"===n?eI.default:ey.default})}),(0,z.jsx)("span",{children:i})]})})}var nq={rspressSteps:"rspressSteps_38f64"};function nV({children:e}){return(0,z.jsx)("div",{className:"ml-4 mb-11 border-l pl-6 rspressSteps_38f64 [counter-reset:step]",children:e})}var nG={title:"title_3b154",blockquote:"blockquote_3b154",link:"link_3b154","inline-link":"inline-link_3b154",inlineLink:"inline-link_3b154"},nZ=e=>(0,z.jsx)("h1",eN(e_({},e),{className:`text-3xl mb-10 leading-10 tracking-tight ${nG.title}`})),nY=e=>(0,z.jsx)("h2",eN(e_({},e),{className:`mt-14 mb-6 text-2xl tracking-tight ${nG.title}`})),nX=e=>(0,z.jsx)("h3",eN(e_({},e),{className:`mt-10 mb-2 leading-7 text-xl ${nG.title}`})),nQ=e=>(0,z.jsx)("h4",eN(e_({},e),{className:`mt-8 leading-6 text-base ${nG.title}`})),nJ=e=>(0,z.jsx)("h5",eN(e_({},e),{className:nG.title})),n1=e=>(0,z.jsx)("h6",eN(e_({},e),{className:nG.title})),n0=e=>(0,z.jsx)("ol",eN(e_({},e),{className:"list-decimal pl-5 my-4 leading-7"})),n2=e=>(0,z.jsx)("ul",eN(e_({},e),{className:"list-disc pl-5 my-4 leading-7"})),n3=e=>(0,z.jsx)("li",eN(e_({},e),{className:"[&:not(:first-child)]:mt-2"})),n4=e=>(0,z.jsx)("table",eN(e_({},e),{className:"block border-collapse text-base my-5 overflow-x-auto leading-7 border-gray-light-2"})),n5=e=>(0,z.jsx)("tr",eN(e_({},e),{className:"border border-solid transition-colors duration-500 even:bg-soft border-gray-light-2"})),n6=e=>(0,z.jsx)("td",eN(e_({},e),{className:"border border-solid px-4 py-2 border-gray-light-2"})),n7=e=>(0,z.jsx)("th",eN(e_({},e),{className:"border border-solid px-4 py-2 text-text-1 text-base font-semibold border-gray-light-2"})),n8=e=>(0,z.jsx)("hr",eN(e_({},e),{className:"my-12 border-t bordder-solid border-divider-light"})),n9=e=>{let{href:t="",className:n=""}=e,{normalizeLinkHref:i}=(0,$.usePathUtils)();return n.includes("header-anchor")||t.startsWith("#")?(0,z.jsx)("a",eN(e_({},e),{className:`${nG.link} ${n}`})):(0,z.jsx)(ek.Link,eN(e_({},e),{className:`${n} ${nG.link} ${nG["inline-link"]}`,href:i(t)}))},ie=e=>(0,z.jsx)("p",eN(e_({},e),{className:"my-4 leading-7"})),it=e=>(0,z.jsx)("blockquote",eN(e_({},e),{className:`border-l-2 border-solid border-divider pl-4 my-6 transition-colors duration-500 ${nG.blockquote}`})),ii=e=>(0,z.jsx)("strong",eN(e_({},e),{className:"font-semibold"})),ir=e=>(0,z.jsx)("img",eN(e_({},e),{src:(0,C.normalizeImagePath)(e.src||"")}));function ia(){return{h1:nZ,h2:nY,h3:nX,h4:nQ,h5:nJ,h6:n1,ul:n2,ol:n0,li:n3,table:n4,td:n6,th:n7,tr:n5,hr:n8,p:ie,blockquote:it,strong:ii,a:n9,code:nB,pre:n_,img:ir}}var id={Layout:tW,NotFoundLayout:eD,HomeLayout:tQ,setup:eZ}},51501:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return i.default}}),n("76074");var i=n("95022");n.es(i,t)},49555:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return d}});var i=n("13393");let r=/\s?|(]*>|]*>|]+>)+/i,a=RegExp(i.map(e=>`<${e}\\b[^>]*>`).join("|"),"i");function d(e){return e=e.trim().slice(0,1e3),r.test(e)||a.test(e)}},10924:function(e){"use strict";e.exports=JSON.parse('{"AElig":"\xc6","AMP":"&","Aacute":"\xc1","Acirc":"\xc2","Agrave":"\xc0","Aring":"\xc5","Atilde":"\xc3","Auml":"\xc4","COPY":"\xa9","Ccedil":"\xc7","ETH":"\xd0","Eacute":"\xc9","Ecirc":"\xca","Egrave":"\xc8","Euml":"\xcb","GT":">","Iacute":"\xcd","Icirc":"\xce","Igrave":"\xcc","Iuml":"\xcf","LT":"<","Ntilde":"\xd1","Oacute":"\xd3","Ocirc":"\xd4","Ograve":"\xd2","Oslash":"\xd8","Otilde":"\xd5","Ouml":"\xd6","QUOT":"\\"","REG":"\xae","THORN":"\xde","Uacute":"\xda","Ucirc":"\xdb","Ugrave":"\xd9","Uuml":"\xdc","Yacute":"\xdd","aacute":"\xe1","acirc":"\xe2","acute":"\xb4","aelig":"\xe6","agrave":"\xe0","amp":"&","aring":"\xe5","atilde":"\xe3","auml":"\xe4","brvbar":"\xa6","ccedil":"\xe7","cedil":"\xb8","cent":"\xa2","copy":"\xa9","curren":"\xa4","deg":"\xb0","divide":"\xf7","eacute":"\xe9","ecirc":"\xea","egrave":"\xe8","eth":"\xf0","euml":"\xeb","frac12":"\xbd","frac14":"\xbc","frac34":"\xbe","gt":">","iacute":"\xed","icirc":"\xee","iexcl":"\xa1","igrave":"\xec","iquest":"\xbf","iuml":"\xef","laquo":"\xab","lt":"<","macr":"\xaf","micro":"\xb5","middot":"\xb7","nbsp":"\xa0","not":"\xac","ntilde":"\xf1","oacute":"\xf3","ocirc":"\xf4","ograve":"\xf2","ordf":"\xaa","ordm":"\xba","oslash":"\xf8","otilde":"\xf5","ouml":"\xf6","para":"\xb6","plusmn":"\xb1","pound":"\xa3","quot":"\\"","raquo":"\xbb","reg":"\xae","sect":"\xa7","shy":"\xad","sup1":"\xb9","sup2":"\xb2","sup3":"\xb3","szlig":"\xdf","thorn":"\xfe","times":"\xd7","uacute":"\xfa","ucirc":"\xfb","ugrave":"\xf9","uml":"\xa8","uuml":"\xfc","yacute":"\xfd","yen":"\xa5","yuml":"\xff"}')},33222:function(e){"use strict";e.exports=JSON.parse('{"0":"\uFFFD","128":"\u20AC","130":"\u201A","131":"\u0192","132":"\u201E","133":"\u2026","134":"\u2020","135":"\u2021","136":"\u02C6","137":"\u2030","138":"\u0160","139":"\u2039","140":"\u0152","142":"\u017D","145":"\u2018","146":"\u2019","147":"\u201C","148":"\u201D","149":"\u2022","150":"\u2013","151":"\u2014","152":"\u02DC","153":"\u2122","154":"\u0161","155":"\u203A","156":"\u0153","158":"\u017E","159":"\u0178"}')},48606:function(e){"use strict";e.exports=JSON.parse('["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","search","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"]')}}]); \ No newline at end of file diff --git a/modern-js/builder/static/js/async/4291.88dc87bd.js b/modern-js/builder/static/js/async/1003.390997c2.js similarity index 99% rename from modern-js/builder/static/js/async/4291.88dc87bd.js rename to modern-js/builder/static/js/async/1003.390997c2.js index 0aff939ae2..5cbcaee2d7 100644 --- a/modern-js/builder/static/js/async/4291.88dc87bd.js +++ b/modern-js/builder/static/js/async/1003.390997c2.js @@ -1,2 +1,2 @@ -/*! For license information please see 4291.88dc87bd.js.LICENSE.txt */ -(self.webpackChunk_modern_js_builder_doc=self.webpackChunk_modern_js_builder_doc||[]).push([["4291"],{78696:function(e,n,i){"use strict";i.r(n);var s=i("39980"),r=i("96954"),t=i("75962");function a(e){let n=Object.assign({h1:"h1",a:"a",div:"div",p:"p",strong:"strong",h2:"h2",h3:"h3",pre:"pre",code:"code",h4:"h4",ul:"ul",li:"li"},(0,r.useMDXComponents)(),e.components);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.h1,{id:"esbuild-plugin",children:["Esbuild Plugin",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#esbuild-plugin",children:"#"})]}),"\n",(0,s.jsxs)(n.div,{className:"rspress-directive warning",children:[(0,s.jsx)(n.div,{className:"rspress-directive-title",children:"WARNING"}),(0,s.jsxs)(n.div,{className:"rspress-directive-content",children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"The esbuild feature in the current document is no longer maintained"}),", we recommend using the Rspack + SWC solution, because Rspack + SWC provide better build performance, richer features, and better compatibility."]}),"\n",(0,s.jsxs)(n.p,{children:["Please refer to ",(0,s.jsx)(n.a,{href:"/guide/advanced/rspack-start",children:"\u300CUse Rspack\u300D"})," for more information."]}),"\n"]})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://esbuild.github.io/",target:"_blank",rel:"noopener noreferrer",children:"esbuild"})," is a front-end build tool based on Golang. It has the functions of bundling, compiling and minimizing JavaScript code. Compared with traditional tools, the performance is significantly improved. When minimizing code, compared to webpack's built-in terser minimizer, esbuild has dozens of times better performance."]}),"\n",(0,s.jsxs)(n.p,{children:["Modern.js Builder provides esbuild plugin that allow you to use esbuild instead of babel-loader, ts-loader and terser for transformation and minification process. When you enable esbuild in a large project, ",(0,s.jsx)(n.strong,{children:"it can greatly reduce the time required for code compilation and compression, while effectively avoiding OOM (heap out of memory) problems"}),"."]}),"\n",(0,s.jsxs)(n.h2,{id:"quick-start",children:["Quick Start",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#quick-start",children:"#"})]}),"\n",(0,s.jsxs)(n.h3,{id:"used-in-modernjs-framework",children:["Used in Modern.js framework",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#used-in-modernjs-framework",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["The Modern.js framework integrates the Builder's esbuild plugin by default, so you don't need to manually install and register the plugin, just use the ",(0,s.jsx)(n.a,{href:"https://modernjs.dev/en/configure/app/tools/esbuild.html",target:"_blank",rel:"noopener noreferrer",children:"tools.esbuild"})," configuration:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:"export default defineConfig({\n tools: {\n esbuild: {\n loader: {\n target: 'chrome61',\n },\n minimize: {\n target: 'chrome61',\n },\n },\n },\n});\n"})}),"\n",(0,s.jsxs)(n.h3,{id:"use-via-the-node-api",children:["Use via the Node API",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#use-via-the-node-api",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"If you use the Builder's Node API, you need to manually install and register the esbuild plugin."}),"\n",(0,s.jsxs)(n.h4,{id:"install",children:["Install",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#install",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"You can install the plugin with the following command:"}),"\n","\n",(0,s.jsx)(t.PackageManagerTabs,{command:"add @modern-js/builder-plugin-esbuild -D"}),"\n",(0,s.jsxs)(n.h4,{id:"register",children:["Register",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#register",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["Register esbuild plugin through the ",(0,s.jsx)(n.code,{children:"addPlugins"})," method:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:"import { builderPluginEsbuild } from '@modern-js/builder-plugin-esbuild';\n\n// add the plugin to the builder instance\nbuilder.addPlugins([builderPluginEsbuild()]);\n"})}),"\n",(0,s.jsxs)(n.h2,{id:"config",children:["Config",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#config",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"The plugin will enable code transformation and minification by default. You can also customize the behavior of the plugin through configuration."}),"\n",(0,s.jsxs)(n.h3,{id:"loader",children:["loader",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#loader",children:"#"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Type:"})}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"type LoaderOptions = EsbuildLoaderOptions | false | undefined;\n"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Default:"})}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"const defaultOptions = {\n target: 'es2015',\n charset: builderConfig.output.charset,\n};\n"})}),"\n",(0,s.jsx)(n.p,{children:"This config is used to enable JavaScript/TypeScript transformation, which will replace babel-loader and ts-loader with esbuild-loader."}),"\n",(0,s.jsxs)(n.p,{children:["If you want to modify the options, you can check the ",(0,s.jsx)(n.a,{href:"https://github.com/privatenumber/esbuild-loader#loader",target:"_blank",rel:"noopener noreferrer",children:"esbuild-loader documentation"}),"."]}),"\n",(0,s.jsxs)(n.h4,{id:"set-jsx-format",children:["Set JSX Format",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#set-jsx-format",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["When using esbuild for transformation, esbuild will read the ",(0,s.jsx)(n.code,{children:"compilerOptions.jsx"})," field in ",(0,s.jsx)(n.code,{children:"tsconfig.json"})," to determine which JSX syntax to use."]}),"\n",(0,s.jsxs)(n.p,{children:["Therefore, you need to set the correct JSX syntax in ",(0,s.jsx)(n.code,{children:"tsconfig.json"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["For example, React projects need to set ",(0,s.jsx)(n.code,{children:"compilerOptions.jsx"})," to ",(0,s.jsx)(n.code,{children:"react-jsx"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "compilerOptions": {\n "jsx": "react-jsx"\n }\n}\n'})}),"\n",(0,s.jsxs)(n.h4,{id:"set-the-target-environment",children:["Set the target environment",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#set-the-target-environment",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.code,{children:"target"})," option to set the target environment for transformation. ",(0,s.jsx)(n.code,{children:"target"})," can be set directly to the JavaScript language version, such as ",(0,s.jsx)(n.code,{children:"es6"}),", ",(0,s.jsx)(n.code,{children:"es2020"}),"; it can also be set to several target environments, each target environment is an environment name followed by a version number, such as ",(0,s.jsx)(n.code,{children:"['chrome58', 'edge16' ,'firefox57']"}),". For a detailed introduction of the ",(0,s.jsx)(n.code,{children:"target"})," option, please refer to ",(0,s.jsx)(n.a,{href:"https://esbuild.github.io/api/#target",target:"_blank",rel:"noopener noreferrer",children:"esbuild - target"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"target supports setting to the following environments:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"chrome"}),"\n",(0,s.jsx)(n.li,{children:"edge"}),"\n",(0,s.jsx)(n.li,{children:"firefox"}),"\n",(0,s.jsx)(n.li,{children:"ie"}),"\n",(0,s.jsx)(n.li,{children:"ios"}),"\n",(0,s.jsx)(n.li,{children:"node"}),"\n",(0,s.jsx)(n.li,{children:"opera"}),"\n",(0,s.jsx)(n.li,{children:"safari"}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"builderPluginEsbuild({\n loader: {\n target: 'chrome61',\n },\n});\n"})}),"\n",(0,s.jsxs)(n.h4,{id:"disable-transformation",children:["Disable transformation",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#disable-transformation",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["Set ",(0,s.jsx)(n.code,{children:"loader"})," to ",(0,s.jsx)(n.code,{children:"false"})," to disable esbuild transformation, and Builder will continue to use Babel to transform the code."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"builderPluginEsbuild({\n loader: false,\n});\n"})}),"\n",(0,s.jsxs)(n.h3,{id:"minimize",children:["minimize",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#minimize",children:"#"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Type:"})}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"type MinimizeOptions = EsbuildMinifyOptions | false | undefined;\n"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Default:"})}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"const defaultOptions = {\n css: true,\n target: 'es2015',\n format: builderTarget === 'web' ? 'iife' : undefined,\n};\n"})}),"\n",(0,s.jsx)(n.p,{children:"This option is used to enable minification for JavaScript and CSS."}),"\n",(0,s.jsxs)(n.p,{children:["If you want to modify the options, you can check the ",(0,s.jsx)(n.a,{href:"https://github.com/privatenumber/esbuild-loader#minifyplugin",target:"_blank",rel:"noopener noreferrer",children:"esbuild-loader documentation"}),"."]}),"\n",(0,s.jsxs)(n.h4,{id:"set-the-target-environment-1",children:["Set the target environment",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#set-the-target-environment-1",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.code,{children:"target"})," option to set the target environment for minification."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"builderPluginEsbuild({\n minimize: {\n target: 'chrome61',\n },\n});\n"})}),"\n",(0,s.jsxs)(n.h4,{id:"disable-minification",children:["Disable minification",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#disable-minification",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["Set ",(0,s.jsx)(n.code,{children:"minimize"})," to ",(0,s.jsx)(n.code,{children:"false"})," to disable esbuild minification, and Builder will continue to use Terser to minify the code."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"builderPluginEsbuild({\n minimize: false,\n});\n"})}),"\n",(0,s.jsxs)(n.h2,{id:"limitations",children:["Limitations",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#limitations",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"Although esbuild can significantly improve the build performance of existing webpack projects, it still has certain limitations that require special attention."}),"\n",(0,s.jsxs)(n.h3,{id:"compatibility",children:["Compatibility",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#compatibility",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["As a compiler (i.e. ",(0,s.jsx)(n.code,{children:"loader"})," capability), esbuild usually supports at least ES2015 (that is, ES6) syntax, and does not have the ability to automatically inject Polyfill.. If the production environment needs to downgrade to ES5 and below syntax, it is recommended to use SWC compilation."]}),"\n",(0,s.jsx)(n.p,{children:"You can specify the target syntax version by following config:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"builderPluginEsbuild({\n loader: {\n target: 'es2015',\n },\n});\n"})}),"\n",(0,s.jsxs)(n.p,{children:["As a code minify tool (i.e. ",(0,s.jsx)(n.code,{children:"minimize"})," capability), esbuild can minify the code in production environment, and usually supports ES2015 syntax at least."]}),"\n",(0,s.jsxs)(n.p,{children:["If you set the compressed ",(0,s.jsx)(n.code,{children:"target"})," to ",(0,s.jsx)(n.code,{children:"es5"}),", you need to ensure that all codes have been compiled to ES5 codes, otherwise it will cause esbuild compilation error: ",(0,s.jsx)(n.code,{children:"Transforming 'xxx' to the configured target environment (\"es5\") is not supported yet "}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Therefore, for projects that need to be compatible with ES5 and below syntax in the production environment, please be careful to enable the minimize capability, and it is recommended to use SWC compression."}),"\n",(0,s.jsx)(n.p,{children:"You can specify the target syntax version by following config:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:"builderPluginEsbuild({\n minimize: {\n target: 'es2015',\n },\n});\n"})}),"\n",(0,s.jsxs)(n.div,{className:"rspress-directive danger",children:[(0,s.jsx)(n.div,{className:"rspress-directive-title",children:"Caution"}),(0,s.jsx)(n.div,{className:"rspress-directive-content",children:(0,s.jsx)(n.p,{children:"Projects that need to be compatible with ES5 and below syntax in the production environment need to be careful to turn on the minimize config."})})]}),"\n",(0,s.jsxs)(n.h3,{id:"not-support-babel-plugins",children:["Not support Babel plugins",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#not-support-babel-plugins",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["As a compiler, the syntax transformation function of the original Babel plugins such as ",(0,s.jsx)(n.code,{children:"babel-plugin-import"})," is not available after esbuild is turned on. And since the bottom layer of the plugin uses esbuild's ",(0,s.jsx)(n.code,{children:"Transform API"}),", it does not support esbuild plugins to customize the compilation process."]}),"\n",(0,s.jsxs)(n.p,{children:["If you have requirements related to Babel plugins such as ",(0,s.jsx)(n.code,{children:"babel-plugin-import"}),", you can use the SWC plugin."]}),"\n",(0,s.jsxs)(n.h3,{id:"bundle-size",children:["Bundle Size",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#bundle-size",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"Although the compression speed of esbuild is faster, the compression ratio of esbuild is lower than that of terser, so the bundle size will increase, please use it according to the scenes. Generally speaking, esbuild is more suitable for scenes that are not sensitive to bundle size."}),"\n",(0,s.jsxs)(n.p,{children:["You can refer to ",(0,s.jsx)(n.a,{href:"https://github.com/privatenumber/minification-benchmarks",target:"_blank",rel:"noopener noreferrer",children:"minification-benchmarks"})," for a detailed comparison between minimizers."]})]})}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:n}=Object.assign({},(0,r.useMDXComponents)(),e.components);return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}n.default=d,d.__RSPRESS_PAGE_META={},d.__RSPRESS_PAGE_META["en%2Fplugins%2Fplugin-esbuild.mdx"]={toc:[{text:"Quick Start",id:"quick-start",depth:2},{text:"Used in Modern.js framework",id:"used-in-modernjs-framework",depth:3},{text:"Use via the Node API",id:"use-via-the-node-api",depth:3},{text:"Install",id:"install",depth:4},{text:"Register",id:"register",depth:4},{text:"Config",id:"config",depth:2},{text:"loader",id:"loader",depth:3},{text:"Set JSX Format",id:"set-jsx-format",depth:4},{text:"Set the target environment",id:"set-the-target-environment",depth:4},{text:"Disable transformation",id:"disable-transformation",depth:4},{text:"minimize",id:"minimize",depth:3},{text:"Set the target environment",id:"set-the-target-environment-1",depth:4},{text:"Disable minification",id:"disable-minification",depth:4},{text:"Limitations",id:"limitations",depth:2},{text:"Compatibility",id:"compatibility",depth:3},{text:"Not support Babel plugins",id:"not-support-babel-plugins",depth:3},{text:"Bundle Size",id:"bundle-size",depth:3}],title:"Esbuild Plugin",frontmatter:{}}}}]); \ No newline at end of file +/*! For license information please see 1003.390997c2.js.LICENSE.txt */ +(self.webpackChunk_modern_js_builder_doc=self.webpackChunk_modern_js_builder_doc||[]).push([["1003"],{96331:function(e,n,i){"use strict";i.r(n);var s=i("39980"),r=i("96954"),t=i("75962");function a(e){let n=Object.assign({h1:"h1",a:"a",div:"div",p:"p",strong:"strong",h2:"h2",h3:"h3",pre:"pre",code:"code",h4:"h4",ul:"ul",li:"li"},(0,r.useMDXComponents)(),e.components);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.h1,{id:"esbuild-plugin",children:["Esbuild Plugin",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#esbuild-plugin",children:"#"})]}),"\n",(0,s.jsxs)(n.div,{className:"rspress-directive warning",children:[(0,s.jsx)(n.div,{className:"rspress-directive-title",children:"WARNING"}),(0,s.jsxs)(n.div,{className:"rspress-directive-content",children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"The esbuild feature in the current document is no longer maintained"}),", we recommend using the Rspack + SWC solution, because Rspack + SWC provide better build performance, richer features, and better compatibility."]}),"\n",(0,s.jsxs)(n.p,{children:["Please refer to ",(0,s.jsx)(n.a,{href:"/guide/advanced/rspack-start",children:"\u300CUse Rspack\u300D"})," for more information."]}),"\n"]})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://esbuild.github.io/",target:"_blank",rel:"noopener noreferrer",children:"esbuild"})," is a front-end build tool based on Golang. It has the functions of bundling, compiling and minimizing JavaScript code. Compared with traditional tools, the performance is significantly improved. When minimizing code, compared to webpack's built-in terser minimizer, esbuild has dozens of times better performance."]}),"\n",(0,s.jsxs)(n.p,{children:["Modern.js Builder provides esbuild plugin that allow you to use esbuild instead of babel-loader, ts-loader and terser for transformation and minification process. When you enable esbuild in a large project, ",(0,s.jsx)(n.strong,{children:"it can greatly reduce the time required for code compilation and compression, while effectively avoiding OOM (heap out of memory) problems"}),"."]}),"\n",(0,s.jsxs)(n.h2,{id:"quick-start",children:["Quick Start",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#quick-start",children:"#"})]}),"\n",(0,s.jsxs)(n.h3,{id:"used-in-modernjs-framework",children:["Used in Modern.js framework",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#used-in-modernjs-framework",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["The Modern.js framework integrates the Builder's esbuild plugin by default, so you don't need to manually install and register the plugin, just use the ",(0,s.jsx)(n.a,{href:"https://modernjs.dev/en/configure/app/tools/esbuild.html",target:"_blank",rel:"noopener noreferrer",children:"tools.esbuild"})," configuration:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:"export default defineConfig({\n tools: {\n esbuild: {\n loader: {\n target: 'chrome61',\n },\n minimize: {\n target: 'chrome61',\n },\n },\n },\n});\n"})}),"\n",(0,s.jsxs)(n.h3,{id:"use-via-the-node-api",children:["Use via the Node API",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#use-via-the-node-api",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"If you use the Builder's Node API, you need to manually install and register the esbuild plugin."}),"\n",(0,s.jsxs)(n.h4,{id:"install",children:["Install",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#install",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"You can install the plugin with the following command:"}),"\n","\n",(0,s.jsx)(t.PackageManagerTabs,{command:"add @modern-js/builder-plugin-esbuild -D"}),"\n",(0,s.jsxs)(n.h4,{id:"register",children:["Register",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#register",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["Register esbuild plugin through the ",(0,s.jsx)(n.code,{children:"addPlugins"})," method:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:"import { builderPluginEsbuild } from '@modern-js/builder-plugin-esbuild';\n\n// add the plugin to the builder instance\nbuilder.addPlugins([builderPluginEsbuild()]);\n"})}),"\n",(0,s.jsxs)(n.h2,{id:"config",children:["Config",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#config",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"The plugin will enable code transformation and minification by default. You can also customize the behavior of the plugin through configuration."}),"\n",(0,s.jsxs)(n.h3,{id:"loader",children:["loader",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#loader",children:"#"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Type:"})}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"type LoaderOptions = EsbuildLoaderOptions | false | undefined;\n"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Default:"})}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"const defaultOptions = {\n target: 'es2015',\n charset: builderConfig.output.charset,\n};\n"})}),"\n",(0,s.jsx)(n.p,{children:"This config is used to enable JavaScript/TypeScript transformation, which will replace babel-loader and ts-loader with esbuild-loader."}),"\n",(0,s.jsxs)(n.p,{children:["If you want to modify the options, you can check the ",(0,s.jsx)(n.a,{href:"https://github.com/privatenumber/esbuild-loader#loader",target:"_blank",rel:"noopener noreferrer",children:"esbuild-loader documentation"}),"."]}),"\n",(0,s.jsxs)(n.h4,{id:"set-jsx-format",children:["Set JSX Format",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#set-jsx-format",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["When using esbuild for transformation, esbuild will read the ",(0,s.jsx)(n.code,{children:"compilerOptions.jsx"})," field in ",(0,s.jsx)(n.code,{children:"tsconfig.json"})," to determine which JSX syntax to use."]}),"\n",(0,s.jsxs)(n.p,{children:["Therefore, you need to set the correct JSX syntax in ",(0,s.jsx)(n.code,{children:"tsconfig.json"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["For example, React projects need to set ",(0,s.jsx)(n.code,{children:"compilerOptions.jsx"})," to ",(0,s.jsx)(n.code,{children:"react-jsx"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "compilerOptions": {\n "jsx": "react-jsx"\n }\n}\n'})}),"\n",(0,s.jsxs)(n.h4,{id:"set-the-target-environment",children:["Set the target environment",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#set-the-target-environment",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.code,{children:"target"})," option to set the target environment for transformation. ",(0,s.jsx)(n.code,{children:"target"})," can be set directly to the JavaScript language version, such as ",(0,s.jsx)(n.code,{children:"es6"}),", ",(0,s.jsx)(n.code,{children:"es2020"}),"; it can also be set to several target environments, each target environment is an environment name followed by a version number, such as ",(0,s.jsx)(n.code,{children:"['chrome58', 'edge16' ,'firefox57']"}),". For a detailed introduction of the ",(0,s.jsx)(n.code,{children:"target"})," option, please refer to ",(0,s.jsx)(n.a,{href:"https://esbuild.github.io/api/#target",target:"_blank",rel:"noopener noreferrer",children:"esbuild - target"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"target supports setting to the following environments:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"chrome"}),"\n",(0,s.jsx)(n.li,{children:"edge"}),"\n",(0,s.jsx)(n.li,{children:"firefox"}),"\n",(0,s.jsx)(n.li,{children:"ie"}),"\n",(0,s.jsx)(n.li,{children:"ios"}),"\n",(0,s.jsx)(n.li,{children:"node"}),"\n",(0,s.jsx)(n.li,{children:"opera"}),"\n",(0,s.jsx)(n.li,{children:"safari"}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"builderPluginEsbuild({\n loader: {\n target: 'chrome61',\n },\n});\n"})}),"\n",(0,s.jsxs)(n.h4,{id:"disable-transformation",children:["Disable transformation",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#disable-transformation",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["Set ",(0,s.jsx)(n.code,{children:"loader"})," to ",(0,s.jsx)(n.code,{children:"false"})," to disable esbuild transformation, and Builder will continue to use Babel to transform the code."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"builderPluginEsbuild({\n loader: false,\n});\n"})}),"\n",(0,s.jsxs)(n.h3,{id:"minimize",children:["minimize",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#minimize",children:"#"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Type:"})}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"type MinimizeOptions = EsbuildMinifyOptions | false | undefined;\n"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Default:"})}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"const defaultOptions = {\n css: true,\n target: 'es2015',\n format: builderTarget === 'web' ? 'iife' : undefined,\n};\n"})}),"\n",(0,s.jsx)(n.p,{children:"This option is used to enable minification for JavaScript and CSS."}),"\n",(0,s.jsxs)(n.p,{children:["If you want to modify the options, you can check the ",(0,s.jsx)(n.a,{href:"https://github.com/privatenumber/esbuild-loader#minifyplugin",target:"_blank",rel:"noopener noreferrer",children:"esbuild-loader documentation"}),"."]}),"\n",(0,s.jsxs)(n.h4,{id:"set-the-target-environment-1",children:["Set the target environment",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#set-the-target-environment-1",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.code,{children:"target"})," option to set the target environment for minification."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"builderPluginEsbuild({\n minimize: {\n target: 'chrome61',\n },\n});\n"})}),"\n",(0,s.jsxs)(n.h4,{id:"disable-minification",children:["Disable minification",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#disable-minification",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["Set ",(0,s.jsx)(n.code,{children:"minimize"})," to ",(0,s.jsx)(n.code,{children:"false"})," to disable esbuild minification, and Builder will continue to use Terser to minify the code."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"builderPluginEsbuild({\n minimize: false,\n});\n"})}),"\n",(0,s.jsxs)(n.h2,{id:"limitations",children:["Limitations",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#limitations",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"Although esbuild can significantly improve the build performance of existing webpack projects, it still has certain limitations that require special attention."}),"\n",(0,s.jsxs)(n.h3,{id:"compatibility",children:["Compatibility",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#compatibility",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["As a compiler (i.e. ",(0,s.jsx)(n.code,{children:"loader"})," capability), esbuild usually supports at least ES2015 (that is, ES6) syntax, and does not have the ability to automatically inject Polyfill.. If the production environment needs to downgrade to ES5 and below syntax, it is recommended to use SWC compilation."]}),"\n",(0,s.jsx)(n.p,{children:"You can specify the target syntax version by following config:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"builderPluginEsbuild({\n loader: {\n target: 'es2015',\n },\n});\n"})}),"\n",(0,s.jsxs)(n.p,{children:["As a code minify tool (i.e. ",(0,s.jsx)(n.code,{children:"minimize"})," capability), esbuild can minify the code in production environment, and usually supports ES2015 syntax at least."]}),"\n",(0,s.jsxs)(n.p,{children:["If you set the compressed ",(0,s.jsx)(n.code,{children:"target"})," to ",(0,s.jsx)(n.code,{children:"es5"}),", you need to ensure that all codes have been compiled to ES5 codes, otherwise it will cause esbuild compilation error: ",(0,s.jsx)(n.code,{children:"Transforming 'xxx' to the configured target environment (\"es5\") is not supported yet "}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Therefore, for projects that need to be compatible with ES5 and below syntax in the production environment, please be careful to enable the minimize capability, and it is recommended to use SWC compression."}),"\n",(0,s.jsx)(n.p,{children:"You can specify the target syntax version by following config:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:"builderPluginEsbuild({\n minimize: {\n target: 'es2015',\n },\n});\n"})}),"\n",(0,s.jsxs)(n.div,{className:"rspress-directive danger",children:[(0,s.jsx)(n.div,{className:"rspress-directive-title",children:"Caution"}),(0,s.jsx)(n.div,{className:"rspress-directive-content",children:(0,s.jsx)(n.p,{children:"Projects that need to be compatible with ES5 and below syntax in the production environment need to be careful to turn on the minimize config."})})]}),"\n",(0,s.jsxs)(n.h3,{id:"not-support-babel-plugins",children:["Not support Babel plugins",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#not-support-babel-plugins",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["As a compiler, the syntax transformation function of the original Babel plugins such as ",(0,s.jsx)(n.code,{children:"babel-plugin-import"})," is not available after esbuild is turned on. And since the bottom layer of the plugin uses esbuild's ",(0,s.jsx)(n.code,{children:"Transform API"}),", it does not support esbuild plugins to customize the compilation process."]}),"\n",(0,s.jsxs)(n.p,{children:["If you have requirements related to Babel plugins such as ",(0,s.jsx)(n.code,{children:"babel-plugin-import"}),", you can use the SWC plugin."]}),"\n",(0,s.jsxs)(n.h3,{id:"bundle-size",children:["Bundle Size",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#bundle-size",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"Although the compression speed of esbuild is faster, the compression ratio of esbuild is lower than that of terser, so the bundle size will increase, please use it according to the scenes. Generally speaking, esbuild is more suitable for scenes that are not sensitive to bundle size."}),"\n",(0,s.jsxs)(n.p,{children:["You can refer to ",(0,s.jsx)(n.a,{href:"https://github.com/privatenumber/minification-benchmarks",target:"_blank",rel:"noopener noreferrer",children:"minification-benchmarks"})," for a detailed comparison between minimizers."]})]})}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:n}=Object.assign({},(0,r.useMDXComponents)(),e.components);return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}n.default=d,d.__RSPRESS_PAGE_META={},d.__RSPRESS_PAGE_META["en%2Fplugins%2Fplugin-esbuild.mdx"]={toc:[{text:"Quick Start",id:"quick-start",depth:2},{text:"Used in Modern.js framework",id:"used-in-modernjs-framework",depth:3},{text:"Use via the Node API",id:"use-via-the-node-api",depth:3},{text:"Install",id:"install",depth:4},{text:"Register",id:"register",depth:4},{text:"Config",id:"config",depth:2},{text:"loader",id:"loader",depth:3},{text:"Set JSX Format",id:"set-jsx-format",depth:4},{text:"Set the target environment",id:"set-the-target-environment",depth:4},{text:"Disable transformation",id:"disable-transformation",depth:4},{text:"minimize",id:"minimize",depth:3},{text:"Set the target environment",id:"set-the-target-environment-1",depth:4},{text:"Disable minification",id:"disable-minification",depth:4},{text:"Limitations",id:"limitations",depth:2},{text:"Compatibility",id:"compatibility",depth:3},{text:"Not support Babel plugins",id:"not-support-babel-plugins",depth:3},{text:"Bundle Size",id:"bundle-size",depth:3}],title:"Esbuild Plugin",frontmatter:{}}}}]); \ No newline at end of file diff --git a/modern-js/builder/static/js/async/2129.c76db993.js.LICENSE.txt b/modern-js/builder/static/js/async/1003.390997c2.js.LICENSE.txt similarity index 100% rename from modern-js/builder/static/js/async/2129.c76db993.js.LICENSE.txt rename to modern-js/builder/static/js/async/1003.390997c2.js.LICENSE.txt diff --git a/modern-js/builder/static/js/async/1022.99f81db4.js b/modern-js/builder/static/js/async/1022.99f81db4.js new file mode 100644 index 0000000000..954ad108d6 --- /dev/null +++ b/modern-js/builder/static/js/async/1022.99f81db4.js @@ -0,0 +1,2 @@ +/*! For license information please see 1022.99f81db4.js.LICENSE.txt */ +(self.webpackChunk_modern_js_builder_doc=self.webpackChunk_modern_js_builder_doc||[]).push([["1022"],{87676:function(e,n,i){"use strict";i.r(n);var s=i("39980"),r=i("96954");function o(e){let n=Object.assign({h1:"h1",a:"a",p:"p",h2:"h2",ul:"ul",li:"li",strong:"strong",pre:"pre",code:"code",h3:"h3",h4:"h4"},(0,r.useMDXComponents)(),e.components);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.h1,{id:"experiments-config",children:["Experiments Config",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#experiments-config",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"This section describes some experimental configs in the Builder, which can enable unstable features in Builder."}),"\n",(0,s.jsxs)(n.p,{children:["If you meet issues with experimental features, please disable the config first and report through ",(0,s.jsx)(n.a,{href:"https://github.com/web-infra-dev/modern.js/issues",target:"_blank",rel:"noopener noreferrer",children:"GitHub Issues"}),"."]}),"\n",(0,s.jsxs)(n.h2,{id:"experimentslazycompilation",children:["experiments.lazyCompilation",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#experimentslazycompilation",children:"#"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Type:"})}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"type LazyCompilationOptions =\n | boolean\n | {\n // Whether to enable lazy compilation for entries\n entries?: boolean;\n // Whether to enable lazy compilation for dynamic imports\n imports?: boolean;\n };\n"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Default:"})," ",(0,s.jsx)(n.code,{children:"false"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Bundler:"})," ",(0,s.jsx)(n.code,{children:"only support webpack"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Used to enable the lazy compilation (i.e. compile on demand). When this config is enabled, Builder will compile entrypoints and dynamic imports only when they are used. It will improve the compilation startup time of the project."}),"\n",(0,s.jsx)(n.p,{children:"Lazy compilation only takes effect in the development."}),"\n",(0,s.jsxs)(n.h3,{id:"lazy-compilation-for-dynamic-imports",children:["Lazy Compilation for Dynamic Imports",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#lazy-compilation-for-dynamic-imports",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["Lazy compile async modules introduced by ",(0,s.jsx)(n.a,{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import",target:"_blank",rel:"noopener noreferrer",children:"dynamic import"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"export default {\n experiments: {\n lazyCompilation: {\n imports: true,\n entries: false,\n },\n },\n};\n"})}),"\n",(0,s.jsxs)(n.p,{children:["When ",(0,s.jsx)(n.code,{children:"imports"})," option is enabled, all async modules will only be compiled when requested. If your project is a single-page application, and routing is split through dynamic import, there will be a significant effect of speeding up compilation."]}),"\n",(0,s.jsxs)(n.h3,{id:"lazy-compilation-for-entires",children:["Lazy Compilation for Entires",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#lazy-compilation-for-entires",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"In addition to lazy compilation for async modules, you can also choose to lazily compile both entries and async modules at the same time."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"export default {\n experiments: {\n lazyCompilation: {\n imports: true,\n entries: true,\n },\n },\n};\n"})}),"\n",(0,s.jsx)(n.p,{children:"The above config can also be simplified to:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"export default {\n experiments: {\n lazyCompilation: true,\n },\n};\n"})}),"\n",(0,s.jsxs)(n.p,{children:["When ",(0,s.jsx)(n.code,{children:"entries"})," option is enabled, all pages will not be compiled when the compilation is started, and the page will be compiled only when you visit it."]}),"\n",(0,s.jsx)(n.p,{children:"When using lazy compilation for entries, there are some considerations:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Only work for multi-page applications, no work for single-page applications."}),"\n",(0,s.jsx)(n.li,{children:"when you visit a page, there will be a white screen for a period of time due to waiting for the page to be compiled."}),"\n"]}),"\n",(0,s.jsxs)(n.h3,{id:"limitations",children:["Limitations",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#limitations",children:"#"})]}),"\n",(0,s.jsxs)(n.h4,{id:"disable-split-chunks",children:["Disable split chunks",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#disable-split-chunks",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"When you enable lazy compilation, in order to ensure the compilation results, Builder will disable split chunks in the development. This will not affect the build results in the production, but will cause a difference between the build results of the development and production."}),"\n",(0,s.jsxs)(n.h4,{id:"use-proxy",children:["Use proxy",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#use-proxy",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"Lazy Compilation relies on the local development server of webpack. When you proxy a domain name to localhost, Lazy Compilation will not work properly. Therefore, if you need to develop with proxy, please disable Lazy Compilation."}),"\n",(0,s.jsxs)(n.h4,{id:"other-potential-issues",children:["Other Potential Issues",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#other-potential-issues",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"Considering that Lazy Compilation is still an experimental feature of webpack, you may encounter some potential issues while using it, such as changes in the behavior of compiled artifacts or compilation errors."}),"\n",(0,s.jsxs)(n.p,{children:["When you encounter these issues, you can refer to ",(0,s.jsx)(n.a,{href:"https://github.com/webpack/webpack/issues",target:"_blank",rel:"noopener noreferrer",children:"webpack Issues"})," to find solutions or disable the ",(0,s.jsx)(n.code,{children:"lazyCompilation"})," configuration option."]}),"\n",(0,s.jsxs)(n.h2,{id:"experimentssourcebuild",children:["experiments.sourceBuild",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#experimentssourcebuild",children:"#"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Type:"})," ",(0,s.jsx)(n.code,{children:"boolean | PluginSourceBuildOptions"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Default:"})," ",(0,s.jsx)(n.code,{children:"false"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Version:"})," ",(0,s.jsx)(n.code,{children:"MAJOR_VERSION.46.0"})]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Used to enable the ability for source code building. When this configuration option is enabled, Builder will read the source code files corresponding to the ",(0,s.jsx)(n.code,{children:"source"})," field in the sub-project's package.json and compile them."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"export default {\n experiments: {\n sourceBuild: true,\n },\n};\n"})}),"\n",(0,s.jsxs)(n.p,{children:["More detail can see ",(0,s.jsx)(n.a,{href:"https://modernjs.dev/en/guides/advanced-features/source-build.html",target:"_blank",rel:"noopener noreferrer",children:'"Source Code Build Mode"'}),"\u3002"]}),"\n",(0,s.jsxs)(n.h3,{id:"options",children:["Options",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#options",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"experiments.sourceBuild"})," is implemented based on Rsbuild's ",(0,s.jsx)(n.a,{href:"https://rsbuild.dev/plugins/list/plugin-source-build#options",target:"_blank",rel:"noopener noreferrer",children:"Source Build plugin"}),". You can pass plugin options like this:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"export default {\n experiments: {\n sourceBuild: {\n sourceField: 'my-source',\n resolvePriority: 'output',\n },\n },\n};\n"})})]})}function t(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:n}=Object.assign({},(0,r.useMDXComponents)(),e.components);return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}n.default=t,t.__RSPRESS_PAGE_META={},t.__RSPRESS_PAGE_META["en%2Fapi%2Fconfig-experiments.mdx"]={toc:[{text:"experiments.lazyCompilation",id:"experimentslazycompilation",depth:2},{text:"Lazy Compilation for Dynamic Imports",id:"lazy-compilation-for-dynamic-imports",depth:3},{text:"Lazy Compilation for Entires",id:"lazy-compilation-for-entires",depth:3},{text:"Limitations",id:"limitations",depth:3},{text:"Disable split chunks",id:"disable-split-chunks",depth:4},{text:"Use proxy",id:"use-proxy",depth:4},{text:"Other Potential Issues",id:"other-potential-issues",depth:4},{text:"experiments.sourceBuild",id:"experimentssourcebuild",depth:2},{text:"Options",id:"options",depth:3}],title:"Experiments Config",frontmatter:{extractApiHeaders:[2]}}}}]); \ No newline at end of file diff --git a/modern-js/builder/static/js/async/1028.ef7733c3.js.LICENSE.txt b/modern-js/builder/static/js/async/1022.99f81db4.js.LICENSE.txt similarity index 100% rename from modern-js/builder/static/js/async/1028.ef7733c3.js.LICENSE.txt rename to modern-js/builder/static/js/async/1022.99f81db4.js.LICENSE.txt diff --git a/modern-js/builder/static/js/async/6383.08ff3460.js b/modern-js/builder/static/js/async/1047.9e35d86c.js similarity index 99% rename from modern-js/builder/static/js/async/6383.08ff3460.js rename to modern-js/builder/static/js/async/1047.9e35d86c.js index f0322c05ef..8d1cfa2103 100644 --- a/modern-js/builder/static/js/async/6383.08ff3460.js +++ b/modern-js/builder/static/js/async/1047.9e35d86c.js @@ -1,2 +1,2 @@ -/*! For license information please see 6383.08ff3460.js.LICENSE.txt */ -(self.webpackChunk_modern_js_builder_doc=self.webpackChunk_modern_js_builder_doc||[]).push([["6383"],{63014:function(e,n,i){"use strict";i.r(n);var r=i("39980"),o=i("96954");function l(e){let n=Object.assign({h1:"h1",a:"a",p:"p",h2:"h2",strong:"strong",ul:"ul",li:"li",code:"code",h3:"h3",pre:"pre"},(0,o.useMDXComponents)(),e.components);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.h1,{id:"plugin-hooks",children:["Plugin Hooks",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#plugin-hooks",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"This section describes the lifetime hooks provided by Builder plugin."}),"\n",(0,r.jsxs)(n.h2,{id:"overview",children:["Overview",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#overview",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Common Hooks"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"modifyBuilderConfig"}),": Modify raw config of Builder."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"modifyBundlerChain"})," (experimental): Modify config of webpack or Rspack via the bundler chain api."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"modifyWebpackChain"}),": Modify webpack-chain."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"modifyWebpackConfig"}),": Modify raw config of webpack."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"modifyRspackConfig"}),": Modify raw config of Rspack."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onBeforeCreateCompiler"}),": Called before creating compiler instance."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onAfterCreateCompiler"}),": Called after the compiler object is created, but before the build is executed."]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Build Hooks"}),": Called only when the build method is executed to build the production outputs."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onBeforeBuild"}),": Called before the production build is executed."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onAfterBuild"}),": Called after executing the production build, you can get the build stats."]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Dev Server Hooks"}),": Called only when the startDevServer method is executed to run the development server."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onBeforeStartDevServer"}),": Called before starting the development server."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onAfterStartDevServer"}),": Called after starting the development server."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onDevCompileDone"}),": Called after each development compile."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Other Hooks"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onExit"}),": Called when the process is going to exit."]}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"common-hooks",children:["Common Hooks",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#common-hooks",children:"#"})]}),"\n",(0,r.jsxs)(n.h3,{id:"modifybuilderconfig",children:["modifyBuilderConfig",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#modifybuilderconfig",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Modify the config passed to the Builder, you can directly modify the config object, or return a new object to replace the previous object."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"type ModifyWebpackChainUtils = {\n mergeBuilderConfig: typeof mergeBuilderConfig;\n};\n\nfunction ModifyBuilderConfig(\n callback: (\n config: BuilderConfig,\n utils: ModifyWebpackChainUtils,\n ) => PromiseOrNot,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.modifyBuilderConfig((config, { mergeBuilderConfig }) => {\n config.html = config.html || {};\n config.html.title = 'Hello World!';\n return mergeBuilderConfig(config, {\n source: { preEntry: 'foo.js' },\n });\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"modifybundlerchain-experimental",children:["modifyBundlerChain ",(0,r.jsx)(n.code,{children:"experimental"}),(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#modifybundlerchain-experimental",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Bundler chain is a subset of webpack chain, which contains part of the webpack chain API that you can use to modify both webpack and Rspack configuration."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"modifyBundlerChain"})," is used to call the bundler chain to modify the webpack / Rspack configuration. You can use this hook when using webpack-provider or rspack-provider."]}),"\n",(0,r.jsxs)(n.p,{children:["This hook only supports modifying the configuration of the non-differentiated parts of webpack and Rspack. For example, modifying the devtool configuration option (webpack and Rspack have the same devtool property value type), or adding an ",(0,r.jsx)(n.a,{href:"https://www.rspack.dev/guide/plugin-compat.html",target:"_blank",rel:"noopener noreferrer",children:"Rspack-compatible"})," webpack plugin."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"type ModifyBundlerChainUtils = {\n env: NodeEnv;\n isProd: boolean;\n target: BuilderTarget;\n isServer: boolean;\n isWebWorker: boolean;\n CHAIN_ID: ChainIdentifier;\n HtmlPlugin: typeof import('html-webpack-plugin');\n bundler: {\n // Depends on bundler type\n BannerPlugin: typeof webpack.BannerPlugin | typeof rspack.BannerPlugin;\n DefinePlugin: typeof webpack.DefinePlugin | typeof rspack.DefinePlugin;\n }\n};\n\nfunction ModifyBundlerChain(\n callback: (\n chain: BundlerChain,\n utils: ModifyBundlerChainUtils,\n ) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';\n\nexport default () => ({\n setup: api => {\n api.modifyBundlerChain((chain, utils) => {\n if (utils.env === 'development') {\n chain.devtool('eval');\n }\n\n chain.plugin('bundle-analyze').use(BundleAnalyzerPlugin);\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"modifywebpackchain",children:["modifyWebpackChain",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#modifywebpackchain",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Modify the webpack config through the webpack chain. This method is only called when using webpack-provider."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"type ModifyWebpackChainUtils = {\n env: NodeEnv;\n isProd: boolean;\n target: BuilderTarget;\n webpack: typeof import('webpack');\n isServer: boolean;\n isWebWorker: boolean;\n CHAIN_ID: ChainIdentifier;\n getCompiledPath: (name: string) => string;\n HtmlWebpackPlugin: typeof import('html-webpack-plugin');\n};\n\nfunction ModifyWebpackChain(\n callback: (\n chain: WebpackChain,\n utils: ModifyWebpackChainUtils,\n ) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.modifyWebpackChain((chain, utils) => {\n if (utils.env === 'development') {\n chain.devtool('eval');\n }\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"modifywebpackconfig",children:["modifyWebpackConfig",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#modifywebpackconfig",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"To modify the final webpack config object, you can directly modify the config object, or return a new object to replace the previous object. This method is only called when using webpack-provider."}),"\n",(0,r.jsxs)(n.p,{children:["This method is called later than the ",(0,r.jsx)(n.code,{children:"modifyWebpackChain"})," hook."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"type ModifyWebpackConfigUtils = {\n env: NodeEnv;\n isProd: boolean;\n target: BuilderTarget;\n webpack: typeof import('webpack');\n isServer: boolean;\n isWebWorker: boolean;\n CHAIN_ID: ChainIdentifier;\n getCompiledPath: (name: string) => string;\n HtmlWebpackPlugin: typeof import('html-webpack-plugin');\n addRules: (rules: RuleSetRule | RuleSetRule[]) => void;\n prependPlugins: (\n plugins: WebpackPluginInstance | WebpackPluginInstance[],\n ) => void;\n appendPlugins: (\n plugins: WebpackPluginInstance | WebpackPluginInstance[],\n ) => void;\n removePlugin: (pluginName: string) => void;\n};\n\nfunction ModifyWebpackConfig(\n callback: (\n config: WebpackConfig,\n utils: ModifyWebpackConfigUtils,\n ) => Promise | WebpackConfig | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.modifyWebpackConfig((config, utils) => {\n if (utils.env === 'development') {\n config.devtool = 'eval';\n }\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"modifyrspackconfig",children:["modifyRspackConfig",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#modifyrspackconfig",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"To modify the final Rspack config object, you can directly modify the config object, or return a new object to replace the previous object. This method is only called when using rspack-provider."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"type ModifyRspackConfigUtils = {\n env: NodeEnv;\n isProd: boolean;\n target: BuilderTarget;\n isServer: boolean;\n isWebWorker: boolean;\n getCompiledPath: (name: string) => string;\n rspack: typeof import('@rspack/core');\n};\n\nfunction ModifyRspackConfig(\n callback: (\n config: RspackConfig,\n utils: ModifyRspackConfigUtils,\n ) => Promise | RspackConfig | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.modifyRspackConfig((config, utils) => {\n if (utils.env === 'development') {\n config.devtool = 'eval';\n }\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"onbeforecreatecompiler",children:["onBeforeCreateCompiler",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onbeforecreatecompiler",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"onBeforeCreateCompiler"})," is a callback function that is triggered after the Compiler instance has been created, but before the build process begins. This hook is called when you run ",(0,r.jsx)(n.code,{children:"builder.startDevServer"}),", ",(0,r.jsx)(n.code,{children:"builder.build"}),", or ",(0,r.jsx)(n.code,{children:"builder.createCompiler"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["You can access the Compiler instance object through the ",(0,r.jsx)(n.code,{children:"compiler"})," parameter:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is webpack, you will get the webpack Compiler object."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is Rspack, you will get the Rspack Compiler object."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnBeforeCreateCompiler(\n callback: (params: {\n bundlerConfigs: WebpackConfig[] | RspackConfig[];\n }) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onBeforeCreateCompiler(({ bundlerConfigs }) => {\n console.log('the bundler config is ', bundlerConfigs);\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"onaftercreatecompiler",children:["onAfterCreateCompiler",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onaftercreatecompiler",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"onAfterCreateCompiler"})," is a callback function that is triggered after the compiler instance has been created, but before the build process. This hook is called when you run ",(0,r.jsx)(n.code,{children:"builder.startDevServer"}),", ",(0,r.jsx)(n.code,{children:"builder.build"}),", or ",(0,r.jsx)(n.code,{children:"builder.createCompiler"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["You can access the Compiler instance object through the ",(0,r.jsx)(n.code,{children:"compiler"})," parameter:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is webpack, you will get the webpack Compiler object."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is Rspack, you will get the Rspack Compiler object."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnAfterCreateCompiler(callback: (params: {\n compiler: Compiler | MultiCompiler;\n}) => Promise | void;): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onAfterCreateCompiler(({ compiler }) => {\n console.log('the compiler is ', compiler);\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h2,{id:"build-hooks",children:["Build Hooks",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#build-hooks",children:"#"})]}),"\n",(0,r.jsxs)(n.h3,{id:"onbeforebuild",children:["onBeforeBuild",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onbeforebuild",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"onBeforeBuild"})," is a callback function that is triggered before the production build is executed. You can access the final configuration array of the underlying bundler through the `bundlerConfigs' parameter:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is webpack, you will get a webpack configuration array."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is Rspack, you will get an Rspack configuration array."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["The configuration array can contain one or more configurations, depending on the current ",(0,r.jsx)(n.code,{children:"target"})," config of Builder."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnBeforeBuild(\n callback: (params: {\n bundlerConfigs?: WebpackConfig[] | RspackConfig[];\n }) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onBeforeBuild(({ bundlerConfigs }) => {\n console.log('the bundler config is ', bundlerConfigs);\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"onafterbuild",children:["onAfterBuild",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onafterbuild",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"onAfterBuild"})," is a callback function that is triggered after running the production build. You can access the build result information via the `stats' parameter:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is webpack, you will get webpack Stats."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is Rspack, you will get Rspack Stats."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnAfterBuild(\n callback: (params: { stats?: Stats | MultiStats }) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onAfterBuild(({ stats }) => {\n console.log(stats?.toJson());\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h2,{id:"dev-server-hooks",children:["Dev Server Hooks",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#dev-server-hooks",children:"#"})]}),"\n",(0,r.jsxs)(n.h3,{id:"onbeforestartdevserver",children:["onBeforeStartDevServer",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onbeforestartdevserver",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Called before starting the development server."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnBeforeStartDevServer(callback: () => Promise | void): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onBeforeStartDevServer(() => {\n console.log('before start!');\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"onafterstartdevserver",children:["onAfterStartDevServer",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onafterstartdevserver",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:["Called after starting the development server, you can get the port number through the ",(0,r.jsx)(n.code,{children:"port"})," parameter."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnAfterStartDevServer(\n callback: (params: { port: number }) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onAfterStartDevServer(({ port }) => {\n console.log('this port is: ', port);\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"ondevcompiledone",children:["onDevCompileDone",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#ondevcompiledone",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:["Called after each development environment build, you can use ",(0,r.jsx)(n.code,{children:"isFirstCompile"})," to determine whether it is the first build."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnDevCompileDone(\n callback: (params: { isFirstCompile: boolean }) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onDevCompileDone(({ isFirstCompile }) => {\n if (isFirstCompile) {\n console.log('first compile!');\n } else {\n console.log('re-compile!');\n }\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h2,{id:"other-hooks",children:["Other Hooks",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#other-hooks",children:"#"})]}),"\n",(0,r.jsxs)(n.h3,{id:"onexit",children:["onExit",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onexit",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Called when the process is going to exit, this hook can only execute synchronous code."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnExit(callback: () => void): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onExit(() => {\n console.log('exit!');\n });\n },\n});\n"})})]})}function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:n}=Object.assign({},(0,o.useMDXComponents)(),e.components);return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}n.default=s,s.__RSPRESS_PAGE_META={},s.__RSPRESS_PAGE_META["en%2Fapi%2Fplugin-hooks.mdx"]={toc:[{text:"Overview",id:"overview",depth:2},{text:"Common Hooks",id:"common-hooks",depth:2},{text:"modifyBuilderConfig",id:"modifybuilderconfig",depth:3},{text:"modifyBundlerChain `experimental`",id:"modifybundlerchain-experimental",depth:3},{text:"modifyWebpackChain",id:"modifywebpackchain",depth:3},{text:"modifyWebpackConfig",id:"modifywebpackconfig",depth:3},{text:"modifyRspackConfig",id:"modifyrspackconfig",depth:3},{text:"onBeforeCreateCompiler",id:"onbeforecreatecompiler",depth:3},{text:"onAfterCreateCompiler",id:"onaftercreatecompiler",depth:3},{text:"Build Hooks",id:"build-hooks",depth:2},{text:"onBeforeBuild",id:"onbeforebuild",depth:3},{text:"onAfterBuild",id:"onafterbuild",depth:3},{text:"Dev Server Hooks",id:"dev-server-hooks",depth:2},{text:"onBeforeStartDevServer",id:"onbeforestartdevserver",depth:3},{text:"onAfterStartDevServer",id:"onafterstartdevserver",depth:3},{text:"onDevCompileDone",id:"ondevcompiledone",depth:3},{text:"Other Hooks",id:"other-hooks",depth:2},{text:"onExit",id:"onexit",depth:3}],title:"Plugin Hooks",frontmatter:{extractApiHeaders:[2]}}}}]); \ No newline at end of file +/*! For license information please see 1047.9e35d86c.js.LICENSE.txt */ +(self.webpackChunk_modern_js_builder_doc=self.webpackChunk_modern_js_builder_doc||[]).push([["1047"],{97643:function(e,n,i){"use strict";i.r(n);var r=i("39980"),o=i("96954");function l(e){let n=Object.assign({h1:"h1",a:"a",p:"p",h2:"h2",strong:"strong",ul:"ul",li:"li",code:"code",h3:"h3",pre:"pre"},(0,o.useMDXComponents)(),e.components);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.h1,{id:"plugin-hooks",children:["Plugin Hooks",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#plugin-hooks",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"This section describes the lifetime hooks provided by Builder plugin."}),"\n",(0,r.jsxs)(n.h2,{id:"overview",children:["Overview",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#overview",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Common Hooks"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"modifyBuilderConfig"}),": Modify raw config of Builder."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"modifyBundlerChain"})," (experimental): Modify config of webpack or Rspack via the bundler chain api."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"modifyWebpackChain"}),": Modify webpack-chain."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"modifyWebpackConfig"}),": Modify raw config of webpack."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"modifyRspackConfig"}),": Modify raw config of Rspack."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onBeforeCreateCompiler"}),": Called before creating compiler instance."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onAfterCreateCompiler"}),": Called after the compiler object is created, but before the build is executed."]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Build Hooks"}),": Called only when the build method is executed to build the production outputs."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onBeforeBuild"}),": Called before the production build is executed."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onAfterBuild"}),": Called after executing the production build, you can get the build stats."]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Dev Server Hooks"}),": Called only when the startDevServer method is executed to run the development server."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onBeforeStartDevServer"}),": Called before starting the development server."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onAfterStartDevServer"}),": Called after starting the development server."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onDevCompileDone"}),": Called after each development compile."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Other Hooks"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"onExit"}),": Called when the process is going to exit."]}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"common-hooks",children:["Common Hooks",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#common-hooks",children:"#"})]}),"\n",(0,r.jsxs)(n.h3,{id:"modifybuilderconfig",children:["modifyBuilderConfig",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#modifybuilderconfig",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Modify the config passed to the Builder, you can directly modify the config object, or return a new object to replace the previous object."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"type ModifyWebpackChainUtils = {\n mergeBuilderConfig: typeof mergeBuilderConfig;\n};\n\nfunction ModifyBuilderConfig(\n callback: (\n config: BuilderConfig,\n utils: ModifyWebpackChainUtils,\n ) => PromiseOrNot,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.modifyBuilderConfig((config, { mergeBuilderConfig }) => {\n config.html = config.html || {};\n config.html.title = 'Hello World!';\n return mergeBuilderConfig(config, {\n source: { preEntry: 'foo.js' },\n });\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"modifybundlerchain-experimental",children:["modifyBundlerChain ",(0,r.jsx)(n.code,{children:"experimental"}),(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#modifybundlerchain-experimental",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Bundler chain is a subset of webpack chain, which contains part of the webpack chain API that you can use to modify both webpack and Rspack configuration."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"modifyBundlerChain"})," is used to call the bundler chain to modify the webpack / Rspack configuration. You can use this hook when using webpack-provider or rspack-provider."]}),"\n",(0,r.jsxs)(n.p,{children:["This hook only supports modifying the configuration of the non-differentiated parts of webpack and Rspack. For example, modifying the devtool configuration option (webpack and Rspack have the same devtool property value type), or adding an ",(0,r.jsx)(n.a,{href:"https://www.rspack.dev/guide/plugin-compat.html",target:"_blank",rel:"noopener noreferrer",children:"Rspack-compatible"})," webpack plugin."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"type ModifyBundlerChainUtils = {\n env: NodeEnv;\n isProd: boolean;\n target: BuilderTarget;\n isServer: boolean;\n isWebWorker: boolean;\n CHAIN_ID: ChainIdentifier;\n HtmlPlugin: typeof import('html-webpack-plugin');\n bundler: {\n // Depends on bundler type\n BannerPlugin: typeof webpack.BannerPlugin | typeof rspack.BannerPlugin;\n DefinePlugin: typeof webpack.DefinePlugin | typeof rspack.DefinePlugin;\n }\n};\n\nfunction ModifyBundlerChain(\n callback: (\n chain: BundlerChain,\n utils: ModifyBundlerChainUtils,\n ) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';\n\nexport default () => ({\n setup: api => {\n api.modifyBundlerChain((chain, utils) => {\n if (utils.env === 'development') {\n chain.devtool('eval');\n }\n\n chain.plugin('bundle-analyze').use(BundleAnalyzerPlugin);\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"modifywebpackchain",children:["modifyWebpackChain",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#modifywebpackchain",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Modify the webpack config through the webpack chain. This method is only called when using webpack-provider."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"type ModifyWebpackChainUtils = {\n env: NodeEnv;\n isProd: boolean;\n target: BuilderTarget;\n webpack: typeof import('webpack');\n isServer: boolean;\n isWebWorker: boolean;\n CHAIN_ID: ChainIdentifier;\n getCompiledPath: (name: string) => string;\n HtmlWebpackPlugin: typeof import('html-webpack-plugin');\n};\n\nfunction ModifyWebpackChain(\n callback: (\n chain: WebpackChain,\n utils: ModifyWebpackChainUtils,\n ) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.modifyWebpackChain((chain, utils) => {\n if (utils.env === 'development') {\n chain.devtool('eval');\n }\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"modifywebpackconfig",children:["modifyWebpackConfig",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#modifywebpackconfig",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"To modify the final webpack config object, you can directly modify the config object, or return a new object to replace the previous object. This method is only called when using webpack-provider."}),"\n",(0,r.jsxs)(n.p,{children:["This method is called later than the ",(0,r.jsx)(n.code,{children:"modifyWebpackChain"})," hook."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"type ModifyWebpackConfigUtils = {\n env: NodeEnv;\n isProd: boolean;\n target: BuilderTarget;\n webpack: typeof import('webpack');\n isServer: boolean;\n isWebWorker: boolean;\n CHAIN_ID: ChainIdentifier;\n getCompiledPath: (name: string) => string;\n HtmlWebpackPlugin: typeof import('html-webpack-plugin');\n addRules: (rules: RuleSetRule | RuleSetRule[]) => void;\n prependPlugins: (\n plugins: WebpackPluginInstance | WebpackPluginInstance[],\n ) => void;\n appendPlugins: (\n plugins: WebpackPluginInstance | WebpackPluginInstance[],\n ) => void;\n removePlugin: (pluginName: string) => void;\n};\n\nfunction ModifyWebpackConfig(\n callback: (\n config: WebpackConfig,\n utils: ModifyWebpackConfigUtils,\n ) => Promise | WebpackConfig | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.modifyWebpackConfig((config, utils) => {\n if (utils.env === 'development') {\n config.devtool = 'eval';\n }\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"modifyrspackconfig",children:["modifyRspackConfig",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#modifyrspackconfig",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"To modify the final Rspack config object, you can directly modify the config object, or return a new object to replace the previous object. This method is only called when using rspack-provider."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"type ModifyRspackConfigUtils = {\n env: NodeEnv;\n isProd: boolean;\n target: BuilderTarget;\n isServer: boolean;\n isWebWorker: boolean;\n getCompiledPath: (name: string) => string;\n rspack: typeof import('@rspack/core');\n};\n\nfunction ModifyRspackConfig(\n callback: (\n config: RspackConfig,\n utils: ModifyRspackConfigUtils,\n ) => Promise | RspackConfig | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.modifyRspackConfig((config, utils) => {\n if (utils.env === 'development') {\n config.devtool = 'eval';\n }\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"onbeforecreatecompiler",children:["onBeforeCreateCompiler",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onbeforecreatecompiler",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"onBeforeCreateCompiler"})," is a callback function that is triggered after the Compiler instance has been created, but before the build process begins. This hook is called when you run ",(0,r.jsx)(n.code,{children:"builder.startDevServer"}),", ",(0,r.jsx)(n.code,{children:"builder.build"}),", or ",(0,r.jsx)(n.code,{children:"builder.createCompiler"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["You can access the Compiler instance object through the ",(0,r.jsx)(n.code,{children:"compiler"})," parameter:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is webpack, you will get the webpack Compiler object."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is Rspack, you will get the Rspack Compiler object."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnBeforeCreateCompiler(\n callback: (params: {\n bundlerConfigs: WebpackConfig[] | RspackConfig[];\n }) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onBeforeCreateCompiler(({ bundlerConfigs }) => {\n console.log('the bundler config is ', bundlerConfigs);\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"onaftercreatecompiler",children:["onAfterCreateCompiler",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onaftercreatecompiler",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"onAfterCreateCompiler"})," is a callback function that is triggered after the compiler instance has been created, but before the build process. This hook is called when you run ",(0,r.jsx)(n.code,{children:"builder.startDevServer"}),", ",(0,r.jsx)(n.code,{children:"builder.build"}),", or ",(0,r.jsx)(n.code,{children:"builder.createCompiler"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["You can access the Compiler instance object through the ",(0,r.jsx)(n.code,{children:"compiler"})," parameter:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is webpack, you will get the webpack Compiler object."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is Rspack, you will get the Rspack Compiler object."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnAfterCreateCompiler(callback: (params: {\n compiler: Compiler | MultiCompiler;\n}) => Promise | void;): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onAfterCreateCompiler(({ compiler }) => {\n console.log('the compiler is ', compiler);\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h2,{id:"build-hooks",children:["Build Hooks",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#build-hooks",children:"#"})]}),"\n",(0,r.jsxs)(n.h3,{id:"onbeforebuild",children:["onBeforeBuild",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onbeforebuild",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"onBeforeBuild"})," is a callback function that is triggered before the production build is executed. You can access the final configuration array of the underlying bundler through the `bundlerConfigs' parameter:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is webpack, you will get a webpack configuration array."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is Rspack, you will get an Rspack configuration array."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["The configuration array can contain one or more configurations, depending on the current ",(0,r.jsx)(n.code,{children:"target"})," config of Builder."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnBeforeBuild(\n callback: (params: {\n bundlerConfigs?: WebpackConfig[] | RspackConfig[];\n }) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onBeforeBuild(({ bundlerConfigs }) => {\n console.log('the bundler config is ', bundlerConfigs);\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"onafterbuild",children:["onAfterBuild",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onafterbuild",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"onAfterBuild"})," is a callback function that is triggered after running the production build. You can access the build result information via the `stats' parameter:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is webpack, you will get webpack Stats."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If the current bundler is Rspack, you will get Rspack Stats."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnAfterBuild(\n callback: (params: { stats?: Stats | MultiStats }) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onAfterBuild(({ stats }) => {\n console.log(stats?.toJson());\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h2,{id:"dev-server-hooks",children:["Dev Server Hooks",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#dev-server-hooks",children:"#"})]}),"\n",(0,r.jsxs)(n.h3,{id:"onbeforestartdevserver",children:["onBeforeStartDevServer",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onbeforestartdevserver",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Called before starting the development server."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnBeforeStartDevServer(callback: () => Promise | void): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onBeforeStartDevServer(() => {\n console.log('before start!');\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"onafterstartdevserver",children:["onAfterStartDevServer",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onafterstartdevserver",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:["Called after starting the development server, you can get the port number through the ",(0,r.jsx)(n.code,{children:"port"})," parameter."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnAfterStartDevServer(\n callback: (params: { port: number }) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onAfterStartDevServer(({ port }) => {\n console.log('this port is: ', port);\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h3,{id:"ondevcompiledone",children:["onDevCompileDone",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#ondevcompiledone",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:["Called after each development environment build, you can use ",(0,r.jsx)(n.code,{children:"isFirstCompile"})," to determine whether it is the first build."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnDevCompileDone(\n callback: (params: { isFirstCompile: boolean }) => Promise | void,\n): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onDevCompileDone(({ isFirstCompile }) => {\n if (isFirstCompile) {\n console.log('first compile!');\n } else {\n console.log('re-compile!');\n }\n });\n },\n});\n"})}),"\n",(0,r.jsxs)(n.h2,{id:"other-hooks",children:["Other Hooks",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#other-hooks",children:"#"})]}),"\n",(0,r.jsxs)(n.h3,{id:"onexit",children:["onExit",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#onexit",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Called when the process is going to exit, this hook can only execute synchronous code."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Type"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"function OnExit(callback: () => void): void;\n"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Example"})}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"export default () => ({\n setup: api => {\n api.onExit(() => {\n console.log('exit!');\n });\n },\n});\n"})})]})}function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:n}=Object.assign({},(0,o.useMDXComponents)(),e.components);return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}n.default=s,s.__RSPRESS_PAGE_META={},s.__RSPRESS_PAGE_META["en%2Fapi%2Fplugin-hooks.mdx"]={toc:[{text:"Overview",id:"overview",depth:2},{text:"Common Hooks",id:"common-hooks",depth:2},{text:"modifyBuilderConfig",id:"modifybuilderconfig",depth:3},{text:"modifyBundlerChain `experimental`",id:"modifybundlerchain-experimental",depth:3},{text:"modifyWebpackChain",id:"modifywebpackchain",depth:3},{text:"modifyWebpackConfig",id:"modifywebpackconfig",depth:3},{text:"modifyRspackConfig",id:"modifyrspackconfig",depth:3},{text:"onBeforeCreateCompiler",id:"onbeforecreatecompiler",depth:3},{text:"onAfterCreateCompiler",id:"onaftercreatecompiler",depth:3},{text:"Build Hooks",id:"build-hooks",depth:2},{text:"onBeforeBuild",id:"onbeforebuild",depth:3},{text:"onAfterBuild",id:"onafterbuild",depth:3},{text:"Dev Server Hooks",id:"dev-server-hooks",depth:2},{text:"onBeforeStartDevServer",id:"onbeforestartdevserver",depth:3},{text:"onAfterStartDevServer",id:"onafterstartdevserver",depth:3},{text:"onDevCompileDone",id:"ondevcompiledone",depth:3},{text:"Other Hooks",id:"other-hooks",depth:2},{text:"onExit",id:"onexit",depth:3}],title:"Plugin Hooks",frontmatter:{extractApiHeaders:[2]}}}}]); \ No newline at end of file diff --git a/modern-js/builder/static/js/async/1052.8025e95e.js.LICENSE.txt b/modern-js/builder/static/js/async/1047.9e35d86c.js.LICENSE.txt similarity index 100% rename from modern-js/builder/static/js/async/1052.8025e95e.js.LICENSE.txt rename to modern-js/builder/static/js/async/1047.9e35d86c.js.LICENSE.txt diff --git a/modern-js/builder/static/js/async/1052.8025e95e.js b/modern-js/builder/static/js/async/1052.8025e95e.js deleted file mode 100644 index 465609d0e9..0000000000 --- a/modern-js/builder/static/js/async/1052.8025e95e.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 1052.8025e95e.js.LICENSE.txt */ -(self.webpackChunk_modern_js_builder_doc=self.webpackChunk_modern_js_builder_doc||[]).push([["1052"],{42153:function(e,r,n){"use strict";n.r(r);var i=n("39980"),o=n("96954");function d(e){let r=Object.assign({h1:"h1",a:"a",h3:"h3",p:"p",hr:"hr",blockquote:"blockquote"},(0,o.useMDXComponents)(),e.components);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(r.h1,{id:"general-faq",children:["General FAQ",(0,i.jsx)(r.a,{className:"header-anchor","aria-hidden":"true",href:"#general-faq",children:"#"})]}),"\n",(0,i.jsxs)(r.h3,{id:"the-relationship-between-modernjs-builder-and-modernjs",children:["The relationship between Modern.js Builder and Modern.js?",(0,i.jsx)(r.a,{className:"header-anchor","aria-hidden":"true",href:"#the-relationship-between-modernjs-builder-and-modernjs",children:"#"})]}),"\n",(0,i.jsx)(r.p,{children:"The building abilities of Modern.js are based on Modern.js Builder."}),"\n",(0,i.jsx)(r.p,{children:"When developing Modern.js, we designed Builder as an independent module, and clearly divided the responsibilities of Builder and Modern.js. Therefore, Builder can be used independently of the Modern.js framework and be applied to other frameworks or scenarios."}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsxs)(r.h3,{id:"can-builder-be-used-to-build-libraries-or-ui-components",children:["Can Builder be used to build libraries or UI components?",(0,i.jsx)(r.a,{className:"header-anchor","aria-hidden":"true",href:"#can-builder-be-used-to-build-libraries-or-ui-components",children:"#"})]}),"\n",(0,i.jsx)(r.p,{children:"Builder focuses on solving web application building scenarios. We do not recommend that you use Builder to build libraries or UI components."}),"\n",(0,i.jsxs)(r.p,{children:["If you need to build a library or UI components, it is recommended to use the ",(0,i.jsx)(r.a,{href:"https://modernjs.dev/module-tools/en",target:"_blank",rel:"noopener noreferrer",children:"Modern.js Module"}),"."]}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsxs)(r.h3,{id:"will-builder-support-turbopack",children:["Will Builder support Turbopack?",(0,i.jsx)(r.a,{className:"header-anchor","aria-hidden":"true",href:"#will-builder-support-turbopack",children:"#"})]}),"\n",(0,i.jsxs)(r.p,{children:["Builder is already supporting Rspack, and currently Turbopack supports use in Next.js, so there is no plan for Builder to support ",(0,i.jsx)(r.a,{href:"https://turbo.build/pack",target:"_blank",rel:"noopener noreferrer",children:"Turbopack"}),"."]}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:["You can find the comparison of Rspack and Turbopack in the ",(0,i.jsx)(r.a,{href:"https://www.rspack.dev/guide/introduction.html",target:"_blank",rel:"noopener noreferrer",children:"Introduction"})," of Rspack."]}),"\n"]}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsxs)(r.h3,{id:"will-builder-support-vite",children:["Will Builder support Vite?",(0,i.jsx)(r.a,{className:"header-anchor","aria-hidden":"true",href:"#will-builder-support-vite",children:"#"})]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.a,{href:"https://vitejs.dev/",target:"_blank",rel:"noopener noreferrer",children:"Vite"})," is a great tool, but the goal of Builder is to replace webpack with Rust Bundler, Rspack can provide fast compilation speed, while maintaining the consistent behavior between development and production."]}),"\n",(0,i.jsx)(r.p,{children:"Builder will focus on the evolution from webpack to Rspack, so it will not be support Vite."}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:["You can find the comparison of Vite and Turbopack in the ",(0,i.jsx)(r.a,{href:"https://www.rspack.dev/guide/introduction.html",target:"_blank",rel:"noopener noreferrer",children:"Introduction"})," of Rspack."]}),"\n"]})]})}function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:r}=Object.assign({},(0,o.useMDXComponents)(),e.components);return r?(0,i.jsx)(r,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}r.default=s,s.__RSPRESS_PAGE_META={},s.__RSPRESS_PAGE_META["en%2Fguide%2Ffaq%2Fgeneral.md"]={toc:[{text:"The relationship between Modern.js Builder and Modern.js?",id:"the-relationship-between-modernjs-builder-and-modernjs",depth:3},{text:"Can Builder be used to build libraries or UI components?",id:"can-builder-be-used-to-build-libraries-or-ui-components",depth:3},{text:"Will Builder support Turbopack?",id:"will-builder-support-turbopack",depth:3},{text:"Will Builder support Vite?",id:"will-builder-support-vite",depth:3}],title:"General FAQ",frontmatter:{}}}}]); \ No newline at end of file diff --git a/modern-js/builder/static/js/async/12.88db1204.js b/modern-js/builder/static/js/async/12.88db1204.js new file mode 100644 index 0000000000..821885f0ac --- /dev/null +++ b/modern-js/builder/static/js/async/12.88db1204.js @@ -0,0 +1,2 @@ +/*! For license information please see 12.88db1204.js.LICENSE.txt */ +(self.webpackChunk_modern_js_builder_doc=self.webpackChunk_modern_js_builder_doc||[]).push([["12"],{92989:function(e,r,n){"use strict";n.r(r);var s=n("39980"),d=n("96954");function l(e){let r=Object.assign({h1:"h1",a:"a",p:"p",h2:"h2",ul:"ul",li:"li",strong:"strong",code:"code",h3:"h3",pre:"pre",h4:"h4",div:"div"},(0,d.useMDXComponents)(),e.components);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.h1,{id:"dev-config",children:["Dev Config",(0,s.jsx)(r.a,{className:"header-anchor","aria-hidden":"true",href:"#dev-config",children:"#"})]}),"\n",(0,s.jsx)(r.p,{children:"\u672C\u7AE0\u8282\u63CF\u8FF0\u4E86 Builder \u4E2D\u4E0E\u672C\u5730\u5F00\u53D1\u6709\u5173\u7684\u914D\u7F6E\u3002"}),"\n",(0,s.jsxs)(r.h2,{id:"devassetprefix",children:["dev.assetPrefix",(0,s.jsx)(r.a,{className:"header-anchor","aria-hidden":"true",href:"#devassetprefix",children:"#"})]}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.strong,{children:"\u7C7B\u578B\uFF1A"})," ",(0,s.jsx)(r.code,{children:"boolean | string"})]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.strong,{children:"\u9ED8\u8BA4\u503C\uFF1A"})," ",(0,s.jsx)(r.code,{children:"'/'"})]}),"\n"]}),"\n",(0,s.jsx)(r.p,{children:"\u8BBE\u7F6E\u5F00\u53D1\u73AF\u5883\u4E0B\u7684\u9759\u6001\u8D44\u6E90 URL \u524D\u7F00\u3002"}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.code,{children:"assetPrefix"})," \u4F1A\u5F71\u54CD\u6784\u5EFA\u4EA7\u7269\u4E2D\u7EDD\u5927\u90E8\u5206\u9759\u6001\u8D44\u6E90\u7684 URL\uFF0C\u5305\u62EC JavaScript \u6587\u4EF6\u3001CSS \u6587\u4EF6\u3001\u56FE\u7247\u3001\u89C6\u9891\u7B49\u3002\u5982\u679C\u6307\u5B9A\u4E86\u4E00\u4E2A\u9519\u8BEF\u7684\u503C\uFF0C\u5219\u5728\u52A0\u8F7D\u8FD9\u4E9B\u8D44\u6E90\u65F6\u53EF\u80FD\u4F1A\u51FA\u73B0 404 \u9519\u8BEF\u3002"]}),"\n",(0,s.jsxs)(r.p,{children:["\u8BE5\u914D\u7F6E\u9879\u4EC5\u7528\u4E8E\u5F00\u53D1\u73AF\u5883\u3002\u5728\u751F\u4EA7\u73AF\u5883\u4E0B\uFF0C\u8BF7\u4F7F\u7528 ",(0,s.jsx)(r.code,{children:"output.assetPrefix"})," \u914D\u7F6E\u9879\u8FDB\u884C\u8BBE\u7F6E\u3002"]}),"\n",(0,s.jsxs)(r.h3,{id:"boolean-\u7C7B\u578B",children:["Boolean \u7C7B\u578B",(0,s.jsx)(r.a,{className:"header-anchor","aria-hidden":"true",href:"#boolean-\u7C7B\u578B",children:"#"})]}),"\n",(0,s.jsxs)(r.p,{children:["\u5982\u679C\u8BBE\u7F6E ",(0,s.jsx)(r.code,{children:"assetPrefix"})," \u4E3A ",(0,s.jsx)(r.code,{children:"true"}),"\uFF0CBuilder \u4F1A\u4F7F\u7528 ",(0,s.jsx)(r.code,{children:"http://localhost:port/"})," \u4F5C\u4E3A URL \u524D\u7F00\uFF1A"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-js",children:"export default {\n dev: {\n assetPrefix: true,\n },\n};\n"})}),"\n",(0,s.jsx)(r.p,{children:"\u5BF9\u5E94 JS \u6587\u4EF6\u5728\u6D4F\u89C8\u5668\u4E2D\u52A0\u8F7D\u7684\u5730\u5740\u5982\u4E0B\uFF1A"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-js",children:'