UNPKG

@lntvow/dev

Version:

Development environment dependencies package

3 lines (2 loc) 4.25 kB
#!/usr/bin/env node import{program as D}from"commander";var d="@lntvow/dev",f="5.3.11";import{resolve as w}from"path";import{readFileSync as C,writeFileSync as v}from"fs";import{fileURLToPath as b}from"url";import{program as z}from"commander";import{execSync as S}from"child_process";import{copyFileSync as $,existsSync as u,mkdirSync as x,readdirSync as j,statSync as E}from"fs";import{basename as P,resolve as p}from"path";import c from"picocolors";var i={info:e=>console.log(c.blue(`\u25CF ${e}`)),success:e=>console.log(c.green(`\u2713 ${e}`)),warn:e=>console.log(c.yellow(`\u25B2 ${e}`)),error:e=>console.log(c.red(`\u2717 ${e}`))};function l(e,t={}){try{return S(e,{stdio:"inherit",...t})}catch(n){throw i.error(`\u547D\u4EE4\u6267\u884C\u5931\u8D25: ${e}`),n}}function y(){let e=[{file:"pnpm-lock.yaml",manager:"pnpm"},{file:"yarn.lock",manager:"yarn"},{file:"package-lock.json",manager:"npm"}];for(let{file:n,manager:o}of e)if(u(p(process.cwd(),n)))return o;let t=process.env.npm_config_user_agent||"";return t.startsWith("pnpm")?"pnpm":t.startsWith("yarn")?"yarn":"npm"}function m(e,t){if(E(e).isDirectory()){if(P(e)==="node_modules")return;x(t,{recursive:!0}),j(e).forEach(o=>{m(p(e,o),p(t,o))})}else{if(u(t))return;$(e,t)}}var h={prepare:"simple-git-hooks",rimraf:"rimraf ./node_modules/",ncu:"ncu -u --reject @types/node && pnpm install",commit:"git add . && git-cz && git push",release:"git add . && bumpp package.json --all --no-tag --no-print-commits","lint:eslint":"eslint --fix --cache","lint:tsc":"tsc --noEmit",lint:"run-p lint:eslint lint:tsc"},k=["@commitlint/cli","@commitlint/config-conventional","@lntvow/eslint-config","bumpp","commitizen","cz-conventional-changelog","eslint","lint-staged","npm-run-all","prettier","simple-git-hooks","typescript"].sort((e,t)=>e.localeCompare(t));z.command("init").option("-t, --temp","copy template files",!0).option("--no-temp","not copy template files").option("-s, --scripts","init scripts",!0).option("--no-scripts","not init scripts").option("-g, --git","init simple-git-hooks",!0).option("--no-git","not init simple-git-hooks").description("init project").action(I);function I(e){i.success("Init project by @lntvow/dev"),i.info(`Cwd is ${process.cwd()}`);let{temp:t,git:n,scripts:o}=e;try{t&&M(),_(),o&&T(),n&&F(),i.success("Project initialization completed successfully!")}catch(a){i.error(`Initialization failed: ${a.message}`),process.exit(1)}}function M(){try{let e=w(b(new URL("./configs",import.meta.url))),t=process.cwd();i.info(`Copying template files from "${e}" to "${t}"`),m(e,t),i.success("Template files copied successfully")}catch(e){throw i.error(`Failed to copy template files: ${e.message}`),e}}function F(){try{i.info("Initializing Git hooks..."),l("npx simple-git-hooks"),i.success("Git hooks initialized successfully")}catch(e){throw i.error(`Failed to initialize Git hooks: ${e.message}`),e}}function T(){let e,t=w(process.cwd(),"package.json");try{i.info("Updating package.json scripts..."),e=C(t,"utf-8");let n=JSON.parse(e),o={...n,scripts:{...h,...n.scripts}};v(t,JSON.stringify(o,null,2)),i.success("Package.json scripts updated successfully")}catch(n){throw e&&v(t,e),i.error(`Failed to update package.json: ${n.message}`),n}}function _(){try{let e=k.map(a=>`${a}@latest`).join(" "),t=y(),o={pnpm:`pnpm add -D ${e}`,yarn:`yarn add -D ${e}`,npm:`npm install -D ${e}`}[t];i.info(`Installing dependencies: ${o}`),l(o),i.success("Dependencies installed successfully")}catch(e){throw i.error(`Dependency installation failed: ${e.message}`),e}}import{program as R}from"commander";import G from"picocolors";import N from"dayjs";import O from"simple-git";R.command("release").description("git release").action(U);async function U(){console.log(G.green("Release project..."));try{await L(),i.success("Release completed successfully!")}catch(e){i.error(`Release failed: ${e.message}`),process.exit(1)}}async function L(){let e=O(process.cwd());try{let t=N().format("YYYYMMDD");await e.pull(),await e.add("."),await e.commit(t,["--no-verify"]),await e.push("origin"),i.success(`\u63D0\u4EA4\u6210\u529F: ${t}`)}catch(t){i.error(`Git\u64CD\u4F5C\u5931\u8D25: ${t.message}`),process.exit(1)}}D.name(d).version(f,"-v, --version","output the version number");D.parse();