@modern-js/app-tools 3.6.0 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/modern-bundle-docs.js +7 -0
- package/dist/cjs/builder/generator/createBuilderProviderConfig.js +5 -1
- package/dist/cjs/bundleDocs.js +114 -0
- package/dist/cjs/commands/build.js +2 -1
- package/dist/cjs/commands/deploy.js +4 -2
- package/dist/cjs/commands/index.js +0 -4
- package/dist/cjs/config/default.js +2 -0
- package/dist/cjs/index.js +52 -14
- package/dist/cjs/plugins/analyze/index.js +2 -2
- package/dist/cjs/plugins/analyze/utils.js +3 -2
- package/dist/cjs/plugins/initialize/index.js +4 -3
- package/dist/cjs/plugins/serverBuild.js +3 -2
- package/dist/esm/builder/generator/createBuilderProviderConfig.mjs +5 -1
- package/dist/esm/bundleDocs.mjs +62 -0
- package/dist/esm/commands/build.mjs +2 -1
- package/dist/esm/commands/deploy.mjs +4 -2
- package/dist/esm/commands/index.mjs +0 -4
- package/dist/esm/config/default.mjs +2 -0
- package/dist/esm/index.mjs +15 -1
- package/dist/esm/plugins/analyze/index.mjs +2 -2
- package/dist/esm/plugins/analyze/utils.mjs +3 -2
- package/dist/esm/plugins/initialize/index.mjs +4 -3
- package/dist/esm/plugins/serverBuild.mjs +3 -2
- package/dist/esm-node/builder/generator/createBuilderProviderConfig.mjs +5 -1
- package/dist/esm-node/bundleDocs.mjs +63 -0
- package/dist/esm-node/commands/build.mjs +2 -1
- package/dist/esm-node/commands/deploy.mjs +4 -2
- package/dist/esm-node/commands/index.mjs +0 -4
- package/dist/esm-node/config/default.mjs +2 -0
- package/dist/esm-node/index.mjs +15 -1
- package/dist/esm-node/plugins/analyze/index.mjs +2 -2
- package/dist/esm-node/plugins/analyze/utils.mjs +3 -2
- package/dist/esm-node/plugins/initialize/index.mjs +4 -3
- package/dist/esm-node/plugins/serverBuild.mjs +3 -2
- package/dist/types/bundleDocs.d.ts +20 -0
- package/dist/types/commands/deploy.d.ts +2 -1
- package/dist/types/index.d.ts +4 -1
- package/dist/types/plugins/analyze/utils.d.ts +1 -1
- package/dist/types/types/config/dev.d.ts +6 -0
- package/docs/apis/app/commands.md +241 -0
- package/docs/apis/app/hooks/api/lambda.md +9 -0
- package/docs/apis/app/hooks/config/favicon.md +24 -0
- package/docs/apis/app/hooks/config/html.md +5 -0
- package/docs/apis/app/hooks/config/icon.md +24 -0
- package/docs/apis/app/hooks/config/mock.md +6 -0
- package/docs/apis/app/hooks/config/public.md +26 -0
- package/docs/apis/app/hooks/config/upload.md +50 -0
- package/docs/apis/app/hooks/modern-config.md +5 -0
- package/docs/apis/app/hooks/server/server.md +5 -0
- package/docs/apis/app/hooks/shared.md +3 -0
- package/docs/apis/app/hooks/src/app.md +30 -0
- package/docs/apis/app/hooks/src/entry.md +34 -0
- package/docs/apis/app/hooks/src/entry.server.md +51 -0
- package/docs/apis/app/hooks/src/modern.runtime.md +5 -0
- package/docs/apis/app/hooks/src/routes.md +86 -0
- package/docs/apis/app/hooks/src/server.md +3 -0
- package/docs/apis/app/runtime/bff/use-hono-context.md +27 -0
- package/docs/apis/app/runtime/core/create-root.md +19 -0
- package/docs/apis/app/runtime/core/render.md +39 -0
- package/docs/apis/app/runtime/core/runtime-context.md +156 -0
- package/docs/apis/app/runtime/router/router.md +280 -0
- package/docs/apis/app/runtime/ssr/no-ssr.md +35 -0
- package/docs/apis/app/runtime/ssr/renderStreaming.md +67 -0
- package/docs/apis/app/runtime/ssr/renderString.md +60 -0
- package/docs/apis/app/runtime/ssr/requestHandler.md +44 -0
- package/docs/apis/app/runtime/utility/css-in-js.md +40 -0
- package/docs/apis/app/runtime/utility/head.md +35 -0
- package/docs/apis/app/runtime/utility/loadable.md +82 -0
- package/docs/community/blog/2022-0708-updates.md +91 -0
- package/docs/community/blog/2022-0910-updates.md +76 -0
- package/docs/community/blog/overview.md +63 -0
- package/docs/community/blog/v2-release-note.md +238 -0
- package/docs/community/blog/v3-release-note.md +622 -0
- package/docs/community/contributing-guide.md +253 -0
- package/docs/community/releases.md +27 -0
- package/docs/community/showcase.md +34 -0
- package/docs/community/team.md +14 -0
- package/docs/configure/app/bff/cross-project.md +20 -0
- package/docs/configure/app/bff/prefix.md +29 -0
- package/docs/configure/app/builder-plugins.md +66 -0
- package/docs/configure/app/dev/asset-prefix.md +13 -0
- package/docs/configure/app/dev/before-start-url.md +17 -0
- package/docs/configure/app/dev/client.md +41 -0
- package/docs/configure/app/dev/hmr.md +10 -0
- package/docs/configure/app/dev/host.md +18 -0
- package/docs/configure/app/dev/https.md +77 -0
- package/docs/configure/app/dev/lazy-compilation.md +39 -0
- package/docs/configure/app/dev/live-reload.md +10 -0
- package/docs/configure/app/dev/mock-dir.md +31 -0
- package/docs/configure/app/dev/progress-bar.md +19 -0
- package/docs/configure/app/dev/server.md +124 -0
- package/docs/configure/app/dev/setup-middlewares.md +32 -0
- package/docs/configure/app/dev/start-url.md +48 -0
- package/docs/configure/app/dev/watch-files.md +27 -0
- package/docs/configure/app/dev/write-to-disk.md +10 -0
- package/docs/configure/app/experiments/source-build.md +31 -0
- package/docs/configure/app/html/app-icon.md +28 -0
- package/docs/configure/app/html/crossorigin.md +10 -0
- package/docs/configure/app/html/favicon.md +16 -0
- package/docs/configure/app/html/inject.md +10 -0
- package/docs/configure/app/html/meta.md +24 -0
- package/docs/configure/app/html/mount-id.md +10 -0
- package/docs/configure/app/html/output-structure.md +10 -0
- package/docs/configure/app/html/script-loading.md +10 -0
- package/docs/configure/app/html/tags.md +15 -0
- package/docs/configure/app/html/template-parameters.md +33 -0
- package/docs/configure/app/html/template.md +10 -0
- package/docs/configure/app/html/title.md +18 -0
- package/docs/configure/app/output/asset-prefix.md +11 -0
- package/docs/configure/app/output/assets-retry.md +77 -0
- package/docs/configure/app/output/charset.md +10 -0
- package/docs/configure/app/output/clean-dist-path.md +16 -0
- package/docs/configure/app/output/convert-to-rem.md +79 -0
- package/docs/configure/app/output/copy.md +10 -0
- package/docs/configure/app/output/css-modules.md +48 -0
- package/docs/configure/app/output/data-uri-limit.md +26 -0
- package/docs/configure/app/output/disable-css-module-extension.md +55 -0
- package/docs/configure/app/output/disable-inline-runtime-chunk.md +41 -0
- package/docs/configure/app/output/disable-svgr.md +16 -0
- package/docs/configure/app/output/disable-ts-checker.md +49 -0
- package/docs/configure/app/output/dist-path.md +43 -0
- package/docs/configure/app/output/enable-asset-manifest.md +36 -0
- package/docs/configure/app/output/enable-css-module-tsdeclaration.md +28 -0
- package/docs/configure/app/output/enable-inline-route-manifests.md +16 -0
- package/docs/configure/app/output/externals.md +20 -0
- package/docs/configure/app/output/filename-hash.md +10 -0
- package/docs/configure/app/output/filename.md +55 -0
- package/docs/configure/app/output/inject-styles.md +10 -0
- package/docs/configure/app/output/inline-scripts.md +29 -0
- package/docs/configure/app/output/inline-styles.md +29 -0
- package/docs/configure/app/output/legal-comments.md +18 -0
- package/docs/configure/app/output/minify.md +22 -0
- package/docs/configure/app/output/override-browserslist.md +22 -0
- package/docs/configure/app/output/polyfill.md +12 -0
- package/docs/configure/app/output/source-map.md +30 -0
- package/docs/configure/app/output/split-route-chunks.md +16 -0
- package/docs/configure/app/output/ssg.md +81 -0
- package/docs/configure/app/output/ssgByEntries.md +90 -0
- package/docs/configure/app/output/svg-default-export.md +30 -0
- package/docs/configure/app/output/temp-dir.md +20 -0
- package/docs/configure/app/performance/build-cache.md +39 -0
- package/docs/configure/app/performance/chunk-split.md +40 -0
- package/docs/configure/app/performance/dns-prefetch.md +15 -0
- package/docs/configure/app/performance/preconnect.md +16 -0
- package/docs/configure/app/performance/prefetch.md +21 -0
- package/docs/configure/app/performance/preload.md +23 -0
- package/docs/configure/app/performance/print-file-size.md +40 -0
- package/docs/configure/app/performance/profile.md +10 -0
- package/docs/configure/app/performance/remove-console.md +10 -0
- package/docs/configure/app/performance/remove-moment-locale.md +10 -0
- package/docs/configure/app/plugins.md +59 -0
- package/docs/configure/app/resolve/alias-strategy.md +10 -0
- package/docs/configure/app/resolve/alias.md +9 -0
- package/docs/configure/app/resolve/condition-names.md +13 -0
- package/docs/configure/app/resolve/dedupe.md +9 -0
- package/docs/configure/app/resolve/extensions.md +13 -0
- package/docs/configure/app/runtime/0-intro.md +58 -0
- package/docs/configure/app/runtime/plugins.md +58 -0
- package/docs/configure/app/runtime/router.md +35 -0
- package/docs/configure/app/security/check-syntax.md +69 -0
- package/docs/configure/app/security/nonce.md +15 -0
- package/docs/configure/app/security/sri.md +20 -0
- package/docs/configure/app/server/base-url.md +26 -0
- package/docs/configure/app/server/port.md +18 -0
- package/docs/configure/app/server/public-routes.md +22 -0
- package/docs/configure/app/server/routes.md +86 -0
- package/docs/configure/app/server/rsc.md +26 -0
- package/docs/configure/app/server/ssr-by-entries.md +25 -0
- package/docs/configure/app/server/ssr.md +78 -0
- package/docs/configure/app/server/tsconfig-path.md +59 -0
- package/docs/configure/app/source/alias-strategy.md +14 -0
- package/docs/configure/app/source/alias.md +23 -0
- package/docs/configure/app/source/config-dir.md +20 -0
- package/docs/configure/app/source/decorators.md +25 -0
- package/docs/configure/app/source/define.md +16 -0
- package/docs/configure/app/source/disable-default-entries.md +28 -0
- package/docs/configure/app/source/enable-async-entry.md +54 -0
- package/docs/configure/app/source/enable-async-pre-entry.md +26 -0
- package/docs/configure/app/source/entries-dir.md +35 -0
- package/docs/configure/app/source/entries.md +179 -0
- package/docs/configure/app/source/exclude.md +10 -0
- package/docs/configure/app/source/global-vars.md +106 -0
- package/docs/configure/app/source/include.md +36 -0
- package/docs/configure/app/source/main-entry-name.md +24 -0
- package/docs/configure/app/source/pre-entry.md +10 -0
- package/docs/configure/app/source/react-compiler.md +68 -0
- package/docs/configure/app/source/transform-import.md +27 -0
- package/docs/configure/app/split-chunks.md +17 -0
- package/docs/configure/app/tools/autoprefixer.md +44 -0
- package/docs/configure/app/tools/bundler-chain.md +26 -0
- package/docs/configure/app/tools/css-extract.md +33 -0
- package/docs/configure/app/tools/css-loader.md +17 -0
- package/docs/configure/app/tools/dev-server.md +113 -0
- package/docs/configure/app/tools/html-plugin.md +41 -0
- package/docs/configure/app/tools/less.md +81 -0
- package/docs/configure/app/tools/lightningcss-loader.md +35 -0
- package/docs/configure/app/tools/minify-css.md +53 -0
- package/docs/configure/app/tools/postcss.md +34 -0
- package/docs/configure/app/tools/rspack.md +10 -0
- package/docs/configure/app/tools/sass.md +78 -0
- package/docs/configure/app/tools/style-loader.md +10 -0
- package/docs/configure/app/tools/swc.md +65 -0
- package/docs/configure/app/tools/ts-checker.md +109 -0
- package/docs/configure/app/usage.md +276 -0
- package/docs/guides/advanced-features/bff/cross-project.md +109 -0
- package/docs/guides/advanced-features/bff/extend-server.md +120 -0
- package/docs/guides/advanced-features/bff/frameworks.md +124 -0
- package/docs/guides/advanced-features/bff/function.md +314 -0
- package/docs/guides/advanced-features/bff/operators.md +554 -0
- package/docs/guides/advanced-features/bff/sdk.md +116 -0
- package/docs/guides/advanced-features/bff/upload.md +101 -0
- package/docs/guides/advanced-features/bff.md +18 -0
- package/docs/guides/advanced-features/build-performance.md +130 -0
- package/docs/guides/advanced-features/compatibility.md +120 -0
- package/docs/guides/advanced-features/international/advanced.md +128 -0
- package/docs/guides/advanced-features/international/api.md +231 -0
- package/docs/guides/advanced-features/international/best-practices.md +286 -0
- package/docs/guides/advanced-features/international/configuration.md +227 -0
- package/docs/guides/advanced-features/international/locale-detection.md +126 -0
- package/docs/guides/advanced-features/international/quick-start.md +128 -0
- package/docs/guides/advanced-features/international/resource-loading.md +154 -0
- package/docs/guides/advanced-features/international/routing.md +130 -0
- package/docs/guides/advanced-features/international.md +27 -0
- package/docs/guides/advanced-features/low-level.md +46 -0
- package/docs/guides/advanced-features/page-performance/code-split.md +77 -0
- package/docs/guides/advanced-features/page-performance/inline-assets.md +159 -0
- package/docs/guides/advanced-features/page-performance/optimize-bundle.md +97 -0
- package/docs/guides/advanced-features/page-performance/react-compiler.md +69 -0
- package/docs/guides/advanced-features/server-monitor/logger.md +41 -0
- package/docs/guides/advanced-features/server-monitor/metrics.md +58 -0
- package/docs/guides/advanced-features/server-monitor/monitors.md +242 -0
- package/docs/guides/advanced-features/source-build.md +164 -0
- package/docs/guides/advanced-features/web-server.md +288 -0
- package/docs/guides/basic-features/alias.md +102 -0
- package/docs/guides/basic-features/css/css-in-js.md +72 -0
- package/docs/guides/basic-features/css/css-modules.md +212 -0
- package/docs/guides/basic-features/css/css.md +27 -0
- package/docs/guides/basic-features/css/tailwindcss.md +27 -0
- package/docs/guides/basic-features/data/data-cache.md +510 -0
- package/docs/guides/basic-features/data/data-fetch.md +415 -0
- package/docs/guides/basic-features/data/data-write.md +227 -0
- package/docs/guides/basic-features/debug/mock.md +109 -0
- package/docs/guides/basic-features/debug/proxy.md +21 -0
- package/docs/guides/basic-features/debug/rsdoctor.md +62 -0
- package/docs/guides/basic-features/debug/using-storybook.md +112 -0
- package/docs/guides/basic-features/deploy.md +458 -0
- package/docs/guides/basic-features/env-vars.md +177 -0
- package/docs/guides/basic-features/html.md +255 -0
- package/docs/guides/basic-features/output-files.md +141 -0
- package/docs/guides/basic-features/render/before-render.md +108 -0
- package/docs/guides/basic-features/render/overview.md +47 -0
- package/docs/guides/basic-features/render/rsc.md +525 -0
- package/docs/guides/basic-features/render/ssg.md +228 -0
- package/docs/guides/basic-features/render/ssr-cache.md +201 -0
- package/docs/guides/basic-features/render/ssr.md +321 -0
- package/docs/guides/basic-features/render/streaming-ssr.md +264 -0
- package/docs/guides/basic-features/routes/config-routes.md +426 -0
- package/docs/guides/basic-features/routes/routes.md +498 -0
- package/docs/guides/basic-features/static-assets/json-files.md +120 -0
- package/docs/guides/basic-features/static-assets/svg-assets.md +168 -0
- package/docs/guides/basic-features/static-assets/wasm-assets.md +62 -0
- package/docs/guides/basic-features/static-assets.md +160 -0
- package/docs/guides/basic-features/testing/playwright.md +120 -0
- package/docs/guides/basic-features/testing/rstest.md +251 -0
- package/docs/guides/concept/builder.md +37 -0
- package/docs/guides/concept/entries.md +319 -0
- package/docs/guides/concept/server.md +35 -0
- package/docs/guides/get-started/ai-coding-agents.md +58 -0
- package/docs/guides/get-started/glossary.md +63 -0
- package/docs/guides/get-started/introduction.md +36 -0
- package/docs/guides/get-started/quick-start.md +236 -0
- package/docs/guides/get-started/tech-stack.md +82 -0
- package/docs/guides/get-started/upgrade.md +123 -0
- package/docs/guides/topic-detail/module-federation/application.md +116 -0
- package/docs/guides/topic-detail/module-federation/deploy.md +104 -0
- package/docs/guides/topic-detail/module-federation/i18n.md +670 -0
- package/docs/guides/topic-detail/module-federation/introduce.md +35 -0
- package/docs/guides/topic-detail/module-federation/ssr.md +118 -0
- package/docs/guides/topic-detail/module-federation/usage.md +219 -0
- package/docs/guides/troubleshooting/builder.md +110 -0
- package/docs/guides/troubleshooting/cli.md +35 -0
- package/docs/guides/troubleshooting/dependencies.md +119 -0
- package/docs/guides/troubleshooting/hmr.md +144 -0
- package/docs/guides/upgrade/config.md +963 -0
- package/docs/guides/upgrade/entry.md +463 -0
- package/docs/guides/upgrade/other.md +183 -0
- package/docs/guides/upgrade/overview.md +33 -0
- package/docs/guides/upgrade/tailwindcss.md +91 -0
- package/docs/guides/upgrade/web-server.md +109 -0
- package/docs/index.md +33 -0
- package/docs/llms.txt +285 -0
- package/docs/plugin/cli-plugins/api.md +573 -0
- package/docs/plugin/cli-plugins/life-cycle.md +2 -0
- package/docs/plugin/introduction.md +152 -0
- package/docs/plugin/official/cli-plugins/plugin-bff.md +5 -0
- package/docs/plugin/official/cli-plugins/plugin-ssg.md +5 -0
- package/docs/plugin/official/cli-plugins/plugin-styled-components.md +5 -0
- package/docs/plugin/official/cli-plugins.md +4 -0
- package/docs/plugin/plugin-system.md +238 -0
- package/docs/plugin/runtime-plugins/api.md +194 -0
- package/docs/plugin/runtime-plugins/life-cycle.md +2 -0
- package/docs/plugin/server-plugins/api.md +209 -0
- package/docs/plugin/server-plugins/life-cycle.md +13 -0
- package/docs/tutorials/examples/csr-auth.md +9 -0
- package/docs/tutorials/foundations/introduction.md +16 -0
- package/package.json +48 -15
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// The CLI body lives in the compiled ESM output; a CommonJS shim keeps the
|
|
3
|
+
// shebang and stays executable on any Node without a loader.
|
|
4
|
+
const path = require('path');
|
|
5
|
+
import('../dist/esm-node/bundleDocs.mjs').then(m =>
|
|
6
|
+
m.runBundleDocsCli(path.resolve(__dirname, '..')),
|
|
7
|
+
);
|
|
@@ -46,6 +46,10 @@ function modifyOutputConfig(config, appContext) {
|
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
function createBuilderProviderConfig(resolveConfig, appContext) {
|
|
49
|
+
const builderDevConfig = {
|
|
50
|
+
...resolveConfig.dev
|
|
51
|
+
};
|
|
52
|
+
delete builderDevConfig.mockDir;
|
|
49
53
|
const htmlConfig = {
|
|
50
54
|
...resolveConfig.html
|
|
51
55
|
};
|
|
@@ -64,7 +68,7 @@ function createBuilderProviderConfig(resolveConfig, appContext) {
|
|
|
64
68
|
...resolveConfig.source
|
|
65
69
|
},
|
|
66
70
|
dev: {
|
|
67
|
-
...
|
|
71
|
+
...builderDevConfig,
|
|
68
72
|
port: appContext.port
|
|
69
73
|
},
|
|
70
74
|
server: serverConfig,
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
(()=>{
|
|
25
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
26
|
+
})();
|
|
27
|
+
(()=>{
|
|
28
|
+
__webpack_require__.r = (exports1)=>{
|
|
29
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
30
|
+
value: 'Module'
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
33
|
+
value: true
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
37
|
+
var __webpack_exports__ = {};
|
|
38
|
+
__webpack_require__.r(__webpack_exports__);
|
|
39
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
40
|
+
bundleDocs: ()=>bundleDocs,
|
|
41
|
+
runBundleDocsCli: ()=>runBundleDocsCli
|
|
42
|
+
});
|
|
43
|
+
const external_node_fs_namespaceObject = require("node:fs");
|
|
44
|
+
var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
|
|
45
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
46
|
+
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
47
|
+
const DEFAULT_INDEX_FILE = 'llms.txt';
|
|
48
|
+
const DEFAULT_EXCLUDED_DIRS = [
|
|
49
|
+
'zh'
|
|
50
|
+
];
|
|
51
|
+
function bundleDocs({ source, target, indexFile = DEFAULT_INDEX_FILE, excludedDirs = DEFAULT_EXCLUDED_DIRS }) {
|
|
52
|
+
if (!external_node_fs_default().existsSync(source)) {
|
|
53
|
+
console.warn(`[bundle-docs] docs build output not found: ${source}`);
|
|
54
|
+
console.warn('[bundle-docs] skipping the bundled docs — build the docs site first if you need them');
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
57
|
+
external_node_fs_default().rmSync(target, {
|
|
58
|
+
recursive: true,
|
|
59
|
+
force: true
|
|
60
|
+
});
|
|
61
|
+
const isBundled = (rel)=>rel === indexFile || rel.endsWith('.md') && !excludedDirs.some((dir)=>rel.startsWith(`${dir}${external_node_path_default().sep}`));
|
|
62
|
+
let count = 0;
|
|
63
|
+
for (const entry of external_node_fs_default().readdirSync(source, {
|
|
64
|
+
recursive: true,
|
|
65
|
+
withFileTypes: true
|
|
66
|
+
})){
|
|
67
|
+
if (!entry.isFile()) continue;
|
|
68
|
+
const from = external_node_path_default().join(entry.parentPath ?? entry.path, entry.name);
|
|
69
|
+
const rel = external_node_path_default().relative(source, from);
|
|
70
|
+
if (!isBundled(rel)) continue;
|
|
71
|
+
const to = external_node_path_default().join(target, rel);
|
|
72
|
+
external_node_fs_default().mkdirSync(external_node_path_default().dirname(to), {
|
|
73
|
+
recursive: true
|
|
74
|
+
});
|
|
75
|
+
external_node_fs_default().copyFileSync(from, to);
|
|
76
|
+
count++;
|
|
77
|
+
}
|
|
78
|
+
if (0 === count) throw new Error(`[bundle-docs] no files copied from ${source}`);
|
|
79
|
+
return count;
|
|
80
|
+
}
|
|
81
|
+
function parseArgs(argv) {
|
|
82
|
+
const options = {};
|
|
83
|
+
for(let i = 0; i < argv.length; i += 2){
|
|
84
|
+
const key = argv[i]?.replace(/^--/, '');
|
|
85
|
+
const value = argv[i + 1];
|
|
86
|
+
if (key && value) options[key] = value;
|
|
87
|
+
}
|
|
88
|
+
return options;
|
|
89
|
+
}
|
|
90
|
+
function runBundleDocsCli(pkgRoot) {
|
|
91
|
+
const args = parseArgs(process.argv.slice(2));
|
|
92
|
+
const source = args.source ? external_node_path_default().resolve(process.cwd(), args.source) : external_node_path_default().resolve(pkgRoot, '../../document/doc_build');
|
|
93
|
+
const target = args.target ? external_node_path_default().resolve(process.cwd(), args.target) : external_node_path_default().resolve(pkgRoot, 'docs');
|
|
94
|
+
try {
|
|
95
|
+
const count = bundleDocs({
|
|
96
|
+
source,
|
|
97
|
+
target,
|
|
98
|
+
indexFile: args.index
|
|
99
|
+
});
|
|
100
|
+
if (count > 0) console.log(`[bundle-docs] bundled ${count} doc files into docs`);
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.error(error.message);
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.bundleDocs = __webpack_exports__.bundleDocs;
|
|
107
|
+
exports.runBundleDocsCli = __webpack_exports__.runBundleDocsCli;
|
|
108
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
109
|
+
"bundleDocs",
|
|
110
|
+
"runBundleDocsCli"
|
|
111
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
112
|
+
Object.defineProperty(exports, '__esModule', {
|
|
113
|
+
value: true
|
|
114
|
+
});
|
|
@@ -98,9 +98,10 @@ const build = async (api, options)=>{
|
|
|
98
98
|
utils_namespaceObject.logger.info('Starting production build...');
|
|
99
99
|
if (!appContext.builder) throw new Error('Expect the Builder to have been initialized, But the appContext.builder received `undefined`');
|
|
100
100
|
await appContext.builder.onAfterBuild(async ()=>copyEnvFiles(appContext.appDirectory, appContext.distDirectory));
|
|
101
|
-
await appContext.builder.build({
|
|
101
|
+
const buildResult = await appContext.builder.build({
|
|
102
102
|
watch: options?.watch
|
|
103
103
|
});
|
|
104
|
+
if (!options?.watch) await buildResult?.close();
|
|
104
105
|
};
|
|
105
106
|
exports.build = __webpack_exports__.build;
|
|
106
107
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
@@ -31,10 +31,12 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
31
|
deploy: ()=>deploy
|
|
32
32
|
});
|
|
33
33
|
const loadPlugins_js_namespaceObject = require("../utils/loadPlugins.js");
|
|
34
|
-
const
|
|
34
|
+
const external_build_js_namespaceObject = require("./build.js");
|
|
35
|
+
const deploy = async (api, options = {})=>{
|
|
35
36
|
const hooks = api.getHooks();
|
|
36
37
|
const { metaName } = api.getAppContext();
|
|
37
|
-
await (0, loadPlugins_js_namespaceObject.getServerPlugins)(api, metaName);
|
|
38
|
+
if (options.skipBuild) await (0, loadPlugins_js_namespaceObject.getServerPlugins)(api, metaName);
|
|
39
|
+
else await (0, external_build_js_namespaceObject.build)(api);
|
|
38
40
|
await hooks.onBeforeDeploy.call(options);
|
|
39
41
|
await hooks.deploy.call();
|
|
40
42
|
await hooks.onAfterDeploy.call(options);
|
|
@@ -56,10 +56,6 @@ const serverCommand = (program, api)=>{
|
|
|
56
56
|
};
|
|
57
57
|
const deployCommand = (program, api)=>{
|
|
58
58
|
program.command('deploy').usage('[options]').option('-c --config <config>', index_js_namespaceObject.i18n.t(index_js_namespaceObject.localeKeys.command.shared.config)).option('-s --skip-build', index_js_namespaceObject.i18n.t(index_js_namespaceObject.localeKeys.command.shared.skipBuild)).description(index_js_namespaceObject.i18n.t(index_js_namespaceObject.localeKeys.command.deploy.describe)).action(async (options)=>{
|
|
59
|
-
if (!options.skipBuild) {
|
|
60
|
-
const { build } = await import("./build.js");
|
|
61
|
-
await build(api);
|
|
62
|
-
}
|
|
63
59
|
const { deploy } = await import("./deploy.js");
|
|
64
60
|
await deploy(api, options);
|
|
65
61
|
process.exit(0);
|
|
@@ -31,10 +31,12 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
31
|
createDefaultConfig: ()=>createDefaultConfig,
|
|
32
32
|
isLazyCompilationSafeByDefault: ()=>isLazyCompilationSafeByDefault
|
|
33
33
|
});
|
|
34
|
+
const server_core_namespaceObject = require("@modern-js/server-core");
|
|
34
35
|
const utils_namespaceObject = require("@modern-js/utils");
|
|
35
36
|
const env_js_namespaceObject = require("../utils/env.js");
|
|
36
37
|
function createDefaultConfig(appContext) {
|
|
37
38
|
const dev = {
|
|
39
|
+
mockDir: `./${server_core_namespaceObject.AGGRED_DIR.mock}`,
|
|
38
40
|
cliShortcuts: {
|
|
39
41
|
help: false,
|
|
40
42
|
custom: (shortcuts = [])=>shortcuts.filter(({ key })=>'r' !== key && 'u' !== key && 'o' !== key)
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_modules__ = {
|
|
3
|
+
"./commands/build" (module) {
|
|
4
|
+
module.exports = require("./commands/build.js");
|
|
5
|
+
},
|
|
6
|
+
"./commands/deploy" (module) {
|
|
7
|
+
module.exports = require("./commands/deploy.js");
|
|
8
|
+
},
|
|
3
9
|
"./commands/dev" (module) {
|
|
4
10
|
module.exports = require("./commands/dev.js");
|
|
5
11
|
},
|
|
@@ -42,6 +48,9 @@ var __webpack_modules__ = {
|
|
|
42
48
|
"./types?6efa" (module) {
|
|
43
49
|
module.exports = require("./types/index.js");
|
|
44
50
|
},
|
|
51
|
+
"./utils/createServer" (module) {
|
|
52
|
+
module.exports = require("./utils/createServer.js");
|
|
53
|
+
},
|
|
45
54
|
"./utils/generateWatchFiles" (module) {
|
|
46
55
|
module.exports = require("./utils/generateWatchFiles.js");
|
|
47
56
|
},
|
|
@@ -151,15 +160,21 @@ var __webpack_exports__ = {};
|
|
|
151
160
|
"serve",
|
|
152
161
|
"generateWatchFiles",
|
|
153
162
|
"initAppContext",
|
|
154
|
-
"
|
|
163
|
+
"deploy",
|
|
164
|
+
"defineConfig",
|
|
165
|
+
"build",
|
|
166
|
+
"closeServer"
|
|
155
167
|
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_defineConfig__rspack_import_17[__rspack_import_key];
|
|
156
168
|
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
157
|
-
var
|
|
158
|
-
var
|
|
159
|
-
var
|
|
160
|
-
var
|
|
169
|
+
var _commands_build__rspack_import_18 = __webpack_require__("./commands/build");
|
|
170
|
+
var _commands_deploy__rspack_import_19 = __webpack_require__("./commands/deploy");
|
|
171
|
+
var _commands_dev__rspack_import_20 = __webpack_require__("./commands/dev");
|
|
172
|
+
var _commands_serve__rspack_import_21 = __webpack_require__("./commands/serve");
|
|
173
|
+
var _utils_createServer__rspack_import_22 = __webpack_require__("./utils/createServer");
|
|
174
|
+
var _rsbuild__rspack_import_23 = __webpack_require__("./rsbuild");
|
|
175
|
+
var _types__rspack_import_24 = __webpack_require__("./types?6efa");
|
|
161
176
|
var __rspack_reexport = {};
|
|
162
|
-
for(const __rspack_import_key in
|
|
177
|
+
for(const __rspack_import_key in _types__rspack_import_24)if ([
|
|
163
178
|
"dev",
|
|
164
179
|
"resolveModernRsbuildConfig",
|
|
165
180
|
"mergeConfig",
|
|
@@ -168,10 +183,13 @@ var __webpack_exports__ = {};
|
|
|
168
183
|
"serve",
|
|
169
184
|
"generateWatchFiles",
|
|
170
185
|
"initAppContext",
|
|
171
|
-
"
|
|
172
|
-
|
|
186
|
+
"deploy",
|
|
187
|
+
"defineConfig",
|
|
188
|
+
"build",
|
|
189
|
+
"closeServer"
|
|
190
|
+
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_types__rspack_import_24[__rspack_import_key];
|
|
173
191
|
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
174
|
-
var
|
|
192
|
+
var _modern_js_plugin_cli__rspack_import_25 = __webpack_require__("@modern-js/plugin/cli");
|
|
175
193
|
const appTools = ()=>({
|
|
176
194
|
name: '@modern-js/app-tools',
|
|
177
195
|
usePlugins: [
|
|
@@ -232,7 +250,18 @@ var __webpack_exports__ = {};
|
|
|
232
250
|
].some((tag)=>(0, _modern_js_utils__rspack_import_4.getArgv)().includes(tag));
|
|
233
251
|
if (isSkipBuild) return;
|
|
234
252
|
}
|
|
235
|
-
|
|
253
|
+
const { command: contextCommand } = api.getAppContext();
|
|
254
|
+
const shouldClean = [
|
|
255
|
+
'dev',
|
|
256
|
+
'start',
|
|
257
|
+
'build',
|
|
258
|
+
'deploy'
|
|
259
|
+
].includes(command) || [
|
|
260
|
+
'dev',
|
|
261
|
+
'start',
|
|
262
|
+
'build'
|
|
263
|
+
].includes(contextCommand);
|
|
264
|
+
if (shouldClean) {
|
|
236
265
|
const resolvedConfig = api.getNormalizedConfig();
|
|
237
266
|
if (resolvedConfig.output.cleanDistPath) {
|
|
238
267
|
const appContext = api.getAppContext();
|
|
@@ -272,21 +301,27 @@ var __webpack_exports__ = {};
|
|
|
272
301
|
});
|
|
273
302
|
const __rspack_default_export = appTools;
|
|
274
303
|
__webpack_require__.d(__webpack_exports__, {
|
|
304
|
+
build: ()=>_commands_build__rspack_import_18.build,
|
|
305
|
+
closeServer: ()=>_utils_createServer__rspack_import_22.closeServer,
|
|
275
306
|
defineConfig: ()=>_defineConfig__rspack_import_17.defineConfig,
|
|
276
|
-
|
|
307
|
+
deploy: ()=>_commands_deploy__rspack_import_19.deploy,
|
|
308
|
+
dev: ()=>_commands_dev__rspack_import_20.dev,
|
|
277
309
|
generateWatchFiles: ()=>_utils_generateWatchFiles__rspack_import_14.generateWatchFiles,
|
|
278
310
|
initAppContext: ()=>_utils_initAppContext__rspack_import_15.initAppContext,
|
|
279
|
-
mergeConfig: ()=>
|
|
280
|
-
resolveModernRsbuildConfig: ()=>
|
|
281
|
-
serve: ()=>
|
|
311
|
+
mergeConfig: ()=>_modern_js_plugin_cli__rspack_import_25.mergeConfig,
|
|
312
|
+
resolveModernRsbuildConfig: ()=>_rsbuild__rspack_import_23.resolveModernRsbuildConfig,
|
|
313
|
+
serve: ()=>_commands_serve__rspack_import_21.serve
|
|
282
314
|
}, {
|
|
283
315
|
appTools: appTools,
|
|
284
316
|
default: __rspack_default_export
|
|
285
317
|
});
|
|
286
318
|
})();
|
|
287
319
|
exports.appTools = __webpack_exports__.appTools;
|
|
320
|
+
exports.build = __webpack_exports__.build;
|
|
321
|
+
exports.closeServer = __webpack_exports__.closeServer;
|
|
288
322
|
exports["default"] = __webpack_exports__["default"];
|
|
289
323
|
exports.defineConfig = __webpack_exports__.defineConfig;
|
|
324
|
+
exports.deploy = __webpack_exports__.deploy;
|
|
290
325
|
exports.dev = __webpack_exports__.dev;
|
|
291
326
|
exports.generateWatchFiles = __webpack_exports__.generateWatchFiles;
|
|
292
327
|
exports.initAppContext = __webpack_exports__.initAppContext;
|
|
@@ -295,8 +330,11 @@ exports.resolveModernRsbuildConfig = __webpack_exports__.resolveModernRsbuildCon
|
|
|
295
330
|
exports.serve = __webpack_exports__.serve;
|
|
296
331
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
297
332
|
"appTools",
|
|
333
|
+
"build",
|
|
334
|
+
"closeServer",
|
|
298
335
|
"default",
|
|
299
336
|
"defineConfig",
|
|
337
|
+
"deploy",
|
|
300
338
|
"dev",
|
|
301
339
|
"generateWatchFiles",
|
|
302
340
|
"initAppContext",
|
|
@@ -55,7 +55,7 @@ const analyze = ()=>({
|
|
|
55
55
|
const resolvedConfig = api.getNormalizedConfig();
|
|
56
56
|
const hooks = api.getHooks();
|
|
57
57
|
try {
|
|
58
|
-
if ((0, external_utils_js_namespaceObject.checkIsBuildCommands)()) utils_namespaceObject.fs.emptydirSync(appContext.internalDirectory);
|
|
58
|
+
if ((0, external_utils_js_namespaceObject.checkIsBuildCommands)(appContext.command)) utils_namespaceObject.fs.emptydirSync(appContext.internalDirectory);
|
|
59
59
|
} catch {}
|
|
60
60
|
const apiOnly = await (0, utils_namespaceObject.isApiOnly)(appContext.appDirectory, resolvedConfig.source?.entriesDir, appContext.apiDirectory);
|
|
61
61
|
const [{ getProdServerRoutes }] = await Promise.all([
|
|
@@ -149,7 +149,7 @@ const analyze = ()=>({
|
|
|
149
149
|
htmlTemplates
|
|
150
150
|
};
|
|
151
151
|
api.updateAppContext(appContext);
|
|
152
|
-
if ((0, external_utils_js_namespaceObject.checkIsBuildCommands)()) {
|
|
152
|
+
if ((0, external_utils_js_namespaceObject.checkIsBuildCommands)(appContext.command)) {
|
|
153
153
|
await hooks.generateEntryCode.call({
|
|
154
154
|
entrypoints
|
|
155
155
|
});
|
|
@@ -101,7 +101,7 @@ const parseModule = async ({ source, filename })=>{
|
|
|
101
101
|
return await (0, external_es_module_lexer_namespaceObject.parse)(content);
|
|
102
102
|
};
|
|
103
103
|
const getServerCombinedModuleFile = (internalDirectory, entryName)=>external_path_default().join(internalDirectory, entryName, 'server-loader-combined.js');
|
|
104
|
-
const checkIsBuildCommands = ()=>{
|
|
104
|
+
const checkIsBuildCommands = (contextCommand)=>{
|
|
105
105
|
const buildCommands = [
|
|
106
106
|
'dev',
|
|
107
107
|
'start',
|
|
@@ -111,7 +111,8 @@ const checkIsBuildCommands = ()=>{
|
|
|
111
111
|
'dev-worker'
|
|
112
112
|
];
|
|
113
113
|
const command = (0, utils_namespaceObject.getCommand)();
|
|
114
|
-
|
|
114
|
+
if (buildCommands.includes(command)) return true;
|
|
115
|
+
return 'dev' === contextCommand || 'start' === contextCommand || 'build' === contextCommand || 'deploy' === contextCommand;
|
|
115
116
|
};
|
|
116
117
|
const checkIsServeCommand = ()=>{
|
|
117
118
|
const command = (0, utils_namespaceObject.getCommand)();
|
|
@@ -57,7 +57,7 @@ const initialize = ()=>({
|
|
|
57
57
|
api.modifyResolvedConfig(async (resolved)=>{
|
|
58
58
|
let appContext = api.getAppContext();
|
|
59
59
|
const userConfig = api.getConfig();
|
|
60
|
-
const port = await getServerPort(resolved);
|
|
60
|
+
const port = await getServerPort(resolved, appContext.command);
|
|
61
61
|
appContext = {
|
|
62
62
|
...appContext,
|
|
63
63
|
port,
|
|
@@ -92,9 +92,10 @@ function stabilizeConfig(resolve, config, keys) {
|
|
|
92
92
|
resolve[key] = config[key] || {};
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
|
-
async function getServerPort(config) {
|
|
95
|
+
async function getServerPort(config, contextCommand) {
|
|
96
96
|
const prodPort = Number(process.env.PORT) || config.server.port || 8080;
|
|
97
|
-
|
|
97
|
+
const isProgrammaticDev = 'dev' === contextCommand || 'start' === contextCommand;
|
|
98
|
+
if ((0, utils_namespaceObject.isDev)() && ((0, utils_namespaceObject.isDevCommand)() || isProgrammaticDev)) return (0, utils_namespaceObject.getPort)(Number(process.env.PORT) || prodPort);
|
|
98
99
|
return prodPort;
|
|
99
100
|
}
|
|
100
101
|
exports["default"] = __webpack_exports__["default"];
|
|
@@ -60,7 +60,7 @@ const serverBuild = ()=>({
|
|
|
60
60
|
name: '@modern-js/server-build',
|
|
61
61
|
setup (api) {
|
|
62
62
|
api.onAfterBuild(async ()=>{
|
|
63
|
-
const { appDirectory, distDirectory, metaName } = api.getAppContext();
|
|
63
|
+
const { appDirectory, distDirectory, metaName, moduleType } = api.getAppContext();
|
|
64
64
|
if (!checkHasCache(appDirectory) && !checkHasConfig(appDirectory, metaName)) return;
|
|
65
65
|
const modernConfig = api.getNormalizedConfig();
|
|
66
66
|
const distDir = external_path_default().resolve(distDirectory);
|
|
@@ -80,7 +80,8 @@ const serverBuild = ()=>({
|
|
|
80
80
|
}, {
|
|
81
81
|
sourceDirs,
|
|
82
82
|
distDir,
|
|
83
|
-
tsconfigPath
|
|
83
|
+
tsconfigPath,
|
|
84
|
+
moduleType
|
|
84
85
|
});
|
|
85
86
|
});
|
|
86
87
|
}
|
|
@@ -14,6 +14,10 @@ function modifyOutputConfig(config, appContext) {
|
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
function createBuilderProviderConfig(resolveConfig, appContext) {
|
|
17
|
+
const builderDevConfig = {
|
|
18
|
+
...resolveConfig.dev
|
|
19
|
+
};
|
|
20
|
+
delete builderDevConfig.mockDir;
|
|
17
21
|
const htmlConfig = {
|
|
18
22
|
...resolveConfig.html
|
|
19
23
|
};
|
|
@@ -32,7 +36,7 @@ function createBuilderProviderConfig(resolveConfig, appContext) {
|
|
|
32
36
|
...resolveConfig.source
|
|
33
37
|
},
|
|
34
38
|
dev: {
|
|
35
|
-
...
|
|
39
|
+
...builderDevConfig,
|
|
36
40
|
port: appContext.port
|
|
37
41
|
},
|
|
38
42
|
server: serverConfig,
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import node_fs from "node:fs";
|
|
2
|
+
import node_path from "node:path";
|
|
3
|
+
const DEFAULT_INDEX_FILE = 'llms.txt';
|
|
4
|
+
const DEFAULT_EXCLUDED_DIRS = [
|
|
5
|
+
'zh'
|
|
6
|
+
];
|
|
7
|
+
function bundleDocs({ source, target, indexFile = DEFAULT_INDEX_FILE, excludedDirs = DEFAULT_EXCLUDED_DIRS }) {
|
|
8
|
+
if (!node_fs.existsSync(source)) {
|
|
9
|
+
console.warn(`[bundle-docs] docs build output not found: ${source}`);
|
|
10
|
+
console.warn('[bundle-docs] skipping the bundled docs — build the docs site first if you need them');
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
13
|
+
node_fs.rmSync(target, {
|
|
14
|
+
recursive: true,
|
|
15
|
+
force: true
|
|
16
|
+
});
|
|
17
|
+
const isBundled = (rel)=>rel === indexFile || rel.endsWith('.md') && !excludedDirs.some((dir)=>rel.startsWith(`${dir}${node_path.sep}`));
|
|
18
|
+
let count = 0;
|
|
19
|
+
for (const entry of node_fs.readdirSync(source, {
|
|
20
|
+
recursive: true,
|
|
21
|
+
withFileTypes: true
|
|
22
|
+
})){
|
|
23
|
+
if (!entry.isFile()) continue;
|
|
24
|
+
const from = node_path.join(entry.parentPath ?? entry.path, entry.name);
|
|
25
|
+
const rel = node_path.relative(source, from);
|
|
26
|
+
if (!isBundled(rel)) continue;
|
|
27
|
+
const to = node_path.join(target, rel);
|
|
28
|
+
node_fs.mkdirSync(node_path.dirname(to), {
|
|
29
|
+
recursive: true
|
|
30
|
+
});
|
|
31
|
+
node_fs.copyFileSync(from, to);
|
|
32
|
+
count++;
|
|
33
|
+
}
|
|
34
|
+
if (0 === count) throw new Error(`[bundle-docs] no files copied from ${source}`);
|
|
35
|
+
return count;
|
|
36
|
+
}
|
|
37
|
+
function parseArgs(argv) {
|
|
38
|
+
const options = {};
|
|
39
|
+
for(let i = 0; i < argv.length; i += 2){
|
|
40
|
+
const key = argv[i]?.replace(/^--/, '');
|
|
41
|
+
const value = argv[i + 1];
|
|
42
|
+
if (key && value) options[key] = value;
|
|
43
|
+
}
|
|
44
|
+
return options;
|
|
45
|
+
}
|
|
46
|
+
function runBundleDocsCli(pkgRoot) {
|
|
47
|
+
const args = parseArgs(process.argv.slice(2));
|
|
48
|
+
const source = args.source ? node_path.resolve(process.cwd(), args.source) : node_path.resolve(pkgRoot, '../../document/doc_build');
|
|
49
|
+
const target = args.target ? node_path.resolve(process.cwd(), args.target) : node_path.resolve(pkgRoot, 'docs');
|
|
50
|
+
try {
|
|
51
|
+
const count = bundleDocs({
|
|
52
|
+
source,
|
|
53
|
+
target,
|
|
54
|
+
indexFile: args.index
|
|
55
|
+
});
|
|
56
|
+
if (count > 0) console.log(`[bundle-docs] bundled ${count} doc files into docs`);
|
|
57
|
+
} catch (error) {
|
|
58
|
+
console.error(error.message);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export { bundleDocs, runBundleDocsCli };
|
|
@@ -56,8 +56,9 @@ const build = async (api, options)=>{
|
|
|
56
56
|
logger.info('Starting production build...');
|
|
57
57
|
if (!appContext.builder) throw new Error('Expect the Builder to have been initialized, But the appContext.builder received `undefined`');
|
|
58
58
|
await appContext.builder.onAfterBuild(async ()=>copyEnvFiles(appContext.appDirectory, appContext.distDirectory));
|
|
59
|
-
await appContext.builder.build({
|
|
59
|
+
const buildResult = await appContext.builder.build({
|
|
60
60
|
watch: options?.watch
|
|
61
61
|
});
|
|
62
|
+
if (!options?.watch) await buildResult?.close();
|
|
62
63
|
};
|
|
63
64
|
export { build };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { getServerPlugins } from "../utils/loadPlugins.mjs";
|
|
2
|
-
|
|
2
|
+
import { build } from "./build.mjs";
|
|
3
|
+
const deploy = async (api, options = {})=>{
|
|
3
4
|
const hooks = api.getHooks();
|
|
4
5
|
const { metaName } = api.getAppContext();
|
|
5
|
-
await getServerPlugins(api, metaName);
|
|
6
|
+
if (options.skipBuild) await getServerPlugins(api, metaName);
|
|
7
|
+
else await build(api);
|
|
6
8
|
await hooks.onBeforeDeploy.call(options);
|
|
7
9
|
await hooks.deploy.call();
|
|
8
10
|
await hooks.onAfterDeploy.call(options);
|
|
@@ -19,10 +19,6 @@ const serverCommand = (program, api)=>{
|
|
|
19
19
|
};
|
|
20
20
|
const deployCommand = (program, api)=>{
|
|
21
21
|
program.command('deploy').usage('[options]').option('-c --config <config>', i18n.t(localeKeys.command.shared.config)).option('-s --skip-build', i18n.t(localeKeys.command.shared.skipBuild)).description(i18n.t(localeKeys.command.deploy.describe)).action(async (options)=>{
|
|
22
|
-
if (!options.skipBuild) {
|
|
23
|
-
const { build } = await import("./build.mjs");
|
|
24
|
-
await build(api);
|
|
25
|
-
}
|
|
26
22
|
const { deploy } = await import("./deploy.mjs");
|
|
27
23
|
await deploy(api, options);
|
|
28
24
|
process.exit(0);
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { AGGRED_DIR } from "@modern-js/server-core";
|
|
1
2
|
import { DEFAULT_ENTRY_NAME } from "@modern-js/utils";
|
|
2
3
|
import { getAutoInjectEnv } from "../utils/env.mjs";
|
|
3
4
|
function createDefaultConfig(appContext) {
|
|
4
5
|
const dev = {
|
|
6
|
+
mockDir: `./${AGGRED_DIR.mock}`,
|
|
5
7
|
cliShortcuts: {
|
|
6
8
|
help: false,
|
|
7
9
|
custom: (shortcuts = [])=>shortcuts.filter(({ key })=>'r' !== key && 'u' !== key && 'o' !== key)
|
package/dist/esm/index.mjs
CHANGED
|
@@ -77,7 +77,18 @@ const appTools = ()=>({
|
|
|
77
77
|
].some((tag)=>getArgv().includes(tag));
|
|
78
78
|
if (isSkipBuild) return;
|
|
79
79
|
}
|
|
80
|
-
|
|
80
|
+
const { command: contextCommand } = api.getAppContext();
|
|
81
|
+
const shouldClean = [
|
|
82
|
+
'dev',
|
|
83
|
+
'start',
|
|
84
|
+
'build',
|
|
85
|
+
'deploy'
|
|
86
|
+
].includes(command) || [
|
|
87
|
+
'dev',
|
|
88
|
+
'start',
|
|
89
|
+
'build'
|
|
90
|
+
].includes(contextCommand);
|
|
91
|
+
if (shouldClean) {
|
|
81
92
|
const resolvedConfig = api.getNormalizedConfig();
|
|
82
93
|
if (resolvedConfig.output.cleanDistPath) {
|
|
83
94
|
const appContext = api.getAppContext();
|
|
@@ -117,8 +128,11 @@ const appTools = ()=>({
|
|
|
117
128
|
});
|
|
118
129
|
const src = appTools;
|
|
119
130
|
export { defineConfig } from "./defineConfig.mjs";
|
|
131
|
+
export { build } from "./commands/build.mjs";
|
|
132
|
+
export { deploy } from "./commands/deploy.mjs";
|
|
120
133
|
export { dev } from "./commands/dev.mjs";
|
|
121
134
|
export { serve } from "./commands/serve.mjs";
|
|
135
|
+
export { closeServer } from "./utils/createServer.mjs";
|
|
122
136
|
export { resolveModernRsbuildConfig } from "./rsbuild.mjs";
|
|
123
137
|
export { mergeConfig } from "@modern-js/plugin/cli";
|
|
124
138
|
export default src;
|
|
@@ -23,7 +23,7 @@ const analyze = ()=>({
|
|
|
23
23
|
const resolvedConfig = api.getNormalizedConfig();
|
|
24
24
|
const hooks = api.getHooks();
|
|
25
25
|
try {
|
|
26
|
-
if (checkIsBuildCommands()) fs.emptydirSync(appContext.internalDirectory);
|
|
26
|
+
if (checkIsBuildCommands(appContext.command)) fs.emptydirSync(appContext.internalDirectory);
|
|
27
27
|
} catch {}
|
|
28
28
|
const apiOnly = await isApiOnly(appContext.appDirectory, resolvedConfig.source?.entriesDir, appContext.apiDirectory);
|
|
29
29
|
const [{ getProdServerRoutes }] = await Promise.all([
|
|
@@ -117,7 +117,7 @@ const analyze = ()=>({
|
|
|
117
117
|
htmlTemplates
|
|
118
118
|
};
|
|
119
119
|
api.updateAppContext(appContext);
|
|
120
|
-
if (checkIsBuildCommands()) {
|
|
120
|
+
if (checkIsBuildCommands(appContext.command)) {
|
|
121
121
|
await hooks.generateEntryCode.call({
|
|
122
122
|
entrypoints
|
|
123
123
|
});
|
|
@@ -52,7 +52,7 @@ const parseModule = async ({ source, filename })=>{
|
|
|
52
52
|
return await parse(content);
|
|
53
53
|
};
|
|
54
54
|
const getServerCombinedModuleFile = (internalDirectory, entryName)=>path.join(internalDirectory, entryName, 'server-loader-combined.js');
|
|
55
|
-
const checkIsBuildCommands = ()=>{
|
|
55
|
+
const checkIsBuildCommands = (contextCommand)=>{
|
|
56
56
|
const buildCommands = [
|
|
57
57
|
'dev',
|
|
58
58
|
'start',
|
|
@@ -62,7 +62,8 @@ const checkIsBuildCommands = ()=>{
|
|
|
62
62
|
'dev-worker'
|
|
63
63
|
];
|
|
64
64
|
const command = getCommand();
|
|
65
|
-
|
|
65
|
+
if (buildCommands.includes(command)) return true;
|
|
66
|
+
return 'dev' === contextCommand || 'start' === contextCommand || 'build' === contextCommand || 'deploy' === contextCommand;
|
|
66
67
|
};
|
|
67
68
|
const checkIsServeCommand = ()=>{
|
|
68
69
|
const command = getCommand();
|
|
@@ -25,7 +25,7 @@ const initialize = ()=>({
|
|
|
25
25
|
api.modifyResolvedConfig(async (resolved)=>{
|
|
26
26
|
let appContext = api.getAppContext();
|
|
27
27
|
const userConfig = api.getConfig();
|
|
28
|
-
const port = await getServerPort(resolved);
|
|
28
|
+
const port = await getServerPort(resolved, appContext.command);
|
|
29
29
|
appContext = {
|
|
30
30
|
...appContext,
|
|
31
31
|
port,
|
|
@@ -60,9 +60,10 @@ function stabilizeConfig(resolve, config, keys) {
|
|
|
60
60
|
resolve[key] = config[key] || {};
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
|
-
async function getServerPort(config) {
|
|
63
|
+
async function getServerPort(config, contextCommand) {
|
|
64
64
|
const prodPort = Number(process.env.PORT) || config.server.port || 8080;
|
|
65
|
-
|
|
65
|
+
const isProgrammaticDev = 'dev' === contextCommand || 'start' === contextCommand;
|
|
66
|
+
if (isDev() && (isDevCommand() || isProgrammaticDev)) return getPort(Number(process.env.PORT) || prodPort);
|
|
66
67
|
return prodPort;
|
|
67
68
|
}
|
|
68
69
|
export default initialize;
|