astro 1.2.5 → 1.2.6
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/dist/@types/astro.d.ts +14 -13
- package/dist/cli/check/index.d.ts +2 -2
- package/dist/cli/check/index.js +2 -2
- package/dist/cli/index.js +28 -9
- package/dist/core/add/index.js +1 -1
- package/dist/core/build/generate.d.ts +3 -3
- package/dist/core/build/generate.js +27 -27
- package/dist/core/build/index.d.ts +2 -2
- package/dist/core/build/index.js +23 -19
- package/dist/core/build/page-data.d.ts +2 -2
- package/dist/core/build/page-data.js +2 -2
- package/dist/core/build/static-build.js +26 -28
- package/dist/core/build/types.d.ts +2 -2
- package/dist/core/build/vite-plugin-css.d.ts +0 -2
- package/dist/core/build/vite-plugin-css.js +3 -3
- package/dist/core/build/vite-plugin-hoisted-scripts.d.ts +2 -2
- package/dist/core/build/vite-plugin-hoisted-scripts.js +3 -3
- package/dist/core/build/vite-plugin-pages.js +2 -2
- package/dist/core/build/vite-plugin-ssr.js +15 -11
- package/dist/core/config/config.d.ts +41 -0
- package/dist/core/{config.js → config/config.js} +5 -166
- package/dist/core/config/index.d.ts +4 -0
- package/dist/core/config/index.js +18 -0
- package/dist/core/config/schema.d.ts +478 -0
- package/dist/core/config/schema.js +148 -0
- package/dist/core/config/settings.d.ts +8 -0
- package/dist/core/config/settings.js +16 -0
- package/dist/core/config/tsconfig.d.ts +2 -0
- package/dist/core/config/tsconfig.js +13 -0
- package/dist/core/create-vite.d.ts +3 -3
- package/dist/core/create-vite.js +21 -21
- package/dist/core/dev/index.d.ts +2 -2
- package/dist/core/dev/index.js +16 -12
- package/dist/core/endpoint/dev/index.js +1 -1
- package/dist/core/messages.js +2 -2
- package/dist/core/preview/index.d.ts +2 -2
- package/dist/core/preview/index.js +9 -9
- package/dist/core/render/dev/index.d.ts +5 -5
- package/dist/core/render/dev/index.js +14 -14
- package/dist/core/render/dev/scripts.d.ts +2 -2
- package/dist/core/render/dev/scripts.js +4 -7
- package/dist/core/routing/manifest/create.d.ts +3 -3
- package/dist/core/routing/manifest/create.js +9 -12
- package/dist/core/util.d.ts +3 -3
- package/dist/core/util.js +9 -9
- package/dist/integrations/index.d.ts +6 -6
- package/dist/integrations/index.js +19 -17
- package/dist/runtime/server/astro-global.js +1 -1
- package/dist/vite-plugin-astro/index.d.ts +3 -3
- package/dist/vite-plugin-astro/index.js +2 -1
- package/dist/vite-plugin-astro-postprocess/index.d.ts +3 -3
- package/dist/vite-plugin-astro-postprocess/index.js +1 -1
- package/dist/vite-plugin-astro-server/index.d.ts +4 -4
- package/dist/vite-plugin-astro-server/index.js +27 -24
- package/dist/vite-plugin-config-alias/index.d.ts +3 -3
- package/dist/vite-plugin-config-alias/index.js +6 -5
- package/dist/vite-plugin-env/index.d.ts +3 -3
- package/dist/vite-plugin-env/index.js +2 -3
- package/dist/vite-plugin-integrations-container/index.d.ts +3 -3
- package/dist/vite-plugin-integrations-container/index.js +2 -2
- package/dist/vite-plugin-jsx/index.d.ts +3 -3
- package/dist/vite-plugin-jsx/index.js +3 -3
- package/dist/vite-plugin-markdown/index.d.ts +3 -3
- package/dist/vite-plugin-markdown/index.js +3 -3
- package/dist/vite-plugin-markdown-legacy/index.d.ts +3 -3
- package/dist/vite-plugin-markdown-legacy/index.js +2 -1
- package/dist/vite-plugin-scripts/index.d.ts +3 -3
- package/dist/vite-plugin-scripts/index.js +5 -5
- package/dist/vite-plugin-scripts/page-ssr.d.ts +3 -3
- package/dist/vite-plugin-scripts/page-ssr.js +7 -5
- package/package.json +1 -1
- package/dist/core/config.d.ts +0 -260
package/dist/@types/astro.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type * as babel from '@babel/core';
|
|
|
5
5
|
import type { AddressInfo } from 'net';
|
|
6
6
|
import type { TsConfigJson } from 'tsconfig-resolver';
|
|
7
7
|
import type * as vite from 'vite';
|
|
8
|
-
import { z } from 'zod';
|
|
8
|
+
import type { z } from 'zod';
|
|
9
9
|
import type { SerializedSSRManifest } from '../core/app/types';
|
|
10
10
|
import type { PageBuildData } from '../core/build/types';
|
|
11
11
|
import type { AstroConfigSchema } from '../core/config';
|
|
@@ -803,18 +803,19 @@ export interface InjectedRoute {
|
|
|
803
803
|
}
|
|
804
804
|
export interface AstroConfig extends z.output<typeof AstroConfigSchema> {
|
|
805
805
|
integrations: AstroIntegration[];
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
806
|
+
}
|
|
807
|
+
export interface AstroSettings {
|
|
808
|
+
config: AstroConfig;
|
|
809
|
+
adapter: AstroAdapter | undefined;
|
|
810
|
+
injectedRoutes: InjectedRoute[];
|
|
811
|
+
pageExtensions: string[];
|
|
812
|
+
renderers: AstroRenderer[];
|
|
813
|
+
scripts: {
|
|
814
|
+
stage: InjectedScriptStage;
|
|
815
|
+
content: string;
|
|
816
|
+
}[];
|
|
817
|
+
tsConfig: TsConfigJson | undefined;
|
|
818
|
+
tsConfigPath: string | undefined;
|
|
818
819
|
}
|
|
819
820
|
export declare type AsyncRendererComponentFn<U> = (Component: any, props: any, slots: Record<string, string>, metadata?: AstroComponentMetadata) => Promise<U>;
|
|
820
821
|
/** Generic interface for a component (Astro, Svelte, React, etc.) */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function check(
|
|
1
|
+
import type { AstroSettings } from '../../@types/astro';
|
|
2
|
+
export declare function check(settings: AstroSettings): Promise<0 | 1>;
|
package/dist/cli/check/index.js
CHANGED
|
@@ -5,9 +5,9 @@ import { bold, dim, red, yellow } from "kleur/colors";
|
|
|
5
5
|
import ora from "ora";
|
|
6
6
|
import { fileURLToPath, pathToFileURL } from "url";
|
|
7
7
|
import { printDiagnostic } from "./print.js";
|
|
8
|
-
async function check(
|
|
8
|
+
async function check(settings) {
|
|
9
9
|
console.log(bold("astro check"));
|
|
10
|
-
const root =
|
|
10
|
+
const root = settings.config.root;
|
|
11
11
|
const spinner = ora(` Getting diagnostics for Astro files in ${fileURLToPath(root)}\u2026`).start();
|
|
12
12
|
let checker = new AstroCheck(root.toString());
|
|
13
13
|
const filesCount = await openAllDocuments(root, [], checker);
|
package/dist/cli/index.js
CHANGED
|
@@ -5,7 +5,14 @@ import yargs from "yargs-parser";
|
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import add from "../core/add/index.js";
|
|
7
7
|
import build from "../core/build/index.js";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
createSettings,
|
|
10
|
+
loadTSConfig,
|
|
11
|
+
openConfig,
|
|
12
|
+
resolveConfigPath,
|
|
13
|
+
resolveFlags,
|
|
14
|
+
resolveRoot
|
|
15
|
+
} from "../core/config/index.js";
|
|
9
16
|
import devServer from "../core/dev/index.js";
|
|
10
17
|
import { collectErrorMetadata } from "../core/errors.js";
|
|
11
18
|
import { debug, error, info } from "../core/logger/core.js";
|
|
@@ -113,7 +120,7 @@ async function runCommand(cmd, flags) {
|
|
|
113
120
|
return await telemetryHandler.update(subcommand, { flags, telemetry });
|
|
114
121
|
}
|
|
115
122
|
}
|
|
116
|
-
let { astroConfig, userConfig } = await openConfig({
|
|
123
|
+
let { astroConfig: initialAstroConfig, userConfig: initialUserConfig } = await openConfig({
|
|
117
124
|
cwd: root,
|
|
118
125
|
flags,
|
|
119
126
|
cmd,
|
|
@@ -122,13 +129,19 @@ async function runCommand(cmd, flags) {
|
|
|
122
129
|
await handleConfigError(e, { cwd: root, flags, logging });
|
|
123
130
|
return {};
|
|
124
131
|
});
|
|
125
|
-
if (!
|
|
132
|
+
if (!initialAstroConfig)
|
|
126
133
|
return;
|
|
127
|
-
telemetry.record(event.eventCliSession(cmd,
|
|
134
|
+
telemetry.record(event.eventCliSession(cmd, initialUserConfig, flags));
|
|
135
|
+
let initialTsConfig = loadTSConfig(root);
|
|
136
|
+
let settings = createSettings({
|
|
137
|
+
config: initialAstroConfig,
|
|
138
|
+
tsConfig: initialTsConfig == null ? void 0 : initialTsConfig.config,
|
|
139
|
+
tsConfigPath: initialTsConfig == null ? void 0 : initialTsConfig.path
|
|
140
|
+
});
|
|
128
141
|
switch (cmd) {
|
|
129
142
|
case "dev": {
|
|
130
143
|
async function startDevServer({ isRestart = false } = {}) {
|
|
131
|
-
const { watcher, stop } = await devServer(
|
|
144
|
+
const { watcher, stop } = await devServer(settings, { logging, telemetry, isRestart });
|
|
132
145
|
let restartInFlight = false;
|
|
133
146
|
const configFlag = resolveFlags(flags).config;
|
|
134
147
|
const configFlagPath = configFlag ? await resolveConfigPath({ cwd: root, flags }) : void 0;
|
|
@@ -148,7 +161,13 @@ async function runCommand(cmd, flags) {
|
|
|
148
161
|
isConfigReload: true
|
|
149
162
|
});
|
|
150
163
|
info(logging, "astro", logMsg + "\n");
|
|
151
|
-
astroConfig = newConfig.astroConfig;
|
|
164
|
+
let astroConfig = newConfig.astroConfig;
|
|
165
|
+
let tsconfig = loadTSConfig(root);
|
|
166
|
+
settings = createSettings({
|
|
167
|
+
config: astroConfig,
|
|
168
|
+
tsConfig: tsconfig == null ? void 0 : tsconfig.config,
|
|
169
|
+
tsConfigPath: tsconfig == null ? void 0 : tsconfig.path
|
|
170
|
+
});
|
|
152
171
|
await stop();
|
|
153
172
|
await startDevServer({ isRestart: true });
|
|
154
173
|
} catch (e) {
|
|
@@ -168,14 +187,14 @@ async function runCommand(cmd, flags) {
|
|
|
168
187
|
});
|
|
169
188
|
}
|
|
170
189
|
case "build": {
|
|
171
|
-
return await build(
|
|
190
|
+
return await build(settings, { logging, telemetry });
|
|
172
191
|
}
|
|
173
192
|
case "check": {
|
|
174
|
-
const ret = await check(
|
|
193
|
+
const ret = await check(settings);
|
|
175
194
|
return process.exit(ret);
|
|
176
195
|
}
|
|
177
196
|
case "preview": {
|
|
178
|
-
const server = await preview(
|
|
197
|
+
const server = await preview(settings, { logging, telemetry });
|
|
179
198
|
return await server.closed();
|
|
180
199
|
}
|
|
181
200
|
}
|
package/dist/core/add/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import path from "path";
|
|
|
8
8
|
import preferredPM from "preferred-pm";
|
|
9
9
|
import prompts from "prompts";
|
|
10
10
|
import { fileURLToPath, pathToFileURL } from "url";
|
|
11
|
-
import { resolveConfigPath } from "../config.js";
|
|
11
|
+
import { resolveConfigPath } from "../config/index.js";
|
|
12
12
|
import { debug, info } from "../logger/core.js";
|
|
13
13
|
import * as msg from "../messages.js";
|
|
14
14
|
import { printHelp } from "../messages.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { OutputAsset, OutputChunk } from 'rollup';
|
|
2
|
-
import type {
|
|
2
|
+
import type { AstroSettings } from '../../@types/astro';
|
|
3
3
|
import type { BuildInternals } from '../../core/build/internal.js';
|
|
4
4
|
import type { StaticBuildOptions } from './types';
|
|
5
|
-
export declare function rootRelativeFacadeId(facadeId: string,
|
|
6
|
-
export declare function chunkIsPage(
|
|
5
|
+
export declare function rootRelativeFacadeId(facadeId: string, settings: AstroSettings): string;
|
|
6
|
+
export declare function chunkIsPage(settings: AstroSettings, output: OutputAsset | OutputChunk, internals: BuildInternals): boolean;
|
|
7
7
|
export declare function generatePages(opts: StaticBuildOptions, internals: BuildInternals): Promise<void>;
|
|
@@ -39,21 +39,21 @@ function* throttle(max, inPaths) {
|
|
|
39
39
|
yield tmp;
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
function shouldSkipDraft(pageModule,
|
|
42
|
+
function shouldSkipDraft(pageModule, settings) {
|
|
43
43
|
var _a;
|
|
44
|
-
return !
|
|
44
|
+
return !settings.config.markdown.drafts && "frontmatter" in pageModule && ((_a = pageModule.frontmatter) == null ? void 0 : _a.draft) === true;
|
|
45
45
|
}
|
|
46
|
-
function rootRelativeFacadeId(facadeId,
|
|
47
|
-
return facadeId.slice(fileURLToPath(
|
|
46
|
+
function rootRelativeFacadeId(facadeId, settings) {
|
|
47
|
+
return facadeId.slice(fileURLToPath(settings.config.root).length);
|
|
48
48
|
}
|
|
49
|
-
function chunkIsPage(
|
|
49
|
+
function chunkIsPage(settings, output, internals) {
|
|
50
50
|
if (output.type !== "chunk") {
|
|
51
51
|
return false;
|
|
52
52
|
}
|
|
53
53
|
const chunk = output;
|
|
54
54
|
if (chunk.facadeModuleId) {
|
|
55
55
|
const facadeToEntryId = prependForwardSlash(
|
|
56
|
-
rootRelativeFacadeId(chunk.facadeModuleId,
|
|
56
|
+
rootRelativeFacadeId(chunk.facadeModuleId, settings)
|
|
57
57
|
);
|
|
58
58
|
return internals.entrySpecifierToBundleMap.has(facadeToEntryId);
|
|
59
59
|
}
|
|
@@ -63,9 +63,9 @@ async function generatePages(opts, internals) {
|
|
|
63
63
|
const timer = performance.now();
|
|
64
64
|
info(opts.logging, null, `
|
|
65
65
|
${bgGreen(black(" generating static routes "))}`);
|
|
66
|
-
const ssr = opts.
|
|
66
|
+
const ssr = opts.settings.config.output === "server";
|
|
67
67
|
const serverEntry = opts.buildConfig.serverEntry;
|
|
68
|
-
const outFolder = ssr ? opts.buildConfig.server : getOutDirWithinCwd(opts.
|
|
68
|
+
const outFolder = ssr ? opts.buildConfig.server : getOutDirWithinCwd(opts.settings.config.outDir);
|
|
69
69
|
const ssrEntryURL = new URL("./" + serverEntry + `?time=${Date.now()}`, outFolder);
|
|
70
70
|
const ssrEntry = await import(ssrEntryURL.toString());
|
|
71
71
|
const builtPaths = /* @__PURE__ */ new Set();
|
|
@@ -87,7 +87,7 @@ async function generatePage(opts, internals, pageData, ssrEntry, builtPaths) {
|
|
|
87
87
|
`Unable to find the module for ${pageData.component}. This is unexpected and likely a bug in Astro, please report.`
|
|
88
88
|
);
|
|
89
89
|
}
|
|
90
|
-
if (shouldSkipDraft(pageModule, opts.
|
|
90
|
+
if (shouldSkipDraft(pageModule, opts.settings)) {
|
|
91
91
|
info(opts.logging, null, `${magenta("\u26A0\uFE0F")} Skipping draft ${pageData.route.component}`);
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
@@ -108,7 +108,7 @@ async function generatePage(opts, internals, pageData, ssrEntry, builtPaths) {
|
|
|
108
108
|
const timeEnd = performance.now();
|
|
109
109
|
const timeChange = getTimeStat(timeStart, timeEnd);
|
|
110
110
|
const timeIncrease = `(+${timeChange})`;
|
|
111
|
-
const filePath = getOutputFilename(opts.
|
|
111
|
+
const filePath = getOutputFilename(opts.settings.config, path, pageData.route.type);
|
|
112
112
|
const lineIcon = i === paths.length - 1 ? "\u2514\u2500" : "\u251C\u2500";
|
|
113
113
|
info(opts.logging, null, ` ${cyan(lineIcon)} ${dim(filePath)} ${dim(timeIncrease)}`);
|
|
114
114
|
}
|
|
@@ -125,7 +125,7 @@ async function getPathsForRoute(pageData, mod, opts, builtPaths) {
|
|
|
125
125
|
route: pageData.route,
|
|
126
126
|
isValidate: false,
|
|
127
127
|
logging: opts.logging,
|
|
128
|
-
ssr: opts.
|
|
128
|
+
ssr: opts.settings.config.output === "server"
|
|
129
129
|
}).then((_result) => {
|
|
130
130
|
const label = _result.staticPaths.length === 1 ? "page" : "pages";
|
|
131
131
|
debug(
|
|
@@ -170,8 +170,8 @@ function shouldAppendForwardSlash(trailingSlash, buildFormat) {
|
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
function addPageName(pathname, opts) {
|
|
173
|
-
const trailingSlash = opts.
|
|
174
|
-
const buildFormat = opts.
|
|
173
|
+
const trailingSlash = opts.settings.config.trailingSlash;
|
|
174
|
+
const buildFormat = opts.settings.config.build.format;
|
|
175
175
|
const pageName = shouldAppendForwardSlash(trailingSlash, buildFormat) ? pathname.replace(/\/?$/, "/").replace(/^\//, "") : pathname.replace(/^\//, "");
|
|
176
176
|
opts.pageNames.push(pageName);
|
|
177
177
|
}
|
|
@@ -192,27 +192,27 @@ function getUrlForPath(pathname, base, origin, format, routeType) {
|
|
|
192
192
|
}
|
|
193
193
|
async function generatePath(pathname, opts, gopts) {
|
|
194
194
|
var _a;
|
|
195
|
-
const {
|
|
195
|
+
const { settings, logging, origin, routeCache } = opts;
|
|
196
196
|
const { mod, internals, linkIds, scripts: hoistedScripts, pageData, renderers } = gopts;
|
|
197
197
|
if (pageData.route.type === "page") {
|
|
198
198
|
addPageName(pathname, opts);
|
|
199
199
|
}
|
|
200
200
|
debug("build", `Generating: ${pathname}`);
|
|
201
|
-
const site =
|
|
201
|
+
const site = settings.config.base !== "/" ? joinPaths(((_a = settings.config.site) == null ? void 0 : _a.toString()) || "http://localhost/", settings.config.base) : settings.config.site;
|
|
202
202
|
const links = createLinkStylesheetElementSet(linkIds, site);
|
|
203
203
|
const scripts = createModuleScriptsSet(hoistedScripts ? [hoistedScripts] : [], site);
|
|
204
|
-
if (
|
|
204
|
+
if (settings.scripts.some((script) => script.stage === "page")) {
|
|
205
205
|
const hashedFilePath = internals.entrySpecifierToBundleMap.get(PAGE_SCRIPT_ID);
|
|
206
206
|
if (typeof hashedFilePath !== "string") {
|
|
207
207
|
throw new Error(`Cannot find the built path for ${PAGE_SCRIPT_ID}`);
|
|
208
208
|
}
|
|
209
|
-
const src = prependForwardSlash(npath.posix.join(
|
|
209
|
+
const src = prependForwardSlash(npath.posix.join(settings.config.base, hashedFilePath));
|
|
210
210
|
scripts.add({
|
|
211
211
|
props: { type: "module", src },
|
|
212
212
|
children: ""
|
|
213
213
|
});
|
|
214
214
|
}
|
|
215
|
-
for (const script of
|
|
215
|
+
for (const script of settings.scripts) {
|
|
216
216
|
if (script.stage === "head-inline") {
|
|
217
217
|
scripts.add({
|
|
218
218
|
props: {},
|
|
@@ -220,12 +220,12 @@ async function generatePath(pathname, opts, gopts) {
|
|
|
220
220
|
});
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
|
-
const ssr =
|
|
223
|
+
const ssr = settings.config.output === "server";
|
|
224
224
|
const url = getUrlForPath(
|
|
225
225
|
pathname,
|
|
226
|
-
opts.
|
|
226
|
+
opts.settings.config.base,
|
|
227
227
|
origin,
|
|
228
|
-
opts.
|
|
228
|
+
opts.settings.config.build.format,
|
|
229
229
|
pageData.route.type
|
|
230
230
|
);
|
|
231
231
|
const options = {
|
|
@@ -233,8 +233,8 @@ async function generatePath(pathname, opts, gopts) {
|
|
|
233
233
|
links,
|
|
234
234
|
logging,
|
|
235
235
|
markdown: {
|
|
236
|
-
...
|
|
237
|
-
isAstroFlavoredMd:
|
|
236
|
+
...settings.config.markdown,
|
|
237
|
+
isAstroFlavoredMd: settings.config.legacy.astroFlavoredMarkdown
|
|
238
238
|
},
|
|
239
239
|
mod,
|
|
240
240
|
mode: opts.mode,
|
|
@@ -250,12 +250,12 @@ async function generatePath(pathname, opts, gopts) {
|
|
|
250
250
|
}
|
|
251
251
|
throw new Error(`Cannot find the built path for ${specifier}`);
|
|
252
252
|
}
|
|
253
|
-
return prependForwardSlash(npath.posix.join(
|
|
253
|
+
return prependForwardSlash(npath.posix.join(settings.config.base, hashedFilePath));
|
|
254
254
|
},
|
|
255
255
|
request: createRequest({ url, headers: new Headers(), logging, ssr }),
|
|
256
256
|
route: pageData.route,
|
|
257
257
|
routeCache,
|
|
258
|
-
site:
|
|
258
|
+
site: settings.config.site ? new URL(settings.config.base, settings.config.site).toString() : settings.config.site,
|
|
259
259
|
ssr,
|
|
260
260
|
streaming: true
|
|
261
261
|
};
|
|
@@ -275,8 +275,8 @@ async function generatePath(pathname, opts, gopts) {
|
|
|
275
275
|
}
|
|
276
276
|
body = await response.text();
|
|
277
277
|
}
|
|
278
|
-
const outFolder = getOutFolder(
|
|
279
|
-
const outFile = getOutFile(
|
|
278
|
+
const outFolder = getOutFolder(settings.config, pathname, pageData.route.type);
|
|
279
|
+
const outFile = getOutFile(settings.config, outFolder, pathname, pageData.route.type);
|
|
280
280
|
pageData.route.distURL = outFile;
|
|
281
281
|
await fs.promises.mkdir(outFolder, { recursive: true });
|
|
282
282
|
await fs.promises.writeFile(outFile, body, encoding ?? "utf-8");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AstroTelemetry } from '@astrojs/telemetry';
|
|
2
|
-
import type {
|
|
2
|
+
import type { AstroSettings, RuntimeMode } from '../../@types/astro';
|
|
3
3
|
import type { LogOptions } from '../logger/core';
|
|
4
4
|
export interface BuildOptions {
|
|
5
5
|
mode?: RuntimeMode;
|
|
@@ -7,4 +7,4 @@ export interface BuildOptions {
|
|
|
7
7
|
telemetry: AstroTelemetry;
|
|
8
8
|
}
|
|
9
9
|
/** `astro build` */
|
|
10
|
-
export default function build(
|
|
10
|
+
export default function build(settings: AstroSettings, options: BuildOptions): Promise<void>;
|
package/dist/core/build/index.js
CHANGED
|
@@ -16,21 +16,21 @@ import { createRouteManifest } from "../routing/index.js";
|
|
|
16
16
|
import { collectPagesData } from "./page-data.js";
|
|
17
17
|
import { staticBuild } from "./static-build.js";
|
|
18
18
|
import { getTimeStat } from "./util.js";
|
|
19
|
-
async function build(
|
|
19
|
+
async function build(settings, options) {
|
|
20
20
|
applyPolyfill();
|
|
21
|
-
const builder = new AstroBuilder(
|
|
21
|
+
const builder = new AstroBuilder(settings, options);
|
|
22
22
|
await builder.run();
|
|
23
23
|
}
|
|
24
24
|
class AstroBuilder {
|
|
25
|
-
constructor(
|
|
25
|
+
constructor(settings, options) {
|
|
26
26
|
this.mode = "production";
|
|
27
27
|
if (options.mode) {
|
|
28
28
|
this.mode = options.mode;
|
|
29
29
|
}
|
|
30
|
-
this.
|
|
30
|
+
this.settings = settings;
|
|
31
31
|
this.logging = options.logging;
|
|
32
32
|
this.routeCache = new RouteCache(this.logging);
|
|
33
|
-
this.origin = config.site ? new URL(config.site).origin : `http://localhost:${config.server.port}`;
|
|
33
|
+
this.origin = settings.config.site ? new URL(settings.config.site).origin : `http://localhost:${settings.config.server.port}`;
|
|
34
34
|
this.manifest = { routes: [] };
|
|
35
35
|
this.timer = {};
|
|
36
36
|
}
|
|
@@ -38,8 +38,12 @@ class AstroBuilder {
|
|
|
38
38
|
debug("build", "Initial setup...");
|
|
39
39
|
const { logging } = this;
|
|
40
40
|
this.timer.init = performance.now();
|
|
41
|
-
this.
|
|
42
|
-
|
|
41
|
+
this.settings = await runHookConfigSetup({
|
|
42
|
+
settings: this.settings,
|
|
43
|
+
command: "build",
|
|
44
|
+
logging
|
|
45
|
+
});
|
|
46
|
+
this.manifest = createRouteManifest({ settings: this.settings }, this.logging);
|
|
43
47
|
const viteConfig = await createVite(
|
|
44
48
|
{
|
|
45
49
|
mode: this.mode,
|
|
@@ -48,26 +52,26 @@ class AstroBuilder {
|
|
|
48
52
|
middlewareMode: true
|
|
49
53
|
}
|
|
50
54
|
},
|
|
51
|
-
{
|
|
55
|
+
{ settings: this.settings, logging, mode: "build" }
|
|
52
56
|
);
|
|
53
|
-
await runHookConfigDone({
|
|
57
|
+
await runHookConfigDone({ settings: this.settings, logging });
|
|
54
58
|
return { viteConfig };
|
|
55
59
|
}
|
|
56
60
|
async build({ viteConfig }) {
|
|
57
61
|
const buildConfig = {
|
|
58
|
-
client: new URL("./client/", this.config.outDir),
|
|
59
|
-
server: new URL("./server/", this.config.outDir),
|
|
62
|
+
client: new URL("./client/", this.settings.config.outDir),
|
|
63
|
+
server: new URL("./server/", this.settings.config.outDir),
|
|
60
64
|
serverEntry: "entry.mjs"
|
|
61
65
|
};
|
|
62
|
-
await runHookBuildStart({ config: this.config, buildConfig, logging: this.logging });
|
|
63
|
-
info(this.logging, "build", `output target: ${colors.green(this.config.output)}`);
|
|
64
|
-
if (this.
|
|
65
|
-
info(this.logging, "build", `deploy adapter: ${colors.green(this.
|
|
66
|
+
await runHookBuildStart({ config: this.settings.config, buildConfig, logging: this.logging });
|
|
67
|
+
info(this.logging, "build", `output target: ${colors.green(this.settings.config.output)}`);
|
|
68
|
+
if (this.settings.adapter) {
|
|
69
|
+
info(this.logging, "build", `deploy adapter: ${colors.green(this.settings.adapter.name)}`);
|
|
66
70
|
}
|
|
67
71
|
info(this.logging, "build", "Collecting build info...");
|
|
68
72
|
this.timer.loadStart = performance.now();
|
|
69
73
|
const { assets, allPages } = await collectPagesData({
|
|
70
|
-
|
|
74
|
+
settings: this.settings,
|
|
71
75
|
logging: this.logging,
|
|
72
76
|
manifest: this.manifest
|
|
73
77
|
});
|
|
@@ -81,7 +85,7 @@ class AstroBuilder {
|
|
|
81
85
|
);
|
|
82
86
|
await staticBuild({
|
|
83
87
|
allPages,
|
|
84
|
-
|
|
88
|
+
settings: this.settings,
|
|
85
89
|
logging: this.logging,
|
|
86
90
|
manifest: this.manifest,
|
|
87
91
|
mode: this.mode,
|
|
@@ -102,7 +106,7 @@ class AstroBuilder {
|
|
|
102
106
|
});
|
|
103
107
|
debug("build", timerMessage("Additional assets copied", this.timer.assetsStart));
|
|
104
108
|
await runHookBuildDone({
|
|
105
|
-
config: this.config,
|
|
109
|
+
config: this.settings.config,
|
|
106
110
|
buildConfig,
|
|
107
111
|
pages: pageNames,
|
|
108
112
|
routes: Object.values(allPages).map((pd) => pd.route),
|
|
@@ -113,7 +117,7 @@ class AstroBuilder {
|
|
|
113
117
|
logging: this.logging,
|
|
114
118
|
timeStart: this.timer.init,
|
|
115
119
|
pageCount: pageNames.length,
|
|
116
|
-
buildMode: this.config.output
|
|
120
|
+
buildMode: this.settings.config.output
|
|
117
121
|
});
|
|
118
122
|
}
|
|
119
123
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AstroSettings, ManifestData } from '../../@types/astro';
|
|
2
2
|
import type { LogOptions } from '../logger/core';
|
|
3
3
|
import type { AllPagesData } from './types';
|
|
4
4
|
export interface CollectPagesDataOptions {
|
|
5
|
-
|
|
5
|
+
settings: AstroSettings;
|
|
6
6
|
logging: LogOptions;
|
|
7
7
|
manifest: ManifestData;
|
|
8
8
|
}
|
|
@@ -2,7 +2,7 @@ import { info } from "../logger/core.js";
|
|
|
2
2
|
import * as colors from "kleur/colors";
|
|
3
3
|
import { debug } from "../logger/core.js";
|
|
4
4
|
async function collectPagesData(opts) {
|
|
5
|
-
const {
|
|
5
|
+
const { settings, manifest } = opts;
|
|
6
6
|
const assets = {};
|
|
7
7
|
const allPages = {};
|
|
8
8
|
const builtPaths = /* @__PURE__ */ new Set();
|
|
@@ -31,7 +31,7 @@ async function collectPagesData(opts) {
|
|
|
31
31
|
hoistedScript: void 0
|
|
32
32
|
};
|
|
33
33
|
clearInterval(routeCollectionLogTimeout);
|
|
34
|
-
if (
|
|
34
|
+
if (settings.config.output === "static") {
|
|
35
35
|
const html = `${route.pathname}`.replace(/\/?$/, "/index.html");
|
|
36
36
|
debug(
|
|
37
37
|
"build",
|
|
@@ -20,8 +20,8 @@ import { vitePluginInternals } from "./vite-plugin-internals.js";
|
|
|
20
20
|
import { vitePluginPages } from "./vite-plugin-pages.js";
|
|
21
21
|
import { injectManifest, vitePluginSSR } from "./vite-plugin-ssr.js";
|
|
22
22
|
async function staticBuild(opts) {
|
|
23
|
-
const { allPages,
|
|
24
|
-
if (isModeServerWithNoAdapter(opts.
|
|
23
|
+
const { allPages, settings } = opts;
|
|
24
|
+
if (isModeServerWithNoAdapter(opts.settings)) {
|
|
25
25
|
throw new Error(`Cannot use \`output: 'server'\` without an adapter.
|
|
26
26
|
Install and configure the appropriate server adapter for your final deployment.
|
|
27
27
|
Learn more: https://docs.astro.build/en/guides/server-side-rendering/
|
|
@@ -40,31 +40,31 @@ Learn more: https://docs.astro.build/en/guides/server-side-rendering/
|
|
|
40
40
|
const timer = {};
|
|
41
41
|
timer.buildStart = performance.now();
|
|
42
42
|
for (const [component, pageData] of Object.entries(allPages)) {
|
|
43
|
-
const astroModuleURL = new URL("./" + component,
|
|
43
|
+
const astroModuleURL = new URL("./" + component, settings.config.root);
|
|
44
44
|
const astroModuleId = prependForwardSlash(component);
|
|
45
45
|
trackPageData(internals, component, pageData, astroModuleId, astroModuleURL);
|
|
46
46
|
pageInput.add(astroModuleId);
|
|
47
47
|
facadeIdToPageDataMap.set(fileURLToPath(astroModuleURL), pageData);
|
|
48
48
|
}
|
|
49
|
-
emptyDir(
|
|
49
|
+
emptyDir(settings.config.outDir, new Set(".git"));
|
|
50
50
|
timer.ssr = performance.now();
|
|
51
|
-
info(opts.logging, "build", `Building ${
|
|
51
|
+
info(opts.logging, "build", `Building ${settings.config.output} entrypoints...`);
|
|
52
52
|
await ssrBuild(opts, internals, pageInput);
|
|
53
53
|
info(opts.logging, "build", dim(`Completed in ${getTimeStat(timer.ssr, performance.now())}.`));
|
|
54
|
-
const rendererClientEntrypoints =
|
|
54
|
+
const rendererClientEntrypoints = settings.renderers.map((r) => r.clientEntrypoint).filter((a) => typeof a === "string");
|
|
55
55
|
const clientInput = /* @__PURE__ */ new Set([
|
|
56
56
|
...internals.discoveredHydratedComponents,
|
|
57
57
|
...internals.discoveredClientOnlyComponents,
|
|
58
58
|
...rendererClientEntrypoints,
|
|
59
59
|
...internals.discoveredScripts
|
|
60
60
|
]);
|
|
61
|
-
if (
|
|
61
|
+
if (settings.scripts.some((script) => script.stage === "page")) {
|
|
62
62
|
clientInput.add(PAGE_SCRIPT_ID);
|
|
63
63
|
}
|
|
64
64
|
timer.clientBuild = performance.now();
|
|
65
65
|
await clientBuild(opts, internals, clientInput);
|
|
66
66
|
timer.generate = performance.now();
|
|
67
|
-
if (
|
|
67
|
+
if (settings.config.output === "static") {
|
|
68
68
|
await generatePages(opts, internals);
|
|
69
69
|
await cleanSsrOutput(opts);
|
|
70
70
|
} else {
|
|
@@ -77,9 +77,9 @@ ${bgMagenta(black(" finalizing server assets "))}
|
|
|
77
77
|
}
|
|
78
78
|
async function ssrBuild(opts, internals, input) {
|
|
79
79
|
var _a, _b, _c;
|
|
80
|
-
const {
|
|
81
|
-
const ssr =
|
|
82
|
-
const out = ssr ? opts.buildConfig.server : getOutDirWithinCwd(
|
|
80
|
+
const { settings, viteConfig } = opts;
|
|
81
|
+
const ssr = settings.config.output === "server";
|
|
82
|
+
const out = ssr ? opts.buildConfig.server : getOutDirWithinCwd(settings.config.outDir);
|
|
83
83
|
const viteBuildConfig = {
|
|
84
84
|
...viteConfig,
|
|
85
85
|
logLevel: opts.viteConfig.logLevel ?? "error",
|
|
@@ -112,19 +112,18 @@ async function ssrBuild(opts, internals, input) {
|
|
|
112
112
|
rollupPluginAstroBuildCSS({
|
|
113
113
|
buildOptions: opts,
|
|
114
114
|
internals,
|
|
115
|
-
target: "server"
|
|
116
|
-
astroConfig
|
|
115
|
+
target: "server"
|
|
117
116
|
}),
|
|
118
117
|
...viteConfig.plugins || [],
|
|
119
|
-
|
|
118
|
+
settings.config.output === "server" && vitePluginSSR(internals, settings.adapter),
|
|
120
119
|
vitePluginAnalyzer(internals)
|
|
121
120
|
],
|
|
122
121
|
publicDir: ssr ? false : viteConfig.publicDir,
|
|
123
122
|
envPrefix: "PUBLIC_",
|
|
124
|
-
base:
|
|
123
|
+
base: settings.config.base
|
|
125
124
|
};
|
|
126
125
|
await runHookBuildSetup({
|
|
127
|
-
config:
|
|
126
|
+
config: settings.config,
|
|
128
127
|
pages: internals.pagesByComponent,
|
|
129
128
|
vite: viteBuildConfig,
|
|
130
129
|
target: "server",
|
|
@@ -134,13 +133,13 @@ async function ssrBuild(opts, internals, input) {
|
|
|
134
133
|
}
|
|
135
134
|
async function clientBuild(opts, internals, input) {
|
|
136
135
|
var _a, _b, _c;
|
|
137
|
-
const {
|
|
136
|
+
const { settings, viteConfig } = opts;
|
|
138
137
|
const timer = performance.now();
|
|
139
|
-
const ssr =
|
|
140
|
-
const out = ssr ? opts.buildConfig.client :
|
|
138
|
+
const ssr = settings.config.output === "server";
|
|
139
|
+
const out = ssr ? opts.buildConfig.client : settings.config.outDir;
|
|
141
140
|
if (!input.size) {
|
|
142
141
|
if (ssr) {
|
|
143
|
-
await copyFiles(
|
|
142
|
+
await copyFiles(settings.config.publicDir, out);
|
|
144
143
|
}
|
|
145
144
|
return null;
|
|
146
145
|
}
|
|
@@ -171,20 +170,19 @@ ${bgGreen(black(" building client "))}`);
|
|
|
171
170
|
},
|
|
172
171
|
plugins: [
|
|
173
172
|
vitePluginInternals(input, internals),
|
|
174
|
-
vitePluginHoistedScripts(
|
|
173
|
+
vitePluginHoistedScripts(settings, internals),
|
|
175
174
|
rollupPluginAstroBuildCSS({
|
|
176
175
|
buildOptions: opts,
|
|
177
176
|
internals,
|
|
178
|
-
target: "client"
|
|
179
|
-
astroConfig
|
|
177
|
+
target: "client"
|
|
180
178
|
}),
|
|
181
179
|
...viteConfig.plugins || []
|
|
182
180
|
],
|
|
183
181
|
envPrefix: "PUBLIC_",
|
|
184
|
-
base:
|
|
182
|
+
base: settings.config.base
|
|
185
183
|
};
|
|
186
184
|
await runHookBuildSetup({
|
|
187
|
-
config:
|
|
185
|
+
config: settings.config,
|
|
188
186
|
pages: internals.pagesByComponent,
|
|
189
187
|
vite: viteBuildConfig,
|
|
190
188
|
target: "client",
|
|
@@ -196,8 +194,8 @@ ${bgGreen(black(" building client "))}`);
|
|
|
196
194
|
return buildResult;
|
|
197
195
|
}
|
|
198
196
|
async function cleanSsrOutput(opts) {
|
|
199
|
-
const out = getOutDirWithinCwd(opts.
|
|
200
|
-
if (out.toString() !== opts.
|
|
197
|
+
const out = getOutDirWithinCwd(opts.settings.config.outDir);
|
|
198
|
+
if (out.toString() !== opts.settings.config.outDir.toString()) {
|
|
201
199
|
await fs.promises.rm(out, { recursive: true });
|
|
202
200
|
return;
|
|
203
201
|
}
|
|
@@ -226,7 +224,7 @@ async function copyFiles(fromFolder, toFolder) {
|
|
|
226
224
|
}
|
|
227
225
|
async function ssrMoveAssets(opts) {
|
|
228
226
|
info(opts.logging, "build", "Rearranging server assets...");
|
|
229
|
-
const serverRoot = opts.
|
|
227
|
+
const serverRoot = opts.settings.config.output === "static" ? opts.buildConfig.client : opts.buildConfig.server;
|
|
230
228
|
const clientRoot = opts.buildConfig.client;
|
|
231
229
|
const serverAssets = new URL("./assets/", serverRoot);
|
|
232
230
|
const clientAssets = new URL("./assets/", clientRoot);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AstroSettings, BuildConfig, ComponentInstance, ManifestData, RouteData, RuntimeMode, SSRLoadedRenderer } from '../../@types/astro';
|
|
2
2
|
import type { ViteConfigWithSSR } from '../create-vite';
|
|
3
3
|
import type { LogOptions } from '../logger/core';
|
|
4
4
|
import type { RouteCache } from '../render/route-cache';
|
|
@@ -21,7 +21,7 @@ export declare type AllPagesData = Record<ComponentPath, PageBuildData>;
|
|
|
21
21
|
/** Options for the static build */
|
|
22
22
|
export interface StaticBuildOptions {
|
|
23
23
|
allPages: AllPagesData;
|
|
24
|
-
|
|
24
|
+
settings: AstroSettings;
|
|
25
25
|
buildConfig: BuildConfig;
|
|
26
26
|
logging: LogOptions;
|
|
27
27
|
manifest: ManifestData;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { AstroConfig } from '../../@types/astro';
|
|
2
1
|
import type { BuildInternals } from './internal';
|
|
3
2
|
import type { StaticBuildOptions } from './types';
|
|
4
3
|
import { Plugin as VitePlugin } from 'vite';
|
|
@@ -6,7 +5,6 @@ interface PluginOptions {
|
|
|
6
5
|
internals: BuildInternals;
|
|
7
6
|
buildOptions: StaticBuildOptions;
|
|
8
7
|
target: 'client' | 'server';
|
|
9
|
-
astroConfig: AstroConfig;
|
|
10
8
|
}
|
|
11
9
|
export declare function rollupPluginAstroBuildCSS(options: PluginOptions): VitePlugin[];
|
|
12
10
|
export {};
|