UNPKG

create-mellowtel-extension

Version:

Create a new Mellowtel browser extension with one command

85 lines (71 loc) • 2.81 kB
#!/usr/bin/env node const fs = require('fs'); const path = require('path'); const { execSync } = require('child_process'); const inquirer = require('inquirer'); async function main() { try { // Get project name and template choice using inquirer const answers = await inquirer.prompt([ { type: 'input', name: 'projectName', message: 'What is your extension name?', validate: input => input.trim().length > 0 || 'Project name is required' }, { type: 'list', name: 'template', message: 'Choose a template:', choices: [ { name: '⚔ Vanilla - Basic webpack-based extension', value: 'vanilla' }, { name: 'šŸš€ Plasmo - React-based extension with TypeScript', value: 'plasmo' }, { name: 'āš›ļø WXT - Vue.js-based extension with TypeScript', value: 'wxt' } ], default: 'vanilla' }, { type: 'input', name: 'configKey', message: 'Enter your Mellowtel configuration key:', validate: input => input.trim().length > 0 || 'Mellowtel configuration key is required' } ]); const { projectName, template, configKey } = answers; const projectDir = path.join(process.cwd(), projectName); // Create project directory console.log(`\nCreating new Mellowtel extension in ${projectDir} using ${template} template...`); fs.mkdirSync(projectDir, { recursive: true }); // Copy template files const templateDir = path.join(__dirname, '..', 'templates', template); fs.cpSync(templateDir, projectDir, { recursive: true }); // Create .env file with config key const envContent = template === 'plasmo' ? `PLASMO_PUBLIC_MELLOWTEL="${configKey}"` : template === 'wxt' ? `VITE_MELLOWTEL_CONFIG_KEY="${configKey}"` : `MELLOWTEL_CONFIG_KEY="${configKey}"`; fs.writeFileSync(path.join(projectDir, '.env'), envContent); // Change to project directory process.chdir(projectDir); // Install dependencies console.log('\nInstalling dependencies...'); execSync('npm install', { stdio: 'inherit' }); // Success message with next steps console.log('\nšŸŽ‰ Successfully created Mellowtel extension!'); console.log('\nNext steps:'); console.log(`1. cd ${projectName}`); if (template === 'vanilla') { console.log('2. npm run watch # Start development mode'); } else if (template === 'plasmo') { console.log('2. npm run dev # Start Plasmo development server'); } else if (template === 'wxt') { console.log('2. npm run dev # Start WXT development server'); } console.log('\nHappy coding! šŸš€'); } catch (error) { console.error('Error:', error); process.exit(1); } } main();