UNPKG

zyk-cli

Version:

生成 React 或 Vue初始代码,生成 webpack 配置,以及配置 webpack 优化项

69 lines (62 loc) 2.4 kB
import path from "node:path"; import { fileURLToPath } from "node:url"; import fs from "fs-extra"; import { write } from "utils/file"; import Options from "utils/options"; import Package from "utils/package"; import initBaseConfig from "./initWebpackConfig/initBase"; import initDevConfig from "./initWebpackConfig/initDev"; import initProdConfig from "./initWebpackConfig/initProd"; const opts = Options.getInstance(); const pkg = Package.getInstance(); export const generateTemplate = () => { const templatePath = path.resolve( fileURLToPath(import.meta.url), "../../", `templates/${opts.get("type")}` ); opts.set("templatePath", templatePath); const files = fs.readdirSync(templatePath); for (const file of files.filter((f) => f)) { if (file === "package.json") { const templatePackage = fs.readJsonSync( path.join(opts.get("templatePath"), file), "utf-8" ); const currentPackage = pkg.get(); for (const [k, v] of Object.entries(templatePackage)) { if (["dependencies", "devDependencies"].includes(k)) pkg.set(k, { ...currentPackage[k], ...(typeof v === "object" ? v : {}), }); } } else { write(file); } } }; export const generateWebpackConfig = () => { pkg.set("scripts", { "dev:dev": "cross-env NODE_ENV=development BASE_ENV=development webpack-dev-server -c build/webpack.dev.js", "dev:test": "cross-env NODE_ENV=development BASE_ENV=test webpack-dev-server -c build/webpack.dev.js", "dev:pre": "cross-env NODE_ENV=development BASE_ENV=pre webpack-dev-server -c build/webpack.dev.js", "dev:prod": "cross-env NODE_ENV=development BASE_ENV=production webpack-dev-server -c build/webpack.dev.js", "build:dev": "cross-env NODE_ENV=production BASE_ENV=development webpack -c build/webpack.prod.js", "build:test": "cross-env NODE_ENV=production BASE_ENV=test webpack -c build/webpack.prod.js", "build:pre": "cross-env NODE_ENV=production BASE_ENV=pre webpack -c build/webpack.prod.js", "build:prod": "cross-env NODE_ENV=production BASE_ENV=production webpack -c build/webpack.prod.js", }); fs.mkdir(path.resolve(opts.get("base"), "build")); initBaseConfig(); initDevConfig(); initProdConfig(); };