@genesislcap/vite-builder 15.71.1-alpha-71cb16e4d3.0 → 15.73.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/index.d.ts.map +1 -1
- package/dist/index.js +53 -108
- package/package.json +2 -2
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;yBA0CrC,KAAK,YAAY;AAAvC,wBA0OE"}
|
package/dist/index.js
CHANGED
|
@@ -35,118 +35,21 @@ const VITE_DEFAULT_DEP_SCAN_ENTRIES = ['**/*.html', '!**/__tests__/**', '!**/cov
|
|
|
35
35
|
exports.default = (ctx) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
36
36
|
var _a, _b, _c, _d;
|
|
37
37
|
const { config: { app: { rootElement }, env, http, }, dirs: { cwd }, cli: { isDev, isBuild, isAnalyze, options: { open, https }, }, pkg: { description }, resolve: { alias }, } = ctx;
|
|
38
|
+
const define = (0, build_kit_1.resolveDefineConfig)(env, http, 'vite');
|
|
38
39
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*/
|
|
42
|
-
let publicPath = (0, build_kit_1.getPublicPath)();
|
|
43
|
-
const envConfig = () => {
|
|
44
|
-
const define = (0, build_kit_1.resolveDefineConfig)(env, http, 'vite');
|
|
45
|
-
/**
|
|
46
|
-
* The same map, narrowed to keys esbuild will accept as defines (see the `esbuildOptions` note
|
|
47
|
-
* below for why the optimizer needs it at all).
|
|
48
|
-
*
|
|
49
|
-
* `resolveDefineConfig` derives its keys from `process.env` via pattern match, so a machine with,
|
|
50
|
-
* say, `GENX-SOMETHING` set would produce a key that is not a valid JS identifier. Vite tolerates
|
|
51
|
-
* that in its own `define`; esbuild rejects the whole build. Filtering keeps a stray environment
|
|
52
|
-
* variable from turning into a hard build failure for everyone.
|
|
53
|
-
*/
|
|
54
|
-
const IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
55
|
-
const depDefine = Object.fromEntries(Object.entries(define).filter(([key]) => IDENTIFIER.test(key)));
|
|
56
|
-
publicPath = (0, build_kit_1.getPublicPath)();
|
|
57
|
-
return {
|
|
58
|
-
define,
|
|
59
|
-
base: publicPath,
|
|
60
|
-
optimizeDeps: {
|
|
61
|
-
/**
|
|
62
|
-
* GENC-1581 — the `define` above is applied when Vite TRANSFORMS source, but dependency
|
|
63
|
-
* pre-bundling is a separate esbuild pass that does not inherit it. Any env-driven global
|
|
64
|
-
* consumed from inside a pre-bundled dependency was therefore left as a bare identifier in
|
|
65
|
-
* `node_modules/.vite/deps`, and silently resolved to `undefined` at runtime.
|
|
66
|
-
*
|
|
67
|
-
* MEASURED before this change: the served `@genesislcap/foundation-utils` chunk contained
|
|
68
|
-
* `_DEFAULT_USER = DEFAULT_USER;` with no substitution, and the configured value appeared
|
|
69
|
-
* nowhere in the bundle. `foundation-utils` reads these behind `try {} catch {}`, so the
|
|
70
|
-
* resulting ReferenceError was swallowed and the variable simply stayed undefined — no
|
|
71
|
-
* error, no warning, just a feature that never worked. `DEFAULT_USER`/`DEFAULT_PASSWORD`
|
|
72
|
-
* (login pre-fill) is the case that surfaced it; every dependency-resident define was
|
|
73
|
-
* equally affected. `API_HOST` masked the problem because `foundation-comms` falls back to
|
|
74
|
-
* deriving it from `location`, and the dev proxy makes that fallback correct.
|
|
75
|
-
*
|
|
76
|
-
* Passing the same map to the optimizer's esbuild keeps source and dependencies consistent.
|
|
77
|
-
* Vite hashes `optimizeDeps` into the dep-cache key, so changing a value re-optimizes rather
|
|
78
|
-
* than silently serving a stale chunk.
|
|
79
|
-
*/
|
|
80
|
-
esbuildOptions: {
|
|
81
|
-
define: Object.assign({
|
|
82
|
-
/**
|
|
83
|
-
* Vite seeds its OWN optimizer define with `process.env.NODE_ENV` and then spreads
|
|
84
|
-
* `esbuildOptions` straight over it (`vite/dist/node/chunks/config.js`: `define: define$1,
|
|
85
|
-
* … …esbuildOptions,` — note `supported` gets an explicit deep-merge just below and
|
|
86
|
-
* `define` does not). So a bare `define` here REPLACES that map rather than adding to it,
|
|
87
|
-
* and pre-bundled deps lose the substitution.
|
|
88
|
-
*
|
|
89
|
-
* That is not academic: `@reduxjs/toolkit` resolves through its `module` condition to
|
|
90
|
-
* `redux-toolkit.modern.mjs` (57 bare `process.env.NODE_ENV` reads) plus `redux` (22),
|
|
91
|
-
* and `foundation-redux/src/store.ts` calls `configureStore` at module scope — so any app
|
|
92
|
-
* pulling in `@genesislcap/foundation-redux` would get `ReferenceError: process is not
|
|
93
|
-
* defined` out of the dep chunk. Dev only (`vite build` applies `define` through Rollup
|
|
94
|
-
* for node_modules too), which is exactly the path this change targets.
|
|
95
|
-
*
|
|
96
|
-
* Re-seeded before the spread. `depDefine` cannot collide with it: its keys are filtered
|
|
97
|
-
* to bare identifiers, and this one is dotted.
|
|
98
|
-
*/
|
|
99
|
-
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || (isDev ? 'development' : 'production')) }, depDefine),
|
|
100
|
-
},
|
|
101
|
-
},
|
|
102
|
-
// Dev only: createDevProxies logs its table, which `vite build` must not print
|
|
103
|
-
server: isDev ? { proxy: (0, build_kit_1.createDevProxies)() } : undefined,
|
|
104
|
-
};
|
|
105
|
-
};
|
|
106
|
-
/**
|
|
107
|
-
* FUI-2654 — Vite already restarts the dev server in-process when a `.env` file in `envDir` (the
|
|
108
|
-
* root) changes, but the restart re-resolves the same inline config object, so defines, `base`
|
|
109
|
-
* and the proxy target captured at startup stayed stale until a manual restart. Plugin `config`
|
|
110
|
-
* hooks DO re-run on every restart, so reload the env files and hand back fresh values here.
|
|
40
|
+
* The same map, narrowed to keys esbuild will accept as defines (see the `esbuildOptions` note in
|
|
41
|
+
* `optimizeDeps` below for why the optimizer needs it at all).
|
|
111
42
|
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
43
|
+
* `resolveDefineConfig` derives its keys from `process.env` via pattern match, so a machine with,
|
|
44
|
+
* say, `GENX-SOMETHING` set would produce a key that is not a valid JS identifier. Vite tolerates
|
|
45
|
+
* that in its own `define`; esbuild rejects the whole build. Filtering keeps a stray environment
|
|
46
|
+
* variable from turning into a hard build failure for everyone.
|
|
115
47
|
*/
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
name: 'genesis-env',
|
|
119
|
-
config() {
|
|
120
|
-
// The first resolve runs right after genx's own `setEnvVars`, which already loaded them
|
|
121
|
-
if (!isFirstConfig)
|
|
122
|
-
(0, build_kit_1.loadEnvFiles)(ctx);
|
|
123
|
-
isFirstConfig = false;
|
|
124
|
-
return envConfig();
|
|
125
|
-
},
|
|
126
|
-
configureServer(server) {
|
|
127
|
-
// Recomputed per server, as a restart may change DOT_ENV_FILE
|
|
128
|
-
const { envDir, logger, mode } = server.config;
|
|
129
|
-
const viteEnvFiles = envDir
|
|
130
|
-
? ['.env', '.env.local', `.env.${mode}`, `.env.${mode}.local`].map((file) => (0, node_path_1.resolve)(envDir, file))
|
|
131
|
-
: [];
|
|
132
|
-
const extraEnvFiles = (0, build_kit_1.getEnvFilePaths)(ctx).filter((file) => !viteEnvFiles.includes(file));
|
|
133
|
-
server.watcher.add(extraEnvFiles);
|
|
134
|
-
const onEnvFileChange = (file) => {
|
|
135
|
-
if (!extraEnvFiles.includes((0, node_path_1.resolve)(file)))
|
|
136
|
-
return;
|
|
137
|
-
logger.info(`${(0, node_path_1.relative)(process.cwd(), file)} changed, restarting server...`, {
|
|
138
|
-
clear: true,
|
|
139
|
-
timestamp: true,
|
|
140
|
-
});
|
|
141
|
-
// Concurrent calls share one restart, and the old watcher closes with the old server
|
|
142
|
-
server.restart().catch((e) => logger.error(String(e)));
|
|
143
|
-
};
|
|
144
|
-
server.watcher.on('add', onEnvFileChange);
|
|
145
|
-
server.watcher.on('change', onEnvFileChange);
|
|
146
|
-
},
|
|
147
|
-
};
|
|
48
|
+
const IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
49
|
+
const depDefine = Object.fromEntries(Object.entries(define).filter(([key]) => IDENTIFIER.test(key)));
|
|
148
50
|
const handlebars = yield (0, vite_js_1.getHandlebarsModule)();
|
|
149
51
|
const vite = yield (0, vite_js_1.getViteModule)();
|
|
52
|
+
const publicPath = (0, build_kit_1.getPublicPath)();
|
|
150
53
|
const tsconfigPath = (0, node_path_1.resolve)(cwd, 'tsconfig.json');
|
|
151
54
|
const buildMode = (_c = (_b = (_a = ctx.config.vite) === null || _a === void 0 ? void 0 : _a.checker) === null || _b === void 0 ? void 0 : _b.buildMode) !== null && _c !== void 0 ? _c : false;
|
|
152
55
|
const checkerPlugin = (0, node_fs_1.existsSync)(tsconfigPath)
|
|
@@ -164,7 +67,6 @@ exports.default = (ctx) => tslib_1.__awaiter(void 0, void 0, void 0, function* (
|
|
|
164
67
|
};
|
|
165
68
|
const config = {
|
|
166
69
|
plugins: [
|
|
167
|
-
envPlugin,
|
|
168
70
|
baseHrefPlugin,
|
|
169
71
|
...(checkerPlugin ? [checkerPlugin] : []),
|
|
170
72
|
handlebars({
|
|
@@ -230,6 +132,7 @@ exports.default = (ctx) => tslib_1.__awaiter(void 0, void 0, void 0, function* (
|
|
|
230
132
|
'@genesislcap/pbc-reporting',
|
|
231
133
|
],
|
|
232
134
|
},
|
|
135
|
+
define,
|
|
233
136
|
build: {
|
|
234
137
|
/**
|
|
235
138
|
* Left to Vite's production default (esbuild for JS and CSS) unless the app opts out, matching
|
|
@@ -263,7 +166,48 @@ exports.default = (ctx) => tslib_1.__awaiter(void 0, void 0, void 0, function* (
|
|
|
263
166
|
* reference, should we convert the above to a glob.
|
|
264
167
|
*/
|
|
265
168
|
include: ['@genesis-community/golden-layout'],
|
|
169
|
+
/**
|
|
170
|
+
* GENC-1581 — the `define` above is applied when Vite TRANSFORMS source, but dependency
|
|
171
|
+
* pre-bundling is a separate esbuild pass that does not inherit it. Any env-driven global
|
|
172
|
+
* consumed from inside a pre-bundled dependency was therefore left as a bare identifier in
|
|
173
|
+
* `node_modules/.vite/deps`, and silently resolved to `undefined` at runtime.
|
|
174
|
+
*
|
|
175
|
+
* MEASURED before this change: the served `@genesislcap/foundation-utils` chunk contained
|
|
176
|
+
* `_DEFAULT_USER = DEFAULT_USER;` with no substitution, and the configured value appeared
|
|
177
|
+
* nowhere in the bundle. `foundation-utils` reads these behind `try {} catch {}`, so the
|
|
178
|
+
* resulting ReferenceError was swallowed and the variable simply stayed undefined — no
|
|
179
|
+
* error, no warning, just a feature that never worked. `DEFAULT_USER`/`DEFAULT_PASSWORD`
|
|
180
|
+
* (login pre-fill) is the case that surfaced it; every dependency-resident define was
|
|
181
|
+
* equally affected. `API_HOST` masked the problem because `foundation-comms` falls back to
|
|
182
|
+
* deriving it from `location`, and the dev proxy makes that fallback correct.
|
|
183
|
+
*
|
|
184
|
+
* Passing the same map to the optimizer's esbuild keeps source and dependencies consistent.
|
|
185
|
+
* Vite hashes `optimizeDeps` into the dep-cache key, so changing a value re-optimizes rather
|
|
186
|
+
* than silently serving a stale chunk.
|
|
187
|
+
*/
|
|
188
|
+
esbuildOptions: {
|
|
189
|
+
define: Object.assign({
|
|
190
|
+
/**
|
|
191
|
+
* Vite seeds its OWN optimizer define with `process.env.NODE_ENV` and then spreads
|
|
192
|
+
* `esbuildOptions` straight over it (`vite/dist/node/chunks/config.js`: `define: define$1,
|
|
193
|
+
* … …esbuildOptions,` — note `supported` gets an explicit deep-merge just below and
|
|
194
|
+
* `define` does not). So a bare `define` here REPLACES that map rather than adding to it,
|
|
195
|
+
* and pre-bundled deps lose the substitution.
|
|
196
|
+
*
|
|
197
|
+
* That is not academic: `@reduxjs/toolkit` resolves through its `module` condition to
|
|
198
|
+
* `redux-toolkit.modern.mjs` (57 bare `process.env.NODE_ENV` reads) plus `redux` (22),
|
|
199
|
+
* and `foundation-redux/src/store.ts` calls `configureStore` at module scope — so any app
|
|
200
|
+
* pulling in `@genesislcap/foundation-redux` would get `ReferenceError: process is not
|
|
201
|
+
* defined` out of the dep chunk. Dev only (`vite build` applies `define` through Rollup
|
|
202
|
+
* for node_modules too), which is exactly the path this change targets.
|
|
203
|
+
*
|
|
204
|
+
* Re-seeded before the spread. `depDefine` cannot collide with it: its keys are filtered
|
|
205
|
+
* to bare identifiers, and this one is dotted.
|
|
206
|
+
*/
|
|
207
|
+
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || (isDev ? 'development' : 'production')) }, depDefine),
|
|
208
|
+
},
|
|
266
209
|
},
|
|
210
|
+
base: publicPath,
|
|
267
211
|
};
|
|
268
212
|
if (!(0, node_fs_1.existsSync)((0, node_path_1.resolve)(cwd, 'index.html'))) {
|
|
269
213
|
consola_1.default.warn('index.html file not found - copying default one.');
|
|
@@ -276,6 +220,7 @@ exports.default = (ctx) => tslib_1.__awaiter(void 0, void 0, void 0, function* (
|
|
|
276
220
|
open,
|
|
277
221
|
host: '0.0.0.0',
|
|
278
222
|
port: (0, build_kit_1.getPort)(ctx.pkg),
|
|
223
|
+
proxy: (0, build_kit_1.createDevProxies)(),
|
|
279
224
|
https: https ? (0, build_kit_1.getDevCertOptions)() : undefined,
|
|
280
225
|
} }));
|
|
281
226
|
yield server.listen();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genesislcap/vite-builder",
|
|
3
3
|
"description": "Vite builder",
|
|
4
|
-
"version": "15.
|
|
4
|
+
"version": "15.73.0",
|
|
5
5
|
"license": "SEE LICENSE IN license.txt",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"lint:fix": "genx lint -l ox --fix"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@genesislcap/build-kit": "15.
|
|
19
|
+
"@genesislcap/build-kit": "15.73.0",
|
|
20
20
|
"consola": "^3.0.2",
|
|
21
21
|
"copyfiles": "^2.4.1",
|
|
22
22
|
"vite": "^7.2.2",
|