mirror of
https://github.com/idrawjs/idraw
synced 2026-05-24 10:08:34 +00:00
60 lines
1.3 KiB
JavaScript
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;
|
|
}
|