@distilled.cloud/cloudflare-rolldown-plugin 0.11.3 → 0.12.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/dist/factory.d.ts +7 -7
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js.map +1 -1
- package/dist/options.d.ts +18 -1
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +19 -0
- package/dist/options.js.map +1 -1
- package/dist/plugin.d.ts +4 -3
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js.map +1 -1
- package/dist/plugins/options.d.ts.map +1 -1
- package/dist/plugins/options.js +117 -76
- package/dist/plugins/options.js.map +1 -1
- package/package.json +1 -1
- package/src/factory.ts +10 -10
- package/src/options.ts +43 -1
- package/src/plugin.ts +5 -3
- package/src/plugins/options.ts +128 -77
package/dist/factory.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import type * as rolldown from "rolldown";
|
|
2
2
|
import type * as vite from "vite";
|
|
3
|
-
import type {
|
|
3
|
+
import type { BasePluginOptions } from "./options.js";
|
|
4
4
|
export interface PluginInput<A = any> {
|
|
5
5
|
shared?: Omit<rolldown.Plugin<A>, "name">;
|
|
6
6
|
rolldown?: Omit<rolldown.Plugin<A>, "name">;
|
|
7
7
|
vite?: Omit<vite.Plugin<A>, "name">;
|
|
8
8
|
}
|
|
9
9
|
export interface NullablePluginOutput<A = any> {
|
|
10
|
-
rolldown: (options:
|
|
11
|
-
vite: (options:
|
|
10
|
+
rolldown: (options: BasePluginOptions) => rolldown.Plugin<A> | null;
|
|
11
|
+
vite: (options: BasePluginOptions) => vite.Plugin<A> | null;
|
|
12
12
|
}
|
|
13
13
|
export interface PluginOutput<A = any> {
|
|
14
|
-
rolldown: (options:
|
|
15
|
-
vite: (options:
|
|
14
|
+
rolldown: (options: BasePluginOptions) => rolldown.Plugin<A>;
|
|
15
|
+
vite: (options: BasePluginOptions) => vite.Plugin<A>;
|
|
16
16
|
}
|
|
17
|
-
export declare function createPlugin<TName extends string, A = any>(pluginName: TName, make: (options:
|
|
18
|
-
export declare function createPlugin<TName extends string, A = any>(pluginName: TName, make: (options:
|
|
17
|
+
export declare function createPlugin<TName extends string, A = any>(pluginName: TName, make: (options: BasePluginOptions) => PluginInput<A>): PluginOutput<A>;
|
|
18
|
+
export declare function createPlugin<TName extends string, A = any>(pluginName: TName, make: (options: BasePluginOptions) => PluginInput<A> | undefined): NullablePluginOutput<A>;
|
|
19
19
|
//# sourceMappingURL=factory.d.ts.map
|
package/dist/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,GAAG;IAC3C,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACpE,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtD;AAED,wBAAgB,YAAY,CAAC,KAAK,SAAS,MAAM,EAAE,CAAC,GAAG,GAAG,EACxD,UAAU,EAAE,KAAK,EACjB,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,WAAW,CAAC,CAAC,CAAC,GACnD,YAAY,CAAC,CAAC,CAAC,CAAC;AAEnB,wBAAgB,YAAY,CAAC,KAAK,SAAS,MAAM,EAAE,CAAC,GAAG,GAAG,EACxD,UAAU,EAAE,KAAK,EACjB,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,GAC/D,oBAAoB,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/factory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AA8BA,MAAM,UAAU,YAAY,CAC1B,UAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AA8BA,MAAM,UAAU,YAAY,CAC1B,UAAiB,EACjB,IAAgE;IAEhE,MAAM,IAAI,GAAG,wBAAwB,UAAU,EAAE,CAAC;IAClD,OAAO;QACL,QAAQ,EAAE,CAAC,OAA0B,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACzB,OAAO;gBACL,IAAI;gBACJ,GAAG,MAAM,CAAC,MAAM;gBAChB,GAAG,MAAM,CAAC,QAAQ;aACnB,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,CAAC,OAA0B,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACzB,OAAO;gBACL,IAAI;gBACJ,iBAAiB,EAAE,IAAI;gBACvB,kBAAkB,CAAC,WAAW;oBAC5B,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC;gBACvC,CAAC;gBACD,GAAG,MAAM,CAAC,MAAM;gBAChB,GAAG,MAAM,CAAC,IAAI;aACA,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/options.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface
|
|
1
|
+
export interface BasePluginOptions {
|
|
2
2
|
/**
|
|
3
3
|
* The main entry point to use.
|
|
4
4
|
* Defaults to the one from your Rolldown configuration.
|
|
@@ -28,5 +28,22 @@ export interface CloudflarePluginOptions {
|
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
30
|
exports?: Array<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Which Vite environment hosts the Worker, and any child environments it
|
|
33
|
+
* loads at runtime. Defaults to the single `ssr` environment.
|
|
34
|
+
*
|
|
35
|
+
* `@vitejs/plugin-rsc` apps run the Worker in the `rsc` environment (resolved
|
|
36
|
+
* with the `react-server` condition) and load the `ssr` environment from it,
|
|
37
|
+
* so they set `{ name: "rsc", childEnvironments: ["ssr"] }`. Every named
|
|
38
|
+
* environment is given the Worker treatment (workerd resolve conditions,
|
|
39
|
+
* dependency pre-bundling) and a module runner in dev.
|
|
40
|
+
*
|
|
41
|
+
* @default { entry: "ssr", children: [] }
|
|
42
|
+
*/
|
|
43
|
+
viteEnvironments?: {
|
|
44
|
+
entry?: string;
|
|
45
|
+
children?: Array<string>;
|
|
46
|
+
};
|
|
31
47
|
}
|
|
48
|
+
export declare const parseViteEnvironments: (options: BasePluginOptions) => [string, ...Array<string>];
|
|
32
49
|
//# sourceMappingURL=options.d.ts.map
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KAC1B,CAAC;CACH;AAED,eAAO,MAAM,qBAAqB,GAAI,SAAS,iBAAiB,KAAG,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAwB3F,CAAC"}
|
package/dist/options.js
CHANGED
|
@@ -1 +1,20 @@
|
|
|
1
|
+
export const parseViteEnvironments = (options) => {
|
|
2
|
+
const entry = options.viteEnvironments?.entry ?? "ssr";
|
|
3
|
+
if (entry === "client") {
|
|
4
|
+
throw new Error('The "client" environment cannot be used as a worker environment because it is reserved for the browser.');
|
|
5
|
+
}
|
|
6
|
+
const children = (options.viteEnvironments?.children ?? []).map((name, index, self) => {
|
|
7
|
+
if (name === "client") {
|
|
8
|
+
throw new Error('The "client" environment cannot be used as a worker environment because it is reserved for the browser.');
|
|
9
|
+
}
|
|
10
|
+
else if (self.indexOf(name) !== index) {
|
|
11
|
+
throw new Error(`The name "${name}" appears more than once in the Vite environment list. Worker environment names must be unique.`);
|
|
12
|
+
}
|
|
13
|
+
else if (name === entry) {
|
|
14
|
+
throw new Error(`The child environment "${name}" cannot have the same name as the entry environment "${entry}".`);
|
|
15
|
+
}
|
|
16
|
+
return name;
|
|
17
|
+
});
|
|
18
|
+
return [entry, ...children];
|
|
19
|
+
};
|
|
1
20
|
//# sourceMappingURL=options.js.map
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAgDA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAA0B,EAA8B,EAAE;IAC9F,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE,KAAK,IAAI,KAAK,CAAC;IACvD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,yGAAyG,CAC1G,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpF,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,yGAAyG,CAC1G,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,iGAAiG,CACnH,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAI,yDAAyD,KAAK,IAAI,CACjG,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC9B,CAAC,CAAC"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type * as rolldown from "rolldown";
|
|
2
|
-
import type {
|
|
3
|
-
export type
|
|
4
|
-
|
|
2
|
+
import type { BasePluginOptions } from "./options.js";
|
|
3
|
+
export type RolldownPluginOptions = Omit<BasePluginOptions, "viteEnvironment">;
|
|
4
|
+
export type RolldownPlugin = (options?: RolldownPluginOptions) => Array<rolldown.Plugin | null>;
|
|
5
|
+
declare const cloudflare: RolldownPlugin;
|
|
5
6
|
export default cloudflare;
|
|
6
7
|
//# sourceMappingURL=plugin.d.ts.map
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAYtD,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;AAE/E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,EAAE,qBAAqB,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAEhG,QAAA,MAAM,UAAU,EAAE,cAWjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,cAAc,GACf,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAM5B,MAAM,UAAU,GAAmB,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE;IAClD,OAAO;QACL,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC/B,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC3C,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;QACjC,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC3C,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC;KAC1C,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/plugins/options.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/plugins/options.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,aAAa,kDAsKxB,CAAC"}
|
package/dist/plugins/options.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { createPlugin } from "../factory.js";
|
|
3
|
+
import { parseViteEnvironments } from "../options.js";
|
|
3
4
|
import { hasNodejsCompat } from "../utils.js";
|
|
4
5
|
import { WORKER_ENTRY_PREFIX } from "./virtual-modules.js";
|
|
5
6
|
const DEFAULT_RESOLVE_CONDITION_NAMES = ["workerd", "worker", "module", "browser"];
|
|
@@ -46,104 +47,144 @@ export const optionsPlugin = createPlugin("options", (pluginOptions) => {
|
|
|
46
47
|
async config(userConfig) {
|
|
47
48
|
const vite = await import("vite");
|
|
48
49
|
const isRolldown = "rolldownVersion" in this.meta;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
userConfig.environments?.ssr?.build?.rollupOptions?.input ??
|
|
52
|
-
{});
|
|
50
|
+
const environmentNames = parseViteEnvironments(pluginOptions);
|
|
51
|
+
input = normalizeInput(pluginOptions.main ?? defaultEnvironmentEntries(environmentNames[0], userConfig) ?? {});
|
|
53
52
|
const rollupOptions = {
|
|
54
53
|
input: wrapInput(input),
|
|
55
54
|
preserveEntrySignatures: "strict",
|
|
56
55
|
};
|
|
57
56
|
const define = getDefine(pluginOptions, process.env.NODE_ENV || userConfig.mode || "production");
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
const makeEnvironment = ({ name, isEntry, }) => {
|
|
58
|
+
const entries = isEntry
|
|
59
|
+
? (pluginOptions.main ?? defaultEnvironmentEntries(name, userConfig))
|
|
60
|
+
: (defaultEnvironmentEntries(name, userConfig) ?? pluginOptions.main);
|
|
61
|
+
return {
|
|
62
|
+
// Bake `process.env.NODE_ENV` (and friends) into the worker build.
|
|
63
|
+
// workerd has no value for it at runtime, so without this libraries
|
|
64
|
+
// like React fall back to their development builds. Setting `define`
|
|
65
|
+
// at the environment level applies it even though `keepProcessEnv`
|
|
66
|
+
// stays `true` (so other `process.env` access is preserved at
|
|
67
|
+
// runtime for `nodejs_compat`).
|
|
68
|
+
define,
|
|
63
69
|
resolve: {
|
|
70
|
+
noExternal: true,
|
|
64
71
|
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
65
72
|
},
|
|
66
|
-
|
|
73
|
+
optimizeDeps: {
|
|
74
|
+
noDiscovery: false,
|
|
75
|
+
ignoreOutdatedRequests: true,
|
|
76
|
+
entries: asArray(entries)?.map(vite.normalizePath),
|
|
77
|
+
...(isRolldown
|
|
78
|
+
? {
|
|
79
|
+
rolldownOptions: {
|
|
80
|
+
platform: "neutral",
|
|
81
|
+
resolve: {
|
|
82
|
+
conditionNames: [
|
|
83
|
+
...DEFAULT_RESOLVE_CONDITION_NAMES,
|
|
84
|
+
"development|production",
|
|
85
|
+
],
|
|
86
|
+
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
87
|
+
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
88
|
+
},
|
|
89
|
+
transform: {
|
|
90
|
+
target: TARGET,
|
|
91
|
+
define,
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
}
|
|
95
|
+
: {
|
|
96
|
+
esbuildOptions: {
|
|
97
|
+
platform: "neutral",
|
|
98
|
+
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
99
|
+
resolveExtensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
100
|
+
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
101
|
+
target: TARGET,
|
|
102
|
+
define,
|
|
103
|
+
},
|
|
104
|
+
}),
|
|
105
|
+
},
|
|
106
|
+
keepProcessEnv: true,
|
|
107
|
+
// The entry environment owns the Worker's build input and server
|
|
108
|
+
// output directory; children (e.g. `ssr`) keep their own build config
|
|
109
|
+
// from the framework plugin (`@vitejs/plugin-rsc`).
|
|
110
|
+
...(isEntry
|
|
111
|
+
? {
|
|
112
|
+
build: {
|
|
113
|
+
ssr: true,
|
|
114
|
+
target: TARGET,
|
|
115
|
+
emitAssets: true,
|
|
116
|
+
copyPublicDir: false,
|
|
117
|
+
outDir: getOutputDirectory(userConfig, name),
|
|
118
|
+
...(isRolldown
|
|
119
|
+
? {
|
|
120
|
+
rolldownOptions: {
|
|
121
|
+
...rollupOptions,
|
|
122
|
+
platform: "neutral",
|
|
123
|
+
resolve: {
|
|
124
|
+
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
125
|
+
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
}
|
|
129
|
+
: { rollupOptions }),
|
|
130
|
+
},
|
|
131
|
+
}
|
|
132
|
+
: {}),
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
const appType = userConfig.appType ?? (Object.keys(input).length === 0 ? "spa" : "custom");
|
|
136
|
+
return {
|
|
137
|
+
appType,
|
|
67
138
|
builder: appType === "spa"
|
|
68
139
|
? undefined
|
|
69
140
|
: {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
141
|
+
// We need to include this for `builder.buildApp()` to work
|
|
142
|
+
// because not all frameworks provide it...
|
|
143
|
+
buildApp: async (builder) => {
|
|
144
|
+
for (const environment of Object.values(builder.environments)) {
|
|
145
|
+
// ...however, if your framework does provide a `buildApp` hook,
|
|
146
|
+
// this check prevents us from building the environment twice.
|
|
147
|
+
if (environment.isBuilt)
|
|
148
|
+
continue;
|
|
149
|
+
await builder.build(environment);
|
|
73
150
|
}
|
|
74
151
|
},
|
|
75
152
|
},
|
|
153
|
+
ssr: {
|
|
154
|
+
noExternal: true,
|
|
155
|
+
resolve: {
|
|
156
|
+
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
157
|
+
},
|
|
158
|
+
},
|
|
76
159
|
environments: {
|
|
77
160
|
client: {
|
|
78
161
|
build: {
|
|
79
162
|
outDir: getOutputDirectory(userConfig, "client"),
|
|
80
163
|
},
|
|
81
164
|
},
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
},
|
|
87
|
-
build: {
|
|
88
|
-
ssr: true,
|
|
89
|
-
target: TARGET,
|
|
90
|
-
emitAssets: true,
|
|
91
|
-
copyPublicDir: false,
|
|
92
|
-
outDir: getOutputDirectory(userConfig, "server"),
|
|
93
|
-
...(isRolldown
|
|
94
|
-
? {
|
|
95
|
-
rolldownOptions: {
|
|
96
|
-
...rollupOptions,
|
|
97
|
-
platform: "neutral",
|
|
98
|
-
resolve: {
|
|
99
|
-
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
100
|
-
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
101
|
-
},
|
|
102
|
-
},
|
|
103
|
-
}
|
|
104
|
-
: { rollupOptions }),
|
|
105
|
-
},
|
|
106
|
-
optimizeDeps: {
|
|
107
|
-
noDiscovery: false,
|
|
108
|
-
ignoreOutdatedRequests: true,
|
|
109
|
-
entries: pluginOptions.main ? vite.normalizePath(pluginOptions.main) : undefined,
|
|
110
|
-
...(isRolldown
|
|
111
|
-
? {
|
|
112
|
-
rolldownOptions: {
|
|
113
|
-
platform: "neutral",
|
|
114
|
-
resolve: {
|
|
115
|
-
conditionNames: [
|
|
116
|
-
...DEFAULT_RESOLVE_CONDITION_NAMES,
|
|
117
|
-
"development|production",
|
|
118
|
-
],
|
|
119
|
-
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
120
|
-
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
121
|
-
},
|
|
122
|
-
transform: {
|
|
123
|
-
target: TARGET,
|
|
124
|
-
define,
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
}
|
|
128
|
-
: {
|
|
129
|
-
esbuildOptions: {
|
|
130
|
-
platform: "neutral",
|
|
131
|
-
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
132
|
-
resolveExtensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
133
|
-
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
134
|
-
target: TARGET,
|
|
135
|
-
define,
|
|
136
|
-
},
|
|
137
|
-
}),
|
|
138
|
-
},
|
|
139
|
-
keepProcessEnv: true,
|
|
140
|
-
},
|
|
165
|
+
...Object.fromEntries(environmentNames.map((name, index) => [
|
|
166
|
+
name,
|
|
167
|
+
makeEnvironment({ name, isEntry: index === 0 }),
|
|
168
|
+
])),
|
|
141
169
|
},
|
|
142
170
|
};
|
|
143
171
|
},
|
|
144
172
|
},
|
|
145
173
|
};
|
|
146
174
|
});
|
|
175
|
+
const defaultEnvironmentEntries = (environmentName, userConfig) => {
|
|
176
|
+
const environment = userConfig.environments?.[environmentName];
|
|
177
|
+
return environment?.build?.rolldownOptions?.input ?? environment?.build?.rollupOptions?.input;
|
|
178
|
+
};
|
|
179
|
+
const asArray = (input) => {
|
|
180
|
+
if (!input)
|
|
181
|
+
return;
|
|
182
|
+
if (typeof input === "string")
|
|
183
|
+
return [input];
|
|
184
|
+
if (Array.isArray(input) && input.length > 0)
|
|
185
|
+
return input;
|
|
186
|
+
return Object.values(input);
|
|
187
|
+
};
|
|
147
188
|
const normalizeInput = (input) => {
|
|
148
189
|
if (typeof input === "string") {
|
|
149
190
|
return { [path.parse(input).name || "index"]: input };
|
|
@@ -156,7 +197,7 @@ const normalizeInput = (input) => {
|
|
|
156
197
|
}
|
|
157
198
|
};
|
|
158
199
|
const wrapInput = (input) => Object.fromEntries(Object.entries(input).map(([key, id]) => [key, `${WORKER_ENTRY_PREFIX}${id}`]));
|
|
159
|
-
|
|
200
|
+
const getDefine = (options, nodeEnv) => {
|
|
160
201
|
return {
|
|
161
202
|
"process.env.NODE_ENV": JSON.stringify(nodeEnv),
|
|
162
203
|
"global.process.env.NODE_ENV": JSON.stringify(nodeEnv),
|
|
@@ -179,10 +220,10 @@ function getDefine(options, nodeEnv) {
|
|
|
179
220
|
}
|
|
180
221
|
: {}),
|
|
181
222
|
};
|
|
182
|
-
}
|
|
183
|
-
|
|
223
|
+
};
|
|
224
|
+
const getOutputDirectory = (userConfig, environmentName) => {
|
|
184
225
|
const rootOutputDirectory = userConfig.build?.outDir ?? "dist";
|
|
185
226
|
return (userConfig.environments?.[environmentName]?.build?.outDir ??
|
|
186
227
|
path.join(rootOutputDirectory, environmentName));
|
|
187
|
-
}
|
|
228
|
+
};
|
|
188
229
|
//# sourceMappingURL=options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/plugins/options.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/plugins/options.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/factory.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type * as rolldown from "rolldown";
|
|
2
2
|
import type * as vite from "vite";
|
|
3
|
-
import type {
|
|
3
|
+
import type { BasePluginOptions } from "./options.js";
|
|
4
4
|
|
|
5
5
|
export interface PluginInput<A = any> {
|
|
6
6
|
shared?: Omit<rolldown.Plugin<A>, "name">;
|
|
@@ -9,32 +9,32 @@ export interface PluginInput<A = any> {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export interface NullablePluginOutput<A = any> {
|
|
12
|
-
rolldown: (options:
|
|
13
|
-
vite: (options:
|
|
12
|
+
rolldown: (options: BasePluginOptions) => rolldown.Plugin<A> | null;
|
|
13
|
+
vite: (options: BasePluginOptions) => vite.Plugin<A> | null;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
export interface PluginOutput<A = any> {
|
|
17
|
-
rolldown: (options:
|
|
18
|
-
vite: (options:
|
|
17
|
+
rolldown: (options: BasePluginOptions) => rolldown.Plugin<A>;
|
|
18
|
+
vite: (options: BasePluginOptions) => vite.Plugin<A>;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export function createPlugin<TName extends string, A = any>(
|
|
22
22
|
pluginName: TName,
|
|
23
|
-
make: (options:
|
|
23
|
+
make: (options: BasePluginOptions) => PluginInput<A>,
|
|
24
24
|
): PluginOutput<A>;
|
|
25
25
|
|
|
26
26
|
export function createPlugin<TName extends string, A = any>(
|
|
27
27
|
pluginName: TName,
|
|
28
|
-
make: (options:
|
|
28
|
+
make: (options: BasePluginOptions) => PluginInput<A> | undefined,
|
|
29
29
|
): NullablePluginOutput<A>;
|
|
30
30
|
|
|
31
31
|
export function createPlugin<TName extends string, A = any>(
|
|
32
32
|
pluginName: TName,
|
|
33
|
-
make: (options:
|
|
33
|
+
make: (options: BasePluginOptions) => PluginInput<A> | undefined,
|
|
34
34
|
): PluginOutput<A> | NullablePluginOutput<A> {
|
|
35
35
|
const name = `distilled-cloudflare:${pluginName}`;
|
|
36
36
|
return {
|
|
37
|
-
rolldown: (options:
|
|
37
|
+
rolldown: (options: BasePluginOptions) => {
|
|
38
38
|
const plugin = make(options);
|
|
39
39
|
if (!plugin) return null;
|
|
40
40
|
return {
|
|
@@ -43,7 +43,7 @@ export function createPlugin<TName extends string, A = any>(
|
|
|
43
43
|
...plugin.rolldown,
|
|
44
44
|
};
|
|
45
45
|
},
|
|
46
|
-
vite: (options:
|
|
46
|
+
vite: (options: BasePluginOptions) => {
|
|
47
47
|
const plugin = make(options);
|
|
48
48
|
if (!plugin) return null;
|
|
49
49
|
return {
|
package/src/options.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface
|
|
1
|
+
export interface BasePluginOptions {
|
|
2
2
|
/**
|
|
3
3
|
* The main entry point to use.
|
|
4
4
|
* Defaults to the one from your Rolldown configuration.
|
|
@@ -28,4 +28,46 @@ export interface CloudflarePluginOptions {
|
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
30
|
exports?: Array<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Which Vite environment hosts the Worker, and any child environments it
|
|
33
|
+
* loads at runtime. Defaults to the single `ssr` environment.
|
|
34
|
+
*
|
|
35
|
+
* `@vitejs/plugin-rsc` apps run the Worker in the `rsc` environment (resolved
|
|
36
|
+
* with the `react-server` condition) and load the `ssr` environment from it,
|
|
37
|
+
* so they set `{ name: "rsc", childEnvironments: ["ssr"] }`. Every named
|
|
38
|
+
* environment is given the Worker treatment (workerd resolve conditions,
|
|
39
|
+
* dependency pre-bundling) and a module runner in dev.
|
|
40
|
+
*
|
|
41
|
+
* @default { entry: "ssr", children: [] }
|
|
42
|
+
*/
|
|
43
|
+
viteEnvironments?: {
|
|
44
|
+
entry?: string;
|
|
45
|
+
children?: Array<string>;
|
|
46
|
+
};
|
|
31
47
|
}
|
|
48
|
+
|
|
49
|
+
export const parseViteEnvironments = (options: BasePluginOptions): [string, ...Array<string>] => {
|
|
50
|
+
const entry = options.viteEnvironments?.entry ?? "ssr";
|
|
51
|
+
if (entry === "client") {
|
|
52
|
+
throw new Error(
|
|
53
|
+
'The "client" environment cannot be used as a worker environment because it is reserved for the browser.',
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
const children = (options.viteEnvironments?.children ?? []).map((name, index, self) => {
|
|
57
|
+
if (name === "client") {
|
|
58
|
+
throw new Error(
|
|
59
|
+
'The "client" environment cannot be used as a worker environment because it is reserved for the browser.',
|
|
60
|
+
);
|
|
61
|
+
} else if (self.indexOf(name) !== index) {
|
|
62
|
+
throw new Error(
|
|
63
|
+
`The name "${name}" appears more than once in the Vite environment list. Worker environment names must be unique.`,
|
|
64
|
+
);
|
|
65
|
+
} else if (name === entry) {
|
|
66
|
+
throw new Error(
|
|
67
|
+
`The child environment "${name}" cannot have the same name as the entry environment "${entry}".`,
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
return name;
|
|
71
|
+
});
|
|
72
|
+
return [entry, ...children];
|
|
73
|
+
};
|
package/src/plugin.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as rolldown from "rolldown";
|
|
2
|
-
import type {
|
|
2
|
+
import type { BasePluginOptions } from "./options.js";
|
|
3
3
|
import {
|
|
4
4
|
additionalModulesPlugin,
|
|
5
5
|
cloudflareExternalsPlugin,
|
|
@@ -11,9 +11,11 @@ import {
|
|
|
11
11
|
wasmInitPlugin,
|
|
12
12
|
} from "./plugins/index.js";
|
|
13
13
|
|
|
14
|
-
export type
|
|
14
|
+
export type RolldownPluginOptions = Omit<BasePluginOptions, "viteEnvironment">;
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
export type RolldownPlugin = (options?: RolldownPluginOptions) => Array<rolldown.Plugin | null>;
|
|
17
|
+
|
|
18
|
+
const cloudflare: RolldownPlugin = (options = {}) => {
|
|
17
19
|
return [
|
|
18
20
|
optionsPlugin.rolldown(options),
|
|
19
21
|
cloudflareExternalsPlugin.rolldown(options),
|
package/src/plugins/options.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import type * as vite from "vite";
|
|
3
3
|
import { createPlugin } from "../factory.js";
|
|
4
|
-
import type
|
|
4
|
+
import { parseViteEnvironments, type BasePluginOptions } from "../options.js";
|
|
5
5
|
import { hasNodejsCompat } from "../utils.js";
|
|
6
6
|
import { WORKER_ENTRY_PREFIX } from "./virtual-modules.js";
|
|
7
7
|
|
|
@@ -55,11 +55,9 @@ export const optionsPlugin = createPlugin<"options", OptionsApi>("options", (plu
|
|
|
55
55
|
async config(userConfig) {
|
|
56
56
|
const vite = await import("vite");
|
|
57
57
|
const isRolldown = "rolldownVersion" in this.meta;
|
|
58
|
+
const environmentNames = parseViteEnvironments(pluginOptions);
|
|
58
59
|
input = normalizeInput(
|
|
59
|
-
pluginOptions.main ??
|
|
60
|
-
userConfig.environments?.ssr?.build?.rolldownOptions?.input ??
|
|
61
|
-
userConfig.environments?.ssr?.build?.rollupOptions?.input ??
|
|
62
|
-
{},
|
|
60
|
+
pluginOptions.main ?? defaultEnvironmentEntries(environmentNames[0], userConfig) ?? {},
|
|
63
61
|
);
|
|
64
62
|
const rollupOptions: vite.Rollup.RollupOptions = {
|
|
65
63
|
input: wrapInput(input),
|
|
@@ -69,90 +67,126 @@ export const optionsPlugin = createPlugin<"options", OptionsApi>("options", (plu
|
|
|
69
67
|
pluginOptions,
|
|
70
68
|
process.env.NODE_ENV || userConfig.mode || "production",
|
|
71
69
|
);
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
70
|
+
const makeEnvironment = ({
|
|
71
|
+
name,
|
|
72
|
+
isEntry,
|
|
73
|
+
}: {
|
|
74
|
+
name: string;
|
|
75
|
+
isEntry: boolean;
|
|
76
|
+
}): vite.EnvironmentOptions => {
|
|
77
|
+
const entries = isEntry
|
|
78
|
+
? (pluginOptions.main ?? defaultEnvironmentEntries(name, userConfig))
|
|
79
|
+
: (defaultEnvironmentEntries(name, userConfig) ?? pluginOptions.main);
|
|
80
|
+
return {
|
|
81
|
+
// Bake `process.env.NODE_ENV` (and friends) into the worker build.
|
|
82
|
+
// workerd has no value for it at runtime, so without this libraries
|
|
83
|
+
// like React fall back to their development builds. Setting `define`
|
|
84
|
+
// at the environment level applies it even though `keepProcessEnv`
|
|
85
|
+
// stays `true` (so other `process.env` access is preserved at
|
|
86
|
+
// runtime for `nodejs_compat`).
|
|
87
|
+
define,
|
|
77
88
|
resolve: {
|
|
89
|
+
noExternal: true,
|
|
78
90
|
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
79
91
|
},
|
|
80
|
-
|
|
92
|
+
optimizeDeps: {
|
|
93
|
+
noDiscovery: false,
|
|
94
|
+
ignoreOutdatedRequests: true,
|
|
95
|
+
entries: asArray(entries)?.map(vite.normalizePath),
|
|
96
|
+
...(isRolldown
|
|
97
|
+
? {
|
|
98
|
+
rolldownOptions: {
|
|
99
|
+
platform: "neutral",
|
|
100
|
+
resolve: {
|
|
101
|
+
conditionNames: [
|
|
102
|
+
...DEFAULT_RESOLVE_CONDITION_NAMES,
|
|
103
|
+
"development|production",
|
|
104
|
+
],
|
|
105
|
+
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
106
|
+
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
107
|
+
},
|
|
108
|
+
transform: {
|
|
109
|
+
target: TARGET,
|
|
110
|
+
define,
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
}
|
|
114
|
+
: {
|
|
115
|
+
esbuildOptions: {
|
|
116
|
+
platform: "neutral",
|
|
117
|
+
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
118
|
+
resolveExtensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
119
|
+
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
120
|
+
target: TARGET,
|
|
121
|
+
define,
|
|
122
|
+
},
|
|
123
|
+
}),
|
|
124
|
+
},
|
|
125
|
+
keepProcessEnv: true,
|
|
126
|
+
// The entry environment owns the Worker's build input and server
|
|
127
|
+
// output directory; children (e.g. `ssr`) keep their own build config
|
|
128
|
+
// from the framework plugin (`@vitejs/plugin-rsc`).
|
|
129
|
+
...(isEntry
|
|
130
|
+
? {
|
|
131
|
+
build: {
|
|
132
|
+
ssr: true,
|
|
133
|
+
target: TARGET,
|
|
134
|
+
emitAssets: true,
|
|
135
|
+
copyPublicDir: false,
|
|
136
|
+
outDir: getOutputDirectory(userConfig, name),
|
|
137
|
+
...(isRolldown
|
|
138
|
+
? {
|
|
139
|
+
rolldownOptions: {
|
|
140
|
+
...rollupOptions,
|
|
141
|
+
platform: "neutral",
|
|
142
|
+
resolve: {
|
|
143
|
+
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
144
|
+
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
}
|
|
148
|
+
: { rollupOptions }),
|
|
149
|
+
},
|
|
150
|
+
}
|
|
151
|
+
: {}),
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
const appType = userConfig.appType ?? (Object.keys(input).length === 0 ? "spa" : "custom");
|
|
155
|
+
return {
|
|
156
|
+
appType,
|
|
81
157
|
builder:
|
|
82
158
|
appType === "spa"
|
|
83
159
|
? undefined
|
|
84
160
|
: {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
161
|
+
// We need to include this for `builder.buildApp()` to work
|
|
162
|
+
// because not all frameworks provide it...
|
|
163
|
+
buildApp: async (builder) => {
|
|
164
|
+
for (const environment of Object.values(builder.environments)) {
|
|
165
|
+
// ...however, if your framework does provide a `buildApp` hook,
|
|
166
|
+
// this check prevents us from building the environment twice.
|
|
167
|
+
if (environment.isBuilt) continue;
|
|
168
|
+
await builder.build(environment);
|
|
88
169
|
}
|
|
89
170
|
},
|
|
90
171
|
},
|
|
172
|
+
ssr: {
|
|
173
|
+
noExternal: true,
|
|
174
|
+
resolve: {
|
|
175
|
+
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
176
|
+
},
|
|
177
|
+
},
|
|
91
178
|
environments: {
|
|
92
179
|
client: {
|
|
93
180
|
build: {
|
|
94
181
|
outDir: getOutputDirectory(userConfig, "client"),
|
|
95
182
|
},
|
|
96
183
|
},
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
ssr: true,
|
|
104
|
-
target: TARGET,
|
|
105
|
-
emitAssets: true,
|
|
106
|
-
copyPublicDir: false,
|
|
107
|
-
outDir: getOutputDirectory(userConfig, "server"),
|
|
108
|
-
...(isRolldown
|
|
109
|
-
? {
|
|
110
|
-
rolldownOptions: {
|
|
111
|
-
...rollupOptions,
|
|
112
|
-
platform: "neutral",
|
|
113
|
-
resolve: {
|
|
114
|
-
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
115
|
-
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
}
|
|
119
|
-
: { rollupOptions }),
|
|
120
|
-
},
|
|
121
|
-
optimizeDeps: {
|
|
122
|
-
noDiscovery: false,
|
|
123
|
-
ignoreOutdatedRequests: true,
|
|
124
|
-
entries: pluginOptions.main ? vite.normalizePath(pluginOptions.main) : undefined,
|
|
125
|
-
...(isRolldown
|
|
126
|
-
? {
|
|
127
|
-
rolldownOptions: {
|
|
128
|
-
platform: "neutral",
|
|
129
|
-
resolve: {
|
|
130
|
-
conditionNames: [
|
|
131
|
-
...DEFAULT_RESOLVE_CONDITION_NAMES,
|
|
132
|
-
"development|production",
|
|
133
|
-
],
|
|
134
|
-
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
135
|
-
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
136
|
-
},
|
|
137
|
-
transform: {
|
|
138
|
-
target: TARGET,
|
|
139
|
-
define,
|
|
140
|
-
},
|
|
141
|
-
},
|
|
142
|
-
}
|
|
143
|
-
: {
|
|
144
|
-
esbuildOptions: {
|
|
145
|
-
platform: "neutral",
|
|
146
|
-
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
147
|
-
resolveExtensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
148
|
-
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
149
|
-
target: TARGET,
|
|
150
|
-
define,
|
|
151
|
-
},
|
|
152
|
-
}),
|
|
153
|
-
},
|
|
154
|
-
keepProcessEnv: true,
|
|
155
|
-
},
|
|
184
|
+
...Object.fromEntries(
|
|
185
|
+
environmentNames.map((name, index) => [
|
|
186
|
+
name,
|
|
187
|
+
makeEnvironment({ name, isEntry: index === 0 }),
|
|
188
|
+
]),
|
|
189
|
+
),
|
|
156
190
|
},
|
|
157
191
|
};
|
|
158
192
|
},
|
|
@@ -160,6 +194,23 @@ export const optionsPlugin = createPlugin<"options", OptionsApi>("options", (plu
|
|
|
160
194
|
};
|
|
161
195
|
});
|
|
162
196
|
|
|
197
|
+
const defaultEnvironmentEntries = (
|
|
198
|
+
environmentName: string,
|
|
199
|
+
userConfig: vite.UserConfig,
|
|
200
|
+
): vite.Rolldown.InputOption | undefined => {
|
|
201
|
+
const environment = userConfig.environments?.[environmentName];
|
|
202
|
+
return environment?.build?.rolldownOptions?.input ?? environment?.build?.rollupOptions?.input;
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
const asArray = (
|
|
206
|
+
input: string | Array<string> | Record<string, string> | undefined,
|
|
207
|
+
): Array<string> | undefined => {
|
|
208
|
+
if (!input) return;
|
|
209
|
+
if (typeof input === "string") return [input];
|
|
210
|
+
if (Array.isArray(input) && input.length > 0) return input;
|
|
211
|
+
return Object.values(input);
|
|
212
|
+
};
|
|
213
|
+
|
|
163
214
|
const normalizeInput = (
|
|
164
215
|
input: string | Array<string> | Record<string, string>,
|
|
165
216
|
): Record<string, string> => {
|
|
@@ -177,7 +228,7 @@ const wrapInput = (input: Record<string, string>) =>
|
|
|
177
228
|
Object.entries(input).map(([key, id]) => [key, `${WORKER_ENTRY_PREFIX}${id}` as const]),
|
|
178
229
|
);
|
|
179
230
|
|
|
180
|
-
|
|
231
|
+
const getDefine = (options: BasePluginOptions, nodeEnv: string): Record<string, string> => {
|
|
181
232
|
return {
|
|
182
233
|
"process.env.NODE_ENV": JSON.stringify(nodeEnv),
|
|
183
234
|
"global.process.env.NODE_ENV": JSON.stringify(nodeEnv),
|
|
@@ -200,13 +251,13 @@ function getDefine(options: CloudflarePluginOptions, nodeEnv: string): Record<st
|
|
|
200
251
|
}
|
|
201
252
|
: {}),
|
|
202
253
|
};
|
|
203
|
-
}
|
|
254
|
+
};
|
|
204
255
|
|
|
205
|
-
|
|
256
|
+
const getOutputDirectory = (userConfig: vite.UserConfig, environmentName: string) => {
|
|
206
257
|
const rootOutputDirectory = userConfig.build?.outDir ?? "dist";
|
|
207
258
|
|
|
208
259
|
return (
|
|
209
260
|
userConfig.environments?.[environmentName]?.build?.outDir ??
|
|
210
261
|
path.join(rootOutputDirectory, environmentName)
|
|
211
262
|
);
|
|
212
|
-
}
|
|
263
|
+
};
|