1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import chalk from 'chalk';
- import Koa from 'koa';
- import inquirer from 'inquirer';
- import staticServer from 'koa-static';
- import portfinder from 'portfinder';
- import { resolve } from 'path';
- import viteConfig from '../../vite.config';
- import { getIPAddress } from '../utils';
- import { runBuild } from './build';
- const BUILD = 1;
- const NO_BUILD = 2;
- // start server
- const startApp = () => {
- const port = 9680;
- portfinder.basePort = port;
- const app = new Koa();
- app.use(staticServer(resolve(process.cwd(), viteConfig.outDir || 'dist')));
- portfinder.getPort(async (err, port) => {
- if (err) {
- throw err;
- } else {
- app.listen(port, function () {
- const empty = ' ';
- const common = `The preview program is already running:
- - LOCAL: http://localhost:${port}/
- - NETWORK: http://${getIPAddress()}:${port}/
- `;
- console.log(chalk.cyan('\n' + empty + common));
- });
- }
- });
- };
- export const runPreview = async () => {
- const prompt = inquirer.prompt({
- type: 'list',
- message: 'Please select a preview method',
- name: 'type',
- choices: [
- {
- name: 'Preview after packaging',
- value: BUILD,
- },
- {
- name: `No packaging, preview directly (need to have dist file after packaging)`,
- value: NO_BUILD,
- },
- ],
- });
- const { type } = await prompt;
- if (type === BUILD) {
- await runBuild();
- }
- startApp();
- };
|