novacloud22-cli 1.0.3 → 1.0.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/index.js +50 -6
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -13,6 +13,7 @@ const open = require('open')
|
|
|
13
13
|
const os = require('os')
|
|
14
14
|
|
|
15
15
|
const API_BASE = 'https://backend-vjzu.onrender.com'
|
|
16
|
+
const SITES_API = 'https://novacloud22-sites.onrender.com'
|
|
16
17
|
const FRONTEND_URL = 'https://novacloud22.web.app'
|
|
17
18
|
const CONFIG_DIR = path.join(os.homedir(), '.novacloud22')
|
|
18
19
|
const TOKEN_FILE = path.join(CONFIG_DIR, 'token.json')
|
|
@@ -179,11 +180,19 @@ program
|
|
|
179
180
|
const spinner = ora('Fetching your sites...').start()
|
|
180
181
|
let sites = []
|
|
181
182
|
try {
|
|
182
|
-
const res = await axios.get(`${
|
|
183
|
+
const res = await axios.get(`${SITES_API}/p/my-sites`, { headers })
|
|
183
184
|
sites = res.data.sites || []
|
|
184
185
|
spinner.stop()
|
|
185
|
-
} catch {
|
|
186
|
+
} catch (e) {
|
|
186
187
|
spinner.stop()
|
|
188
|
+
if (e.response?.status === 401) {
|
|
189
|
+
console.log(chalk.red('\n ✗ Session expired. Please log in again: novacloud22 login\n'))
|
|
190
|
+
process.exit(1)
|
|
191
|
+
}
|
|
192
|
+
const msg = e.response?.data?.detail || e.message
|
|
193
|
+
console.log(chalk.red(`\n ✗ Failed to fetch sites: ${msg}`))
|
|
194
|
+
console.log(chalk.gray(' Make sure you are connected to the internet.\n'))
|
|
195
|
+
process.exit(1)
|
|
187
196
|
}
|
|
188
197
|
|
|
189
198
|
if (sites.length === 0) {
|
|
@@ -221,6 +230,41 @@ program
|
|
|
221
230
|
])
|
|
222
231
|
|
|
223
232
|
saveProjectConfig(answers)
|
|
233
|
+
|
|
234
|
+
// Auto-fix vite.config.js to use relative paths
|
|
235
|
+
const viteConfigs = ['vite.config.js', 'vite.config.ts']
|
|
236
|
+
let viteFixed = false
|
|
237
|
+
for (const configFile of viteConfigs) {
|
|
238
|
+
if (fs.existsSync(configFile)) {
|
|
239
|
+
const content = fs.readFileSync(configFile, 'utf8')
|
|
240
|
+
if (!content.includes("base:")) {
|
|
241
|
+
// Add base: './' to existing config
|
|
242
|
+
const updated = content.replace(
|
|
243
|
+
/defineConfig\s*\(\s*\{/,
|
|
244
|
+
`defineConfig({\n base: './',`
|
|
245
|
+
)
|
|
246
|
+
if (updated !== content) {
|
|
247
|
+
fs.writeFileSync(configFile, updated)
|
|
248
|
+
console.log(chalk.green(` ✓ Updated ${configFile} with base: './'`))
|
|
249
|
+
viteFixed = true
|
|
250
|
+
}
|
|
251
|
+
} else {
|
|
252
|
+
console.log(chalk.gray(` ✓ ${configFile} already has base config`))
|
|
253
|
+
viteFixed = true
|
|
254
|
+
}
|
|
255
|
+
break
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// No vite config found — create one
|
|
259
|
+
if (!viteFixed && fs.existsSync('package.json')) {
|
|
260
|
+
const pkg = fs.readJsonSync('package.json')
|
|
261
|
+
const hasVite = pkg.devDependencies?.vite || pkg.dependencies?.vite
|
|
262
|
+
if (hasVite) {
|
|
263
|
+
fs.writeFileSync('vite.config.js', `import { defineConfig } from 'vite'\n\nexport default defineConfig({\n base: './',\n})\n`)
|
|
264
|
+
console.log(chalk.green(" \u2713 Created vite.config.js with base: './'"))
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
224
268
|
console.log(chalk.green(`\n ✓ Created novacloud22.json`))
|
|
225
269
|
console.log(chalk.gray(` Site: ${FRONTEND_URL}/p/${answers.slug}`))
|
|
226
270
|
console.log(chalk.gray(` Run: novacloud22 deploy\n`))
|
|
@@ -269,7 +313,7 @@ program
|
|
|
269
313
|
spinner.text = `Uploading ${relativePath}...`
|
|
270
314
|
}
|
|
271
315
|
|
|
272
|
-
const res = await axios.post(`${
|
|
316
|
+
const res = await axios.post(`${SITES_API}/p/deploy`, form, {
|
|
273
317
|
headers: { ...headers, ...form.getHeaders() },
|
|
274
318
|
maxContentLength: Infinity,
|
|
275
319
|
maxBodyLength: Infinity,
|
|
@@ -301,7 +345,7 @@ program
|
|
|
301
345
|
const headers = authHeaders()
|
|
302
346
|
const spinner = ora('Fetching your sites...').start()
|
|
303
347
|
try {
|
|
304
|
-
const res = await axios.get(`${
|
|
348
|
+
const res = await axios.get(`${SITES_API}/p/my-sites`, { headers })
|
|
305
349
|
const sites = res.data.sites || []
|
|
306
350
|
spinner.stop()
|
|
307
351
|
|
|
@@ -398,7 +442,7 @@ program
|
|
|
398
442
|
|
|
399
443
|
const spinner = ora('Fetching status...').start()
|
|
400
444
|
try {
|
|
401
|
-
const res = await axios.get(`${
|
|
445
|
+
const res = await axios.get(`${SITES_API}/p/info/${config.slug}`, { headers })
|
|
402
446
|
spinner.stop()
|
|
403
447
|
const site = res.data
|
|
404
448
|
console.log(chalk.bold(` Site: /${site.slug}`))
|
|
@@ -440,7 +484,7 @@ program
|
|
|
440
484
|
|
|
441
485
|
program
|
|
442
486
|
.name('novacloud22')
|
|
443
|
-
.version('1.0.
|
|
487
|
+
.version('1.0.5')
|
|
444
488
|
.description('NovaCloud22 CLI — Deploy static sites')
|
|
445
489
|
|
|
446
490
|
program.parse(process.argv)
|