@mega-apps/cli
Version:
Mom builder for all mega modules apps. The recommended basic operation dependency package is attached, and users can check and repair defects in actual applications.
103 lines (91 loc) • 2.52 kB
JavaScript
/**
* 参照 node_modules\@vue\cli-service\bin\vue-cli-service.js 源码
* 调用vue-cli-service 启动服务
*/
// -----------------------------------------------
// mom-vue components process
try {
const path = require("path");
const fs = require("fs-extra");
const fg = require("fast-glob");
const megaAppsRootDir = path.join(__dirname, "../../");
const componentDestDir = path.join(__dirname, "../src/_mom/components");
const foundMegaMomComponents = fg.sync(
[`**/mom-vue-component-**`, `!${componentDestDir}/**`],
{
cwd: megaAppsRootDir,
dot: true,
onlyDirectories: true,
absolute: true,
}
);
// empty the directory
fs.emptyDirSync(componentDestDir);
// copy files/dirs to `component dir`
foundMegaMomComponents.forEach((src) =>
fs.copySync(src, path.join(componentDestDir, path.basename(src)))
);
} catch (e) {
console.error(e);
process.exit(1);
}
// -----------------------------------------------
// vue-cli-service
const { semver, error, warn, isPlugin } = require("@vue/cli-shared-utils");
const requiredVersion = require("../package.json").engines.node;
if (
!semver.satisfies(process.version, requiredVersion, {
includePrerelease: true,
})
) {
error(
`You are using Node ${process.version}, but vue-cli-service ` +
`requires Node ${requiredVersion}.\nPlease upgrade your Node version.`
);
process.exit(1);
}
const Service = require("@vue/cli-service");
const service = new Service(process.env.VUE_CLI_CONTEXT || process.cwd(), {
// 注意:这里要特别使用指定的插件,不使用默认值,不需要在应用工程中,加入可选依赖
plugins: [
"@vue/cli-plugin-babel",
"@vue/cli-plugin-eslint",
"@vue/cli-plugin-router",
"@vue/cli-plugin-vuex",
"@vue/cli-plugin-typescript",
"@vue/cli-plugin-pwa",
]
.filter(isPlugin)
.map((id) => {
let apply = () => {};
try {
apply = require(id);
} catch (e) {
warn(`Optional dependency ${id} is not installed.`);
}
return { id, apply };
}),
});
const rawArgv = process.argv.slice(2);
const args = require("minimist")(rawArgv, {
boolean: [
// build
"modern",
"report",
"report-json",
"inline-vue",
"watch",
// serve
"open",
"copy",
"https",
// inspect
"verbose",
],
});
const command = args._[0];
service.run(command, args, rawArgv).catch((err) => {
error(err);
process.exit(1);
});