tess-framework
Version:
Lightweight TypeScript/Rust full-stack framework with Vue 3 + Vite
83 lines • 3.5 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.publishCommand = publishCommand;
const chalk_1 = __importDefault(require("chalk"));
const cross_spawn_1 = __importDefault(require("cross-spawn"));
const path_1 = __importDefault(require("path"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const ora_1 = __importDefault(require("ora"));
async function publishCommand(options) {
const projectRoot = process.cwd();
const mvTessPath = path_1.default.join(projectRoot, 'm.v.tess');
const systemDir = path_1.default.join(projectRoot, '.v', 'system');
if (!await fs_extra_1.default.pathExists(mvTessPath)) {
console.error(chalk_1.default.red('✖ Not a Tess project. Run "tess init" first.'));
process.exit(1);
}
const platform = options.platform || 'vercel';
console.log(chalk_1.default.cyan(`🚀 Publishing to ${platform}...`));
let spinner = (0, ora_1.default)('Checking dependencies...').start();
try {
const nodeModulesExists = await fs_extra_1.default.pathExists(path_1.default.join(systemDir, 'node_modules'));
if (!nodeModulesExists) {
spinner.text = 'Installing dependencies...';
await new Promise((resolve, reject) => {
const installProcess = (0, cross_spawn_1.default)('npm', ['install'], {
stdio: 'pipe',
cwd: systemDir,
shell: true
});
installProcess.on('close', (code) => {
if (code === 0) {
resolve(code);
}
else {
reject(new Error(`npm install failed with code ${code}`));
}
});
installProcess.on('error', reject);
});
}
spinner.succeed('Dependencies ready');
spinner.start('Building project...');
await new Promise((resolve, reject) => {
const buildProcess = (0, cross_spawn_1.default)('npm', ['run', 'build'], {
stdio: 'pipe',
cwd: systemDir,
shell: true
});
buildProcess.on('close', (code) => {
if (code === 0)
resolve(code);
else
reject(new Error(`Build failed with code ${code}`));
});
});
spinner.succeed('Project built successfully');
spinner.start(`Deploying to ${platform}...`);
const deployCmd = platform === 'netlify' ? 'netlify' : 'vercel';
await new Promise((resolve, reject) => {
const deployProcess = (0, cross_spawn_1.default)(deployCmd, ['deploy', '--prod'], {
stdio: 'inherit',
cwd: projectRoot,
shell: true
});
deployProcess.on('close', (code) => {
if (code === 0)
resolve(code);
else
reject(new Error(`Deploy failed with code ${code}`));
});
});
spinner.succeed(`Deployed to ${platform} successfully!`);
}
catch (error) {
spinner.fail('Publish failed');
console.error(chalk_1.default.red(error));
process.exit(1);
}
}
//# sourceMappingURL=publish.js.map
;