UNPKG

infly-libs

Version:

工具组件库

76 lines (65 loc) 2.38 kB
const fs = require("fs"); const path = require("path"); const { execSync } = require("child_process"); const { scriptWrite } = require("./file-process.js"); const { previewList } = require("../script/dataInit.js"); const projectRoot = process.cwd().replace(/\\node_modules.*$/g, ""); const projectPkgPath = path.resolve(projectRoot, "package.json"); const projectVueConfigPath = path.resolve(projectRoot, "vue.config.js"); const projectConfig = fs.existsSync(projectVueConfigPath) ? require(projectVueConfigPath) : {}; const rawArgv = process.argv.slice(2); const args = rawArgv.join(" "); const DEFAULT_CONFIG = { port: 9001, publicPath: "/", outputDir: "dist" }; function scriptInit() { if (fs.existsSync(projectVueConfigPath)) { return; } scriptWrite(projectPkgPath, previewList); } function init(skipBuild = false) { try { const { connect } = require("../lib/server/connect"); const { serveStatic } = require("../lib/server/serve-static"); const app = connect(); const noBuild = skipBuild || rawArgv.includes("--no-build"); const { devServer } = projectConfig || {}; const { port: devServerPort } = devServer || {}; projectConfig.port = devServerPort || DEFAULT_CONFIG.port; const { publicPath, outputDir, port } = { ...DEFAULT_CONFIG, ...projectConfig }; const listenPort = port - 1000; if (!noBuild) { buildProject(); } app.use( publicPath, serveStatic(outputDir, { index: ["index.html", "/"] }) ); app.listen(listenPort, function () { console.log(global.logColor.success, `🚀 项目构建预览,CTRL + C结束:`); console.log(global.logColor.link, `http://localhost:${listenPort}${publicPath}`); }); } catch (error) { console.log(global.logColor.error, `❌ 预览项目失败:${error.message}`); } } function buildProject() { try { execSync(`vue-cli-service build ${args}`, { stdio: "inherit" }); } catch (err) { console.error(global.logColor.error, "❌ 构建失败:", err.message); process.exit(1); } } module.exports = { init, scriptInit };