@lntvow/dev 6.3.0 → 6.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/cli.mjs +1 -1
- package/dist/main-wW69u2gl.mjs +5 -0
- package/package.json +1 -1
- package/dist/main-BIi5AhnC.mjs +0 -5
package/README.md
CHANGED
|
@@ -61,6 +61,8 @@ Options:
|
|
|
61
61
|
| `--no-scripts` | Skip updating `package.json` scripts |
|
|
62
62
|
| `--pm <pnpm\|yarn\|npm>` | Package manager; auto-detected from the lockfile / `npm_config_user_agent`, otherwise prompted |
|
|
63
63
|
|
|
64
|
+
The generated `upgrade`, `prerelease` and `version` scripts use the selected package manager; the optional test step always uses `npm run --if-present test`.
|
|
65
|
+
|
|
64
66
|
Files copied when missing:
|
|
65
67
|
|
|
66
68
|
```
|
package/dist/cli.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
(e=>e.major>22||e.major===22&&e.minor>=0)((e=>{let[t=`0`,n=`0`]=e.split(`.`);return{major:Number(t),minor:Number(n)}})(process.versions.node))||(process.stderr.write(`@lntvow/dev: Node.js v22.0+ is required (current: v${process.versions.node}).\nIf you use nvm, run:\n nvm install 22\n nvm use 22\n nvm alias default 22\n`),process.exit(1)),import(`./main-
|
|
2
|
+
(e=>e.major>22||e.major===22&&e.minor>=0)((e=>{let[t=`0`,n=`0`]=e.split(`.`);return{major:Number(t),minor:Number(n)}})(process.versions.node))||(process.stderr.write(`@lntvow/dev: Node.js v22.0+ is required (current: v${process.versions.node}).\nIf you use nvm, run:\n nvm install 22\n nvm use 22\n nvm alias default 22\n`),process.exit(1)),import(`./main-wW69u2gl.mjs`);export{};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{Option as e,program as t}from"commander";import{isCancel as n,select as r}from"@clack/prompts";import{execFileSync as i}from"node:child_process";import{copyFileSync as a,existsSync as o,lstatSync as s,mkdirSync as c,readFileSync as l,readdirSync as u,rmSync as d,rmdirSync as f,writeFileSync as p}from"node:fs";import{basename as m,dirname as h,relative as g,resolve as _}from"node:path";import v from"picocolors";import{fileURLToPath as y}from"node:url";import b from"simple-git";var x=`@lntvow/dev`,S=`6.4.0`;const C={gitignore:`.gitignore`,npmrc:`.npmrc`},w={info:e=>console.log(v.blue(`● ${e}`)),success:e=>console.log(v.green(`✓ ${e}`)),warn:e=>console.log(v.yellow(`▲ ${e}`)),error:e=>console.error(v.red(`✗ ${e}`))};function T(e,t){let n=e instanceof Error?e.message:String(e);w.error(t?`${t}: ${n}`:n),process.exitCode=1}function E(e,t,n={}){return i(e,t,{stdio:`inherit`,shell:process.platform===`win32`,...n})}async function D(){for(let{file:e,manager:t}of[{file:`pnpm-lock.yaml`,manager:`pnpm`},{file:`yarn.lock`,manager:`yarn`},{file:`package-lock.json`,manager:`npm`}])if(o(_(process.cwd(),e)))return t;let e=process.env.npm_config_user_agent||``;return e.startsWith(`pnpm`)?`pnpm`:e.startsWith(`yarn`)?`yarn`:e.startsWith(`npm`)?`npm`:O()}async function O(){if(!process.stdin.isTTY)throw Error(`No lock file found and stdin is not interactive. Pass --pm <pnpm|yarn|npm>.`);let e=await r({message:`No lock file found. Please select a package manager`,options:[{label:`pnpm`,value:`pnpm`},{label:`yarn`,value:`yarn`},{label:`npm`,value:`npm`}],initialValue:`pnpm`});if(n(e))throw Error(`Package manager selection canceled.`);return e}function k(e,t,n={created:[],skipped:[]}){let r=s(e);if(r.isSymbolicLink())throw Error(`Template contains a symbolic link, which is not supported: ${e}`);if(r.isDirectory()){if(m(e)===`node_modules`)return n;c(t,{recursive:!0}),u(e).forEach(r=>{k(_(e,r),_(t,r),n)})}else{let r=_(h(t),C[m(t)]??m(t));if(o(r))return n.skipped.push(r),n;a(e,r),n.created.push(r)}return n}function A(e){return{prepare:`cli hooks`,rimraf:`cli rimraf ./node_modules/`,upgrade:`cli upgrade -u -x "@types/node" && ${e} install`,tidy:`cli tidy`,commit:`git add -A && cli commit`,prerelease:`${e} run lint && npm run --if-present test`,release:`git add -A && cli release -r -a`,changelog:`cli changelog -p angular -i CHANGELOG.md -s`,version:`${e} run changelog && git add -A`,"lint:eslint":`eslint --fix --cache`,"lint:tsc":`tsc --noEmit`,lint:`cli run lint:eslint lint:tsc`}}const j=[[`@lntvow/cli`,`latest`],[`@lntvow/eslint-config`,`latest`],[`eslint`,`latest`],[`prettier`,`latest`],[`typescript`,`6.x`]];function M(t){t.command(`init`).description(`init project`).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`).addOption(new e(`--pm <manager>`,`package manager (auto-detect from lockfile/userAgent; prompt if ambiguous)`).choices([`pnpm`,`yarn`,`npm`])).action(N)}async function N(e){w.success(`Init project by @lntvow/dev`),w.info(`Cwd is ${process.cwd()}`);let{temp:t,scripts:n,pm:r}=e,i={created:[],skipped:[]},a=null;try{let e=r??await D();a=P(),t&&I(i),B(e),n&&R(e),w.success(`Project initialization completed successfully!`)}catch(e){L(i.created),F(a),T(e,`Initialization failed`)}}function P(){let e=_(process.cwd(),`package.json`);if(o(e))return null;let t=m(process.cwd()).toLowerCase().replace(/[^a-z0-9._-]+/g,`-`).replace(/^[-.]+|[-.]+$/g,``)||`project`,n=`${JSON.stringify({name:t,version:`0.0.0`},null,2)}\n`;return p(e,n),w.info(`Created package.json for "${t}"`),n}function F(e){if(!e)return;let t=_(process.cwd(),`package.json`);o(t)&&l(t,`utf8`)===e&&(d(t,{force:!0}),w.warn(`Rolled back generated package.json`))}function I(e){let t=y(new URL(`./configs`,import.meta.url)),n=process.cwd();w.info(`Copying template files from "${t}" to "${n}"`),k(t,n,e);for(let t of e.created)w.info(` created ${g(n,t)}`);for(let t of e.skipped)w.warn(` skipped ${g(n,t)} (already exists)`);w.success(`Template files copied (${e.created.length} created, ${e.skipped.length} skipped)`)}function L(e){if(e.length!==0){for(let t of e){d(t,{force:!0});let e=h(t);if(e!==process.cwd())try{f(e)}catch{}}w.warn(`Rolled back ${e.length} copied template file(s)`)}}function R(e){let t,n=_(process.cwd(),`package.json`);try{w.info(`Updating package.json scripts...`),t=l(n,`utf-8`);let r=JSON.parse(t),i={...r,scripts:{...A(e),...r.scripts}};p(n,z(i,t)),w.success(`Package.json scripts updated successfully`)}catch(e){throw t&&p(n,t),e}}function z(e,t){let n=/^([ \t]+)"/m.exec(t)?.[1],r=t.includes(`\r
|
|
2
|
+
`)?`\r
|
|
3
|
+
`:`
|
|
4
|
+
`;return(n?JSON.stringify(e,null,n):JSON.stringify(e)).replaceAll(`
|
|
5
|
+
`,r)+(/\r?\n$/.test(t)?r:``)}function B(e){let t=j.map(([e,t])=>`${e}@${t}`),{command:n,args:r}={pnpm:{command:`pnpm`,args:[`add`,`-D`,...t]},yarn:{command:`yarn`,args:[`add`,`-D`,...t]},npm:{command:`npm`,args:[`install`,`-D`,...t]}}[e];w.info(`Installing dependencies: ${n} ${r.join(` `)}`),E(n,r),w.success(`Dependencies installed successfully`)}function V(e){e.command(`release`).description(`git release`).action(H)}async function H(){console.log(v.green(`Release project...`));try{await U(),w.success(`Release completed successfully!`)}catch(e){T(e,`Release failed`)}}async function U(){let e=b(process.cwd()),t=W(/* @__PURE__ */ new Date);await e.pull(),await e.add(`.`),await e.commit(t,[`--no-verify`]),await e.push(`origin`),w.success(`Committed: ${t}`)}function W(e){return`${e.getFullYear()}${String(e.getMonth()+1).padStart(2,`0`)}${String(e.getDate()).padStart(2,`0`)}`}t.name(x).version(S,`-v, --version`,`output the version number`),M(t),V(t),t.parseAsync().catch(T);export{};
|
package/package.json
CHANGED
package/dist/main-BIi5AhnC.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{Option as e,program as t}from"commander";import{isCancel as n,select as r}from"@clack/prompts";import{execFileSync as i}from"node:child_process";import{copyFileSync as a,existsSync as o,lstatSync as s,mkdirSync as c,readFileSync as l,readdirSync as u,rmSync as d,rmdirSync as f,writeFileSync as p}from"node:fs";import{basename as m,dirname as h,relative as g,resolve as _}from"node:path";import v from"picocolors";import{fileURLToPath as y}from"node:url";import b from"simple-git";var x=`@lntvow/dev`,S=`6.3.0`;const C={gitignore:`.gitignore`,npmrc:`.npmrc`},w={info:e=>console.log(v.blue(`● ${e}`)),success:e=>console.log(v.green(`✓ ${e}`)),warn:e=>console.log(v.yellow(`▲ ${e}`)),error:e=>console.error(v.red(`✗ ${e}`))};function T(e,t){let n=e instanceof Error?e.message:String(e);w.error(t?`${t}: ${n}`:n),process.exitCode=1}function E(e,t,n={}){return i(e,t,{stdio:`inherit`,shell:process.platform===`win32`,...n})}async function D(){for(let{file:e,manager:t}of[{file:`pnpm-lock.yaml`,manager:`pnpm`},{file:`yarn.lock`,manager:`yarn`},{file:`package-lock.json`,manager:`npm`}])if(o(_(process.cwd(),e)))return t;let e=process.env.npm_config_user_agent||``;return e.startsWith(`pnpm`)?`pnpm`:e.startsWith(`yarn`)?`yarn`:e.startsWith(`npm`)?`npm`:O()}async function O(){if(!process.stdin.isTTY)throw Error(`No lock file found and stdin is not interactive. Pass --pm <pnpm|yarn|npm>.`);let e=await r({message:`No lock file found. Please select a package manager`,options:[{label:`pnpm`,value:`pnpm`},{label:`yarn`,value:`yarn`},{label:`npm`,value:`npm`}],initialValue:`pnpm`});if(n(e))throw Error(`Package manager selection canceled.`);return e}function k(e,t,n={created:[],skipped:[]}){let r=s(e);if(r.isSymbolicLink())throw Error(`Template contains a symbolic link, which is not supported: ${e}`);if(r.isDirectory()){if(m(e)===`node_modules`)return n;c(t,{recursive:!0}),u(e).forEach(r=>{k(_(e,r),_(t,r),n)})}else{let r=_(h(t),C[m(t)]??m(t));if(o(r))return n.skipped.push(r),n;a(e,r),n.created.push(r)}return n}const A={prepare:`cli hooks`,rimraf:`cli rimraf ./node_modules/`,upgrade:`cli upgrade -u -x "@types/node" && pnpm install`,tidy:`cli tidy`,commit:`git add -A && cli commit`,prerelease:`pnpm lint && pnpm run --if-present test`,release:`git add -A && cli release -r -a`,changelog:`cli changelog -p angular -i CHANGELOG.md -s`,version:`pnpm changelog && git add -A`,"lint:eslint":`eslint --fix --cache`,"lint:tsc":`tsc --noEmit`,lint:`cli run lint:eslint lint:tsc`},j=[`@lntvow/cli`,`@lntvow/eslint-config`,`eslint`,`prettier`,`typescript`].sort((e,t)=>e.localeCompare(t));function M(t){t.command(`init`).description(`init project`).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`).addOption(new e(`--pm <manager>`,`package manager (auto-detect from lockfile/userAgent; prompt if ambiguous)`).choices([`pnpm`,`yarn`,`npm`])).action(N)}async function N(e){w.success(`Init project by @lntvow/dev`),w.info(`Cwd is ${process.cwd()}`);let{temp:t,scripts:n,pm:r}=e,i={created:[],skipped:[]},a=null;try{a=P(),t&&I(i),await B(r),n&&R(),w.success(`Project initialization completed successfully!`)}catch(e){L(i.created),F(a),T(e,`Initialization failed`)}}function P(){let e=_(process.cwd(),`package.json`);if(o(e))return null;let t=m(process.cwd()).toLowerCase().replace(/[^a-z0-9._-]+/g,`-`).replace(/^[-.]+|[-.]+$/g,``)||`project`,n=`${JSON.stringify({name:t,version:`0.0.0`},null,2)}\n`;return p(e,n),w.info(`Created package.json for "${t}"`),n}function F(e){if(!e)return;let t=_(process.cwd(),`package.json`);o(t)&&l(t,`utf8`)===e&&(d(t,{force:!0}),w.warn(`Rolled back generated package.json`))}function I(e){let t=y(new URL(`./configs`,import.meta.url)),n=process.cwd();w.info(`Copying template files from "${t}" to "${n}"`),k(t,n,e);for(let t of e.created)w.info(` created ${g(n,t)}`);for(let t of e.skipped)w.warn(` skipped ${g(n,t)} (already exists)`);w.success(`Template files copied (${e.created.length} created, ${e.skipped.length} skipped)`)}function L(e){if(e.length!==0){for(let t of e){d(t,{force:!0});let e=h(t);if(e!==process.cwd())try{f(e)}catch{}}w.warn(`Rolled back ${e.length} copied template file(s)`)}}function R(){let e,t=_(process.cwd(),`package.json`);try{w.info(`Updating package.json scripts...`),e=l(t,`utf-8`);let n=JSON.parse(e),r={...n,scripts:{...A,...n.scripts}};p(t,z(r,e)),w.success(`Package.json scripts updated successfully`)}catch(n){throw e&&p(t,e),n}}function z(e,t){let n=/^([ \t]+)"/m.exec(t)?.[1],r=t.includes(`\r
|
|
2
|
-
`)?`\r
|
|
3
|
-
`:`
|
|
4
|
-
`;return(n?JSON.stringify(e,null,n):JSON.stringify(e)).replaceAll(`
|
|
5
|
-
`,r)+(/\r?\n$/.test(t)?r:``)}async function B(e){let t=j.map(e=>`${e}@latest`),n=e??await D(),{command:r,args:i}={pnpm:{command:`pnpm`,args:[`add`,`-D`,...t]},yarn:{command:`yarn`,args:[`add`,`-D`,...t]},npm:{command:`npm`,args:[`install`,`-D`,...t]}}[n];w.info(`Installing dependencies: ${r} ${i.join(` `)}`),E(r,i),w.success(`Dependencies installed successfully`)}function V(e){e.command(`release`).description(`git release`).action(H)}async function H(){console.log(v.green(`Release project...`));try{await U(),w.success(`Release completed successfully!`)}catch(e){T(e,`Release failed`)}}async function U(){let e=b(process.cwd()),t=W(/* @__PURE__ */ new Date);await e.pull(),await e.add(`.`),await e.commit(t,[`--no-verify`]),await e.push(`origin`),w.success(`Committed: ${t}`)}function W(e){return`${e.getFullYear()}${String(e.getMonth()+1).padStart(2,`0`)}${String(e.getDate()).padStart(2,`0`)}`}t.name(x).version(S,`-v, --version`,`output the version number`),M(t),V(t),t.parseAsync().catch(T);export{};
|