idraw/scripts/dev.js
2022-04-28 23:46:07 +08:00

60 lines
1.3 KiB
JavaScript

const { AutoComplete } = require('enquirer');
const chalk = require('chalk');
const { createServer, defineConfig } = require('vite');
const { resolvePackagePath } = require('./util/project');
const { packages } = require('./config');
dev();
async function dev() {
const pkgName = await inputPackageName();
const viteConfig = getViteConfig(pkgName);
const server = await createServer(viteConfig)
await server.listen()
server.printUrls();
const { port, host = '127.0.0.1' } = server.config?.server || {}
console.log(
`Open: ` +
chalk.green(
`http://${host}:${port}/index.html`
)
);
}
function getViteConfig(pkgName) {
const viteConfig = defineConfig({
configFile: false,
root: resolvePackagePath(pkgName),
publicDir: resolvePackagePath(pkgName, 'dev'),
server: {
port: 8080,
host: '127.0.0.1',
},
plugins: [],
esbuild: {
include: [
/\.ts$/,
/\.js$/,
],
exclude: [
/\.html$/
]
},
});
return viteConfig;
}
async function inputPackageName() {
choices = packages.map((pkg) => {
return pkg.dirName;
})
const prompt = new AutoComplete({
name: 'Package Name',
message: 'Pick your dev package',
limit: choices.length,
initial: 0,
choices: choices
});
const pkgName = await prompt.run();
return pkgName;
}