create-vxrn 1.14.4 → 1.14.5
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/.turbo/turbo-build.log +1 -1
- package/dist/cjs/create.cjs +156 -93
- package/dist/cjs/create.native.js +165 -102
- package/dist/cjs/create.native.js.map +1 -1
- package/dist/cjs/helpers/cloneStarter.cjs +77 -45
- package/dist/cjs/helpers/cloneStarter.native.js +79 -47
- package/dist/cjs/helpers/cloneStarter.native.js.map +1 -1
- package/dist/cjs/helpers/getProjectName.cjs +61 -40
- package/dist/cjs/helpers/getProjectName.native.js +67 -46
- package/dist/cjs/helpers/getProjectName.native.js.map +1 -1
- package/dist/cjs/helpers/getTemplateInfo.cjs +50 -35
- package/dist/cjs/helpers/getTemplateInfo.native.js +59 -44
- package/dist/cjs/helpers/getTemplateInfo.native.js.map +1 -1
- package/dist/cjs/helpers/installDependencies.cjs +16 -12
- package/dist/cjs/helpers/installDependencies.native.js +19 -15
- package/dist/cjs/helpers/installDependencies.native.js.map +1 -1
- package/dist/cjs/helpers/validateNpmPackage.cjs +31 -26
- package/dist/cjs/helpers/validateNpmPackage.native.js +31 -26
- package/dist/cjs/helpers/validateNpmPackage.native.js.map +1 -1
- package/dist/cjs/index.cjs +39 -25
- package/dist/cjs/index.native.js +39 -26
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/steps/bare.cjs +53 -32
- package/dist/cjs/steps/bare.native.js +75 -52
- package/dist/cjs/steps/bare.native.js.map +1 -1
- package/dist/cjs/steps/fullstack.cjs +37 -32
- package/dist/cjs/steps/fullstack.native.js +42 -37
- package/dist/cjs/steps/fullstack.native.js.map +1 -1
- package/dist/cjs/steps/one.cjs +65 -47
- package/dist/cjs/steps/one.native.js +70 -52
- package/dist/cjs/steps/one.native.js.map +1 -1
- package/dist/cjs/steps/types.cjs +7 -5
- package/dist/cjs/steps/types.native.js +7 -5
- package/dist/cjs/steps/types.native.js.map +1 -1
- package/dist/cjs/templates.cjs +35 -33
- package/dist/cjs/templates.native.js +59 -57
- package/dist/cjs/templates.native.js.map +1 -1
- package/dist/esm/create.mjs +112 -51
- package/dist/esm/create.mjs.map +1 -1
- package/dist/esm/create.native.js +127 -66
- package/dist/esm/create.native.js.map +1 -1
- package/dist/esm/helpers/cloneStarter.mjs +60 -30
- package/dist/esm/helpers/cloneStarter.mjs.map +1 -1
- package/dist/esm/helpers/cloneStarter.native.js +62 -32
- package/dist/esm/helpers/cloneStarter.native.js.map +1 -1
- package/dist/esm/helpers/getProjectName.mjs +33 -14
- package/dist/esm/helpers/getProjectName.mjs.map +1 -1
- package/dist/esm/helpers/getProjectName.native.js +33 -14
- package/dist/esm/helpers/getProjectName.native.js.map +1 -1
- package/dist/esm/helpers/getTemplateInfo.mjs +24 -11
- package/dist/esm/helpers/getTemplateInfo.mjs.map +1 -1
- package/dist/esm/helpers/getTemplateInfo.native.js +32 -19
- package/dist/esm/helpers/getTemplateInfo.native.js.map +1 -1
- package/dist/esm/helpers/installDependencies.mjs +4 -2
- package/dist/esm/helpers/installDependencies.mjs.map +1 -1
- package/dist/esm/helpers/installDependencies.native.js +7 -5
- package/dist/esm/helpers/installDependencies.native.js.map +1 -1
- package/dist/esm/helpers/validateNpmPackage.mjs +7 -4
- package/dist/esm/helpers/validateNpmPackage.mjs.map +1 -1
- package/dist/esm/helpers/validateNpmPackage.native.js +7 -4
- package/dist/esm/helpers/validateNpmPackage.native.js.map +1 -1
- package/dist/esm/index.js +22 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +22 -10
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +22 -11
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/steps/bare.mjs +26 -7
- package/dist/esm/steps/bare.mjs.map +1 -1
- package/dist/esm/steps/bare.native.js +48 -27
- package/dist/esm/steps/bare.native.js.map +1 -1
- package/dist/esm/steps/fullstack.mjs +13 -10
- package/dist/esm/steps/fullstack.mjs.map +1 -1
- package/dist/esm/steps/fullstack.native.js +17 -14
- package/dist/esm/steps/fullstack.native.js.map +1 -1
- package/dist/esm/steps/one.mjs +37 -21
- package/dist/esm/steps/one.mjs.map +1 -1
- package/dist/esm/steps/one.native.js +41 -25
- package/dist/esm/steps/one.native.js.map +1 -1
- package/dist/esm/templates.mjs +11 -11
- package/dist/esm/templates.native.js +11 -11
- package/package.json +3 -3
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
$ tamagui-build --skip-types
|
|
2
|
-
built create-vxrn in
|
|
2
|
+
built create-vxrn in 246 ms
|
package/dist/cjs/create.cjs
CHANGED
|
@@ -2,85 +2,115 @@ var __create = Object.create;
|
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf
|
|
6
|
-
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
7
|
var __export = (target, all) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
15
16
|
get: () => from[key],
|
|
16
17
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
18
|
});
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
20
22
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
28
|
+
value: mod,
|
|
29
|
+
enumerable: true
|
|
30
|
+
}) : target, mod));
|
|
31
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
32
|
+
value: true
|
|
33
|
+
}), mod);
|
|
32
34
|
var create_exports = {};
|
|
33
35
|
__export(create_exports, {
|
|
34
36
|
create: () => create
|
|
35
37
|
});
|
|
36
38
|
module.exports = __toCommonJS(create_exports);
|
|
37
|
-
var import_ansis = __toESM(require("ansis"))
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const import_meta = {}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
39
|
+
var import_ansis = __toESM(require("ansis"));
|
|
40
|
+
var import_fs_extra = __toESM(require("fs-extra"));
|
|
41
|
+
var import_node_child_process = require("node:child_process");
|
|
42
|
+
var import_node_fs = __toESM(require("node:fs"));
|
|
43
|
+
var import_node_path = __toESM(require("node:path"));
|
|
44
|
+
var import_node_util = require("node:util");
|
|
45
|
+
var import_node_url = require("node:url");
|
|
46
|
+
var import_cloneStarter = require("./helpers/cloneStarter.cjs");
|
|
47
|
+
var import_getProjectName = require("./helpers/getProjectName.cjs");
|
|
48
|
+
var import_getTemplateInfo = require("./helpers/getTemplateInfo.cjs");
|
|
49
|
+
var import_installDependencies = require("./helpers/installDependencies.cjs");
|
|
50
|
+
var import_validateNpmPackage = require("./helpers/validateNpmPackage.cjs");
|
|
51
|
+
var import_prompts = __toESM(require("prompts"));
|
|
52
|
+
var import_utils = require("@vxrn/utils");
|
|
53
|
+
const import_meta = {};
|
|
54
|
+
const {
|
|
55
|
+
existsSync,
|
|
56
|
+
readFileSync,
|
|
57
|
+
writeFileSync
|
|
58
|
+
} = import_fs_extra.default;
|
|
57
59
|
async function create(args) {
|
|
58
|
-
Number.parseFloat((0, import_node_child_process.execSync)(
|
|
60
|
+
const gitVersionString = Number.parseFloat((0, import_node_child_process.execSync)(`git --version`).toString().replace(`git version `, "").trim());
|
|
61
|
+
if (gitVersionString < 2.27) {
|
|
62
|
+
console.error(`
|
|
59
63
|
|
|
60
64
|
! vxrn can't install: Git version must be >= 2.27
|
|
61
65
|
|
|
62
|
-
`)
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
`);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
let projectName = args.name || "";
|
|
70
|
+
let resolvedProjectPath = import_node_path.default.resolve(process.cwd(), projectName);
|
|
65
71
|
async function promptForName() {
|
|
66
|
-
projectName = await (0, import_getProjectName.getProjectName)()
|
|
72
|
+
projectName = await (0, import_getProjectName.getProjectName)();
|
|
73
|
+
resolvedProjectPath = import_node_path.default.resolve(process.cwd(), projectName);
|
|
74
|
+
}
|
|
75
|
+
if (projectName) {
|
|
76
|
+
if (import_node_fs.default.existsSync(resolvedProjectPath)) {
|
|
77
|
+
console.error(`Error: folder already exists: ${resolvedProjectPath}`);
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
await promptForName();
|
|
82
|
+
while (import_node_fs.default.existsSync(resolvedProjectPath)) {
|
|
83
|
+
console.info();
|
|
84
|
+
console.info(import_ansis.default.yellow("!"), `The folder ${import_ansis.default.underline(import_ansis.default.blueBright(projectName))} already exists, lets try another name`);
|
|
85
|
+
console.info();
|
|
86
|
+
console.info();
|
|
87
|
+
await promptForName();
|
|
88
|
+
}
|
|
67
89
|
}
|
|
68
|
-
if (projectName) import_node_fs.default.existsSync(resolvedProjectPath) && (console.error(`Error: folder already exists: ${resolvedProjectPath}`), process.exit(1));else for (await promptForName(); import_node_fs.default.existsSync(resolvedProjectPath);) console.info(), console.info(import_ansis.default.yellow("!"), `The folder ${import_ansis.default.underline(import_ansis.default.blueBright(projectName))} already exists, lets try another name`), console.info(), console.info(), await promptForName();
|
|
69
90
|
console.info();
|
|
70
91
|
let template = await (0, import_getTemplateInfo.getTemplateInfo)(args.template);
|
|
71
92
|
if (template.type === "external-link") {
|
|
72
93
|
const url = template.externalUrl;
|
|
73
|
-
console.info()
|
|
94
|
+
console.info();
|
|
95
|
+
console.info(import_ansis.default.green(`Opening ${url}...`));
|
|
96
|
+
console.info();
|
|
74
97
|
const openCmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
|
|
75
|
-
(0, import_node_child_process.exec)(`${openCmd} ${url}`)
|
|
98
|
+
(0, import_node_child_process.exec)(`${openCmd} ${url}`);
|
|
99
|
+
process.exit(0);
|
|
76
100
|
}
|
|
77
101
|
const {
|
|
78
102
|
valid,
|
|
79
103
|
problems
|
|
80
104
|
} = (0, import_validateNpmPackage.validateNpmName)(projectName);
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
105
|
+
if (!valid) {
|
|
106
|
+
console.error(`Could not create a project called ${import_ansis.default.red(`"${projectName}"`)} because of npm naming restrictions:`);
|
|
107
|
+
problems.forEach(p => console.error(` ${import_ansis.default.red.bold("*")} ${p}`));
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
console.info();
|
|
111
|
+
const Spinner = await import("yocto-spinner").then(x => x.default);
|
|
112
|
+
const spinner = Spinner({
|
|
113
|
+
text: `Creating...`,
|
|
84
114
|
spinner: {
|
|
85
115
|
frames: ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"],
|
|
86
116
|
interval: 100
|
|
@@ -88,86 +118,119 @@ async function create(args) {
|
|
|
88
118
|
}).start();
|
|
89
119
|
await import_fs_extra.default.mkdir(resolvedProjectPath);
|
|
90
120
|
try {
|
|
91
|
-
await (0, import_cloneStarter.cloneStarter)(template, resolvedProjectPath)
|
|
121
|
+
await (0, import_cloneStarter.cloneStarter)(template, resolvedProjectPath);
|
|
122
|
+
process.chdir(resolvedProjectPath);
|
|
92
123
|
} catch (e) {
|
|
93
124
|
console.error(`[vxrn] Failed to copy example into ${resolvedProjectPath}
|
|
94
125
|
|
|
95
|
-
`, e)
|
|
126
|
+
`, e);
|
|
127
|
+
process.exit(1);
|
|
96
128
|
}
|
|
97
|
-
spinner.stop()
|
|
129
|
+
spinner.stop();
|
|
130
|
+
console.info();
|
|
131
|
+
console.info();
|
|
132
|
+
console.info(import_ansis.default.green(`${projectName} created!`));
|
|
133
|
+
console.info();
|
|
134
|
+
console.info();
|
|
98
135
|
const packageJson = await (async () => {
|
|
99
136
|
const errorMessages = [];
|
|
100
137
|
try {
|
|
101
|
-
const dirname = typeof __dirname
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
for (const p of possiblePaths)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
138
|
+
const dirname = typeof __dirname !== "undefined" ? __dirname : import_node_path.default.dirname((0, import_node_url.fileURLToPath)(import_meta.url));
|
|
139
|
+
const possiblePaths = [import_node_path.default.join(dirname, "..", "package.json"), import_node_path.default.join(dirname, "..", "..", "package.json"), import_node_path.default.join(dirname, "..", "..", "..", "package.json")];
|
|
140
|
+
const readFile = (0, import_node_util.promisify)(import_node_fs.default.readFile);
|
|
141
|
+
for (const p of possiblePaths) {
|
|
142
|
+
try {
|
|
143
|
+
const data = JSON.parse(await readFile(p));
|
|
144
|
+
return data;
|
|
145
|
+
} catch (e) {
|
|
146
|
+
if (e instanceof Error) errorMessages.push(e.message);
|
|
147
|
+
}
|
|
108
148
|
}
|
|
109
149
|
throw new Error("package.json not found in any of the expected locations.");
|
|
110
150
|
} catch (e) {
|
|
111
|
-
|
|
112
|
-
|
|
151
|
+
console.error("Failed to load package.json:", errorMessages.join("\n"));
|
|
152
|
+
throw e;
|
|
113
153
|
}
|
|
114
154
|
})();
|
|
115
|
-
updatePackageJsonName(projectName, resolvedProjectPath)
|
|
155
|
+
updatePackageJsonName(projectName, resolvedProjectPath);
|
|
156
|
+
updatePackageJsonVersions(packageJson.version, resolvedProjectPath);
|
|
157
|
+
updateAppJsonName(projectName, resolvedProjectPath);
|
|
116
158
|
const packageManager = await (async () => {
|
|
117
|
-
if ("packageManager" in template)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
159
|
+
if ("packageManager" in template) {
|
|
160
|
+
return template.packageManager;
|
|
161
|
+
}
|
|
162
|
+
const found = await (0, import_utils.detectPackageManager)();
|
|
163
|
+
const allFound = Object.keys(found);
|
|
164
|
+
if (allFound.length === 1) {
|
|
165
|
+
return allFound[0];
|
|
166
|
+
}
|
|
167
|
+
const response = await (0, import_prompts.default)({
|
|
121
168
|
name: "packageManager",
|
|
122
169
|
type: "select",
|
|
123
|
-
message:
|
|
170
|
+
message: `Package Manager:`,
|
|
124
171
|
choices: allFound.filter(x => found[x]).map(name => ({
|
|
125
172
|
title: name,
|
|
126
173
|
value: name
|
|
127
174
|
}))
|
|
128
|
-
})
|
|
175
|
+
});
|
|
176
|
+
return response.packageManager;
|
|
129
177
|
})();
|
|
130
|
-
console.info()
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
178
|
+
console.info();
|
|
179
|
+
if ("preInstall" in template) {
|
|
180
|
+
await template.preInstall({
|
|
181
|
+
packageManager,
|
|
182
|
+
isFullClone: true,
|
|
183
|
+
projectName,
|
|
184
|
+
projectPath: resolvedProjectPath
|
|
185
|
+
});
|
|
186
|
+
}
|
|
136
187
|
try {
|
|
137
|
-
console.info()
|
|
188
|
+
console.info();
|
|
189
|
+
console.info(import_ansis.default.green(`Installing with ${packageManager}...`));
|
|
190
|
+
console.info();
|
|
191
|
+
await (0, import_installDependencies.installDependencies)(resolvedProjectPath, packageManager);
|
|
138
192
|
} catch (e) {
|
|
139
193
|
console.error("[vxrn] error installing with " + packageManager + `
|
|
140
|
-
${e}`)
|
|
194
|
+
${e}`);
|
|
195
|
+
process.exit(1);
|
|
196
|
+
}
|
|
197
|
+
const envDefault = import_node_path.default.join(resolvedProjectPath, ".env.default");
|
|
198
|
+
const env = import_node_path.default.join(resolvedProjectPath, ".env");
|
|
199
|
+
if (existsSync(envDefault) && !existsSync(env)) {
|
|
200
|
+
await import_fs_extra.default.move(envDefault, env);
|
|
141
201
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}
|
|
202
|
+
if ("extraSteps" in template) {
|
|
203
|
+
await template.extraSteps({
|
|
204
|
+
packageManager,
|
|
205
|
+
isFullClone: true,
|
|
206
|
+
projectName,
|
|
207
|
+
projectPath: resolvedProjectPath
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
console.info();
|
|
150
211
|
}
|
|
151
212
|
function updatePackageJsonName(projectName, dir) {
|
|
152
213
|
const packageJsonPath = import_node_path.default.join(dir, "package.json");
|
|
153
214
|
if (existsSync(packageJsonPath)) {
|
|
154
|
-
const
|
|
215
|
+
const content = readFileSync(packageJsonPath).toString();
|
|
216
|
+
const contentWithUpdatedName = content.replace(/("name": ")(.*)(",)/, `$1${projectName}$3`);
|
|
155
217
|
writeFileSync(packageJsonPath, contentWithUpdatedName);
|
|
156
218
|
}
|
|
157
219
|
}
|
|
158
220
|
function updatePackageJsonVersions(version, dir) {
|
|
159
221
|
const packageJsonPath = import_node_path.default.join(dir, "package.json");
|
|
160
222
|
if (existsSync(packageJsonPath)) {
|
|
161
|
-
const
|
|
223
|
+
const content = readFileSync(packageJsonPath).toString();
|
|
224
|
+
const contentWithUpdatedVersions = content.replace(/"workspace:\^"/gm, `"^${version}"`).replace(/"workspace:~"/gm, `"~${version}"`).replace(/"workspace:\*"/gm, `"^${version}"`);
|
|
162
225
|
writeFileSync(packageJsonPath, contentWithUpdatedVersions);
|
|
163
226
|
}
|
|
164
227
|
}
|
|
165
228
|
function updateAppJsonName(projectName, dir) {
|
|
166
229
|
const appJsonPath = import_node_path.default.join(dir, "app.json");
|
|
167
230
|
if (existsSync(appJsonPath)) {
|
|
168
|
-
const content = readFileSync(appJsonPath).toString()
|
|
169
|
-
|
|
170
|
-
|
|
231
|
+
const content = readFileSync(appJsonPath).toString();
|
|
232
|
+
const projectSlug = projectName.toLowerCase().replace(/\s/g, "-");
|
|
233
|
+
const contentWithUpdatedName = content.replace(/("name": ")(.*)(",)/, `$1${projectName}$3`).replace(/("slug": ")(.*)(",)/, `$1${projectSlug}$3`);
|
|
171
234
|
writeFileSync(appJsonPath, contentWithUpdatedName);
|
|
172
235
|
}
|
|
173
236
|
}
|