@nativescript/vite 8.0.0-alpha.70 → 8.0.0-alpha.71
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/README.md
CHANGED
|
@@ -44,7 +44,7 @@ npx nativescript-vite init
|
|
|
44
44
|
|
|
45
45
|
This will:
|
|
46
46
|
|
|
47
|
-
- Generate a `vite.config.
|
|
47
|
+
- Generate a `vite.config.mts` using the detected project flavor (Angular, Vue, React, Solid, TypeScript, or JavaScript) and the corresponding helper subpath from `@nativescript/vite`.
|
|
48
48
|
- Add the dependency `@valor/nativescript-websockets`.
|
|
49
49
|
- Append `.ns-vite-build` to `.gitignore` if it is not already present.
|
|
50
50
|
|
|
@@ -113,7 +113,7 @@ supported default.
|
|
|
113
113
|
|
|
114
114
|
## Usage
|
|
115
115
|
|
|
116
|
-
1) Create `vite.config.
|
|
116
|
+
1) Create `vite.config.mts` (the `.mts` extension keeps the config ESM without setting `"type": "module"` in the app's package.json, avoiding Vite's `configLoader: 'native'` warning):
|
|
117
117
|
|
|
118
118
|
```ts
|
|
119
119
|
import { defineConfig, mergeConfig, UserConfig } from 'vite';
|
|
@@ -141,7 +141,7 @@ import { NativeScriptConfig } from '@nativescript/core';
|
|
|
141
141
|
export default {
|
|
142
142
|
// add these:
|
|
143
143
|
bundler: 'vite',
|
|
144
|
-
bundlerConfigPath: 'vite.config.
|
|
144
|
+
bundlerConfigPath: 'vite.config.mts',
|
|
145
145
|
} as NativeScriptConfig;
|
|
146
146
|
```
|
|
147
147
|
|
|
@@ -1,65 +1,66 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
|
|
7
|
-
export function dynamicImportPlugin() {
|
|
8
|
-
return {
|
|
9
|
-
name: 'nativescript-dynamic-import-fix',
|
|
10
|
-
generateBundle(options, bundle) {
|
|
11
|
-
for (const [fileName, chunk] of Object.entries(bundle)) {
|
|
12
|
-
if (chunk.type === 'chunk') {
|
|
13
|
-
let hasChanges = false;
|
|
14
|
-
// 1. Transform all relative import paths from ./ to ~/
|
|
15
|
-
if (chunk.code.includes("import('./")) {
|
|
16
|
-
chunk.code = chunk.code.replace(/import\(['"]\.\/([^'"]*)['"]\)/g, "import('~/$1')");
|
|
17
|
-
hasChanges = true;
|
|
18
|
-
}
|
|
19
|
-
// 2. Replace __vitePreload with simple implementation
|
|
20
|
-
if (chunk.code.includes('__vitePreload')) {
|
|
21
|
-
// Vite emits `const` or `var` depending on the output target.
|
|
22
|
-
const declMatch = /(?:const|var)\s+__vitePreload\s*=\s*function preload/.exec(chunk.code);
|
|
23
|
-
const vitePreloadStart = declMatch ? declMatch.index : -1;
|
|
24
|
-
if (vitePreloadStart !== -1) {
|
|
25
|
-
// Find the matching closing brace by counting braces
|
|
26
|
-
let braceCount = 0;
|
|
27
|
-
const functionStart = chunk.code.indexOf('{', vitePreloadStart);
|
|
28
|
-
let i = functionStart;
|
|
29
|
-
while (i < chunk.code.length) {
|
|
30
|
-
if (chunk.code[i] === '{')
|
|
31
|
-
braceCount++;
|
|
32
|
-
else if (chunk.code[i] === '}') {
|
|
33
|
-
braceCount--;
|
|
34
|
-
if (braceCount === 0) {
|
|
35
|
-
// Found the end of the function
|
|
36
|
-
const functionEnd = i + 1;
|
|
37
|
-
const before = chunk.code.substring(0, vitePreloadStart);
|
|
38
|
-
const after = chunk.code.substring(functionEnd);
|
|
39
|
-
// Simple implementation that just calls baseModule().
|
|
40
|
-
// Log the stack when present — a bare Error stringifies to
|
|
41
|
-
// message-only, which hides WHICH module failed and turns
|
|
42
|
-
// dev-session triage into guesswork.
|
|
43
|
-
const replacement = `const __vitePreload = function preload(baseModule, deps, importerUrl) {
|
|
1
|
+
// Vite emits `const` or `var` for the preload declaration depending on the output target.
|
|
2
|
+
const vitePreloadDeclaration = /(?:const|var)\s+__vitePreload\s*=\s*function preload/;
|
|
3
|
+
const vitePreloadPreamble = /^const scriptRel =[\s\S]*;\s*const assetsURL =[\s\S]*;\s*const seen = \{\};\s*$/;
|
|
4
|
+
// Log the stack when present — a bare Error stringifies to message-only,
|
|
5
|
+
// which hides WHICH module failed and turns dev-session triage into guesswork.
|
|
6
|
+
const nativePreloadImplementation = `const __vitePreload = function preload(baseModule, deps, importerUrl) {
|
|
44
7
|
return baseModule().catch(err => {
|
|
45
8
|
console.error("Dynamic import error:", err && err.stack ? err.stack : err);
|
|
46
9
|
throw err;
|
|
47
10
|
});
|
|
48
11
|
}`;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
12
|
+
function findClosingBrace(code, declarationStart) {
|
|
13
|
+
const functionStart = code.indexOf('{', declarationStart);
|
|
14
|
+
if (functionStart === -1) {
|
|
15
|
+
return -1;
|
|
16
|
+
}
|
|
17
|
+
let braceCount = 0;
|
|
18
|
+
for (let i = functionStart; i < code.length; i++) {
|
|
19
|
+
if (code[i] === '{') {
|
|
20
|
+
braceCount++;
|
|
21
|
+
}
|
|
22
|
+
else if (code[i] === '}') {
|
|
23
|
+
braceCount--;
|
|
24
|
+
if (braceCount === 0) {
|
|
25
|
+
return i;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return -1;
|
|
30
|
+
}
|
|
31
|
+
function simplifyVitePreload(code) {
|
|
32
|
+
const declarationMatch = vitePreloadDeclaration.exec(code);
|
|
33
|
+
if (!declarationMatch) {
|
|
34
|
+
return code;
|
|
35
|
+
}
|
|
36
|
+
const declarationStart = declarationMatch.index;
|
|
37
|
+
const functionEnd = findClosingBrace(code, declarationStart);
|
|
38
|
+
if (functionEnd === -1) {
|
|
39
|
+
return code;
|
|
40
|
+
}
|
|
41
|
+
// Vite emits these browser-only declarations immediately before
|
|
42
|
+
// __vitePreload. Remove them with the function because scriptRel probes the DOM
|
|
43
|
+
// as soon as a development bundle is evaluated.
|
|
44
|
+
const codeBeforeDeclaration = code.slice(0, declarationStart);
|
|
45
|
+
const possiblePreambleStart = codeBeforeDeclaration.lastIndexOf('const scriptRel =');
|
|
46
|
+
const possiblePreamble = codeBeforeDeclaration.slice(possiblePreambleStart);
|
|
47
|
+
const replacementStart = possiblePreambleStart !== -1 && vitePreloadPreamble.test(possiblePreamble) ? possiblePreambleStart : declarationStart;
|
|
48
|
+
return code.slice(0, replacementStart) + nativePreloadImplementation + code.slice(functionEnd + 1);
|
|
49
|
+
}
|
|
50
|
+
export function transformDynamicImports(code) {
|
|
51
|
+
const withNativeImportPaths = code.replace(/import\(['"]\.\/([^'"]*)['"]\)/g, "import('~/$1')");
|
|
52
|
+
return simplifyVitePreload(withNativeImportPaths);
|
|
53
|
+
}
|
|
54
|
+
// Fix NativeScript dynamic imports by transforming paths and simplifying __vitePreload.
|
|
55
|
+
// Vite still emits its browser preload helper when modulePreload is disabled:
|
|
56
|
+
// https://github.com/vitejs/vite/issues/13952
|
|
57
|
+
export function dynamicImportPlugin() {
|
|
58
|
+
return {
|
|
59
|
+
name: 'nativescript-dynamic-import-fix',
|
|
60
|
+
generateBundle(_options, bundle) {
|
|
61
|
+
for (const chunk of Object.values(bundle)) {
|
|
62
|
+
if (chunk.type === 'chunk') {
|
|
63
|
+
chunk.code = transformDynamicImports(chunk.code);
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
66
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-import-plugin.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/dynamic-import-plugin.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"dynamic-import-plugin.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/dynamic-import-plugin.ts"],"names":[],"mappings":"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"}
|
package/helpers/flavor.js
CHANGED
|
@@ -61,7 +61,7 @@ export function determineProjectFlavor() {
|
|
|
61
61
|
}
|
|
62
62
|
console.info(`
|
|
63
63
|
Could not determine project flavor.
|
|
64
|
-
Please use the matching <flavor>Config helper from '@nativescript/vite' in vite
|
|
64
|
+
Please use the matching <flavor>Config helper from '@nativescript/vite' in your vite config to explicitly set the base config.
|
|
65
65
|
`);
|
|
66
66
|
return false;
|
|
67
67
|
}
|
package/helpers/init.js
CHANGED
|
@@ -81,10 +81,14 @@ function getFlavorImportAndConfig(flavor) {
|
|
|
81
81
|
}
|
|
82
82
|
function ensureViteConfig() {
|
|
83
83
|
const root = getProjectRootPath();
|
|
84
|
-
const
|
|
85
|
-
if (
|
|
84
|
+
const existing = ['vite.config.mts', 'vite.config.ts', 'vite.config.mjs', 'vite.config.js', 'vite.config.cts', 'vite.config.cjs'].find((name) => fs.existsSync(path.join(root, name)));
|
|
85
|
+
if (existing) {
|
|
86
86
|
return;
|
|
87
87
|
}
|
|
88
|
+
// `.mts` keeps the config ESM regardless of the app package.json `type`,
|
|
89
|
+
// which NativeScript apps leave unset — a `.ts` config there is CJS-scoped
|
|
90
|
+
// and trips Vite's `configLoader: 'native'` forward-compat warning.
|
|
91
|
+
const viteConfigPath = path.join(root, 'vite.config.mts');
|
|
88
92
|
const flavor = resolveFlavor();
|
|
89
93
|
const { importLine, configExpr } = getFlavorImportAndConfig(flavor);
|
|
90
94
|
const contents = `import { defineConfig } from 'vite';\n${importLine};\n\nexport default defineConfig(({ mode }) => ${configExpr});\n`;
|
package/helpers/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAW/C,MAAM,YAAY,GAAG;IACpB,gCAAgC,EAAE,QAAQ;CACjC,CAAC;AAEX,SAAS,eAAe;IACvB,MAAM,OAAO,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;AACvC,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAgB;IACzC,MAAM,OAAO,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACnD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAgB;IAC3C,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAClC,CAAC;AACF,CAAC;AAED,SAAS,eAAe;IACvB,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;IAClC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACpD,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzD,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,QAAQ,IAAI,IAAI,CAAC;QAClB,CAAC;QACD,QAAQ,IAAI,kBAAkB,CAAC;QAC/B,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;AACF,CAAC;AAED,SAAS,aAAa;IACrB,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,YAAY,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAc;IAC/C,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,SAAS;YACb,OAAO;gBACN,UAAU,EAAE,6DAA6D;gBACzE,UAAU,EAAE,yBAAyB;aACrC,CAAC;QACH,KAAK,OAAO;YACX,OAAO;gBACN,UAAU,EAAE,yDAAyD;gBACrE,UAAU,EAAE,uBAAuB;aACnC,CAAC;QACH,KAAK,OAAO;YACX,OAAO;gBACN,UAAU,EAAE,yDAAyD;gBACrE,UAAU,EAAE,uBAAuB;aACnC,CAAC;QACH,KAAK,KAAK;YACT,OAAO;gBACN,UAAU,EAAE,qDAAqD;gBACjE,UAAU,EAAE,qBAAqB;aACjC,CAAC;QACH,KAAK,YAAY;YAChB,OAAO;gBACN,UAAU,EAAE,mEAAmE;gBAC/E,UAAU,EAAE,4BAA4B;aACxC,CAAC;QACH,KAAK,YAAY,CAAC;QAClB;YACC,OAAO;gBACN,UAAU,EAAE,mEAAmE;gBAC/E,UAAU,EAAE,4BAA4B;aACxC,CAAC;IACJ,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB;IACxB,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;IAClC,MAAM,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/init.ts"],"names":[],"mappings":"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"}
|