New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More

@clamjs/configurator

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@clamjs/configurator - npm Package Compare versions

Comparing version

to
0.0.1-beta.3

@@ -1,22 +0,21 @@

import { checkbox } from '@inquirer/prompts';
import c from '@clamjs/logger';
import p from 'fs';
import r from 'path';
import h from 'url';
import f, { multiselect, tasks } from '@clamjs/logger';
import m from 'fs';
import o from 'path';
import C from 'url';
import { getLatestVersions } from '@clamjs/utils/npm';
import { isEmptyObject } from '@clamjs/utils/type';
import v from 'ini';
import H from 'ini';
import { create as create$1 } from 'mem-fs';
import { create } from 'mem-fs-editor';
import { readPackageSync, readPackage } from 'read-pkg';
import w from 'shelljs';
import k from 'shelljs';
import { removePackageDependencies, addPackageDependencies, updatePackage } from 'write-package';
var z={cwd:process.cwd(),isOldProject:!0},s=z;var D=e=>p.existsSync(r.join(s.cwd,e)),x=()=>D("turbo.json")?"turbo":D("lerna.json")?"lerna":D("pnpm-workspace.yaml")?"pnpm":"unknown",m=()=>x()!=="unknown",X=()=>{let e=readPackageSync({cwd:s.cwd});return e.dependencies?.react||e.devDependencies?.react||e.peerDependencies?.react||e.dependencies?.["@ali/pocket"]},Z=()=>{let e=readPackageSync({cwd:s.cwd});return e.dependencies?.jest||e.devDependencies?.jest||e.dependencies?.vitest||e.devDependencies?.vitest},F=e=>e.includes("lint-staged")||e.includes("commitlint"),O=()=>{let e=r.join(s.cwd,"packages");return p.readdirSync(e).map(t=>r.join(e,t))},H=()=>readPackageSync({cwd:s.cwd}).tnpm?"tnpm":"pnpm",ee=e=>{if(!s.isOldProject)return;let n=r.join(s.cwd,".gitignore"),t=p.readFileSync(n,"utf-8");e.forEach(i=>{t=t.replaceAll(i,"");}),t=t.replaceAll(`
var V={cwd:process.cwd(),isOldProject:!0},n=V;var w=e=>m.existsSync(o.join(n.cwd,e)),y=()=>w("turbo.json")?"turbo":w("lerna.json")?"lerna":w("pnpm-workspace.yaml")?"pnpm":"unknown",c=()=>y()!=="unknown",D=()=>{let e=readPackageSync({cwd:n.cwd});return e.dependencies?.react||e.devDependencies?.react||e.peerDependencies?.react||e.dependencies?.["@ali/pocket"]},F=()=>{let e=readPackageSync({cwd:n.cwd});return e.dependencies?.jest||e.devDependencies?.jest||e.dependencies?.vitest||e.devDependencies?.vitest},T=e=>e.includes("lint-staged")||e.includes("commitlint"),P=()=>{let e=o.join(n.cwd,"packages");return m.readdirSync(e).map(t=>o.join(e,t))},S=()=>readPackageSync({cwd:n.cwd}).tnpm?"tnpm":"pnpm",O=e=>{if(!n.isOldProject)return;let i=o.join(n.cwd,".gitignore"),t=m.readFileSync(i,"utf-8");e.forEach(s=>{t=t.replaceAll(s,"");}),t=t.replaceAll(`
`,`
`),p.writeFileSync(n,t);},$=()=>{readPackageSync({cwd:s.cwd}).name||c.fatal("\u5F53\u524D\u76EE\u5F55\u6CA1\u6709\u627E\u5230 package.json, \u8BF7\u5728\u6B63\u786E\u7684\u76EE\u5F55\u6267\u884C\u547D\u4EE4");},J=e=>{if(H()!=="pnpm"||!e?.length)return;let n=Date.now(),t=c.loading("\u914D\u7F6E .npmrc").start(),i=r.join(s.cwd,".npmrc");p.existsSync(i)||p.writeFileSync(i,"");let o=v.parse(p.readFileSync(i,"utf-8")),a=o["public-hoist-pattern"]??[];o["public-hoist-pattern"]=[...new Set([...a,...e])],p.writeFileSync(i,v.stringify(o,{newline:!0,whitespace:!0})),t.suffixText=c.dim(`${Date.now()-n}ms`),t.succeed();},T=(e,n)=>!e||isEmptyObject(e)?[]:Object.keys(e).filter(t=>n.some(i=>t.includes(i))),S=async(e,n=s.cwd)=>{let t=await readPackage({cwd:n}),i=T(t.dependencies,e),o=T(t.devDependencies,e);await removePackageDependencies(n,{dependencies:i,devDependencies:o});},E=async e=>{if(m())return Promise.all(O().map(async n=>S(e,n)))},M=async e=>{let n=[];Object.entries(e).forEach(([t,i])=>{i==="latest"?n.push(t):e[t]=i;}),Object.assign(e,await getLatestVersions(n)),await addPackageDependencies(s.cwd,{devDependencies:e});},j=async(e,n=s.cwd)=>{isEmptyObject(e)||await updatePackage(n,{scripts:e});},R=async e=>{if(m())return Promise.all(O().map(async n=>j(e,n)))},L=()=>{let e=Date.now(),n=c.loading("\u914D\u7F6E .vscode").start(),t=r.join(h.fileURLToPath(import.meta.url),"../../vscode-config-files"),i=r.join(s.cwd,".vscode");w.mkdir("-p",i),w.cp(`${t}/*`,i),ee([".vscode"]),n.suffixText=c.dim(`${Date.now()-e}ms`),n.succeed();},N=e=>{let n=Date.now(),t=c.loading("\u914D\u7F6E .husky").start(),i=r.join(h.fileURLToPath(import.meta.url),"../../husky-config-files",H()),o=r.join(s.cwd,".husky");w.mkdir("-p",o),e.forEach(a=>{w.cp(r.join(i,a),r.join(o,a));}),t.suffixText=c.dim(`${Date.now()-n}ms`),t.succeed();},A=async(e,n)=>{if(!n?.length)return;let t=Date.now(),i=c.loading("\u590D\u5236\u914D\u7F6E\u6587\u4EF6").start(),o=r.join(h.fileURLToPath(import.meta.url),"../../config-files"),a=p.readdirSync(o),g=create(create$1());a.forEach(f=>{let d=f.replace(/^dot\./u,".").replace(/\.tpl$/u,"");if(n.includes(d)){let y=r.join(o,f),u=r.join(s.cwd,d);g.copyTpl(y,u,{isMonorepo:m(),enableReact:X()||m(),enableJest:Z()||m(),enableStylelint:e.includes("stylelint")});}}),await g.commit(),i.suffixText=c.dim(`${Date.now()-t}ms`),i.succeed();};var C={lint:"eslint . --no-error-on-unmatched-pattern","lint:fix":"eslint . --fix --no-error-on-unmatched-pattern"},te=()=>m()?x()==="pnpm"?{lint:"pnpm lint","lint:fix":"pnpm lint -- --fix"}:x()==="lerna"?{lint:"lerna run lint","lint:fix":"lerna run lint -- --fix"}:C:C,ne={eslint:{devDependencies:{"@clamjs/config-eslint":"latest"},publicHoistPattern:["*eslint*"],scripts:te(),packageScripts:C,configFiles:["eslint.config.js"]},prettier:{devDependencies:{"@clamjs/config-prettier":"latest"},publicHoistPattern:["*prettier*"],scripts:{prettier:"prettier . --write --ignore-unknown"},packageScripts:{prettier:"prettier . --write --ignore-unknown"},configFiles:[".prettierrc.mjs",".prettierignore"]},stylelint:{devDependencies:{"@clamjs/config-stylelint":"latest"},publicHoistPattern:["*stylelint*"],scripts:{stylelint:"stylelint **/*.{css,scss,less}","stylelint:fix":"stylelint --fix **/*.{css,scss,less}"},packageScripts:{stylelint:"stylelint **/*.{css,scss,less}","stylelint:fix":"stylelint --fix **/*.{css,scss,less}"},configFiles:[".stylelintrc.mjs",".stylelintignore"]},"lint-staged":{devDependencies:{"lint-staged":"14.0.1"},configFiles:[".lintstagedrc.mjs"],huskyConfigFiles:["pre-commit"]},commitlint:{devDependencies:{"@clamjs/config-commitlint":"latest"},publicHoistPattern:["*commitlint*","commitizen"],scripts:{commit:"cz"},configFiles:[".commitlintrc.mjs",".czrc"],huskyConfigFiles:["commit-msg"]},husky:{devDependencies:{husky:"8.0.3"},scripts:{prepare:"husky install"}}};function G(e){let n=[...e];F(e)&&n.push("husky");let t={devDependencies:{},publicHoistPattern:[],scripts:{},packageScripts:{},configFiles:[],huskyConfigFiles:[]};return n.forEach(i=>{let o=ne[i];if(o){let{devDependencies:a={},publicHoistPattern:g=[],scripts:f={},packageScripts:d={},configFiles:y=[],huskyConfigFiles:u=[]}=o;t.devDependencies={...t.devDependencies,...a},t.publicHoistPattern=[...new Set([...t.publicHoistPattern,...g])],t.scripts={...t.scripts,...f},t.packageScripts={...t.packageScripts,...d},t.configFiles=[...new Set([...t.configFiles,...y])],t.huskyConfigFiles=[...new Set([...t.huskyConfigFiles,...u])];}}),t}var ie=async e=>{let n=Date.now(),{devDependencies:t,publicHoistPattern:i,scripts:o,packageScripts:a,configFiles:g,huskyConfigFiles:f}=G(e),d=e.map(q=>c.clamjsBlue(q)).join(" ");c.info(`\u5F00\u59CB\u914D\u7F6E ${d}`),$(),J(i);let y=Date.now(),u=c.loading("\u914D\u7F6E devDependencies").start();s.isOldProject&&(await S(e),await E(e)),await M(t),u.suffixText=c.dim(`${Date.now()-y}ms`),u.succeed();let _=Date.now(),P=c.loading("\u914D\u7F6E scripts").start();await j(o),await R(a),P.suffixText=c.dim(`${Date.now()-_}ms`),P.succeed(),N(f),await A(e,g),L(),c.log(),c.success(`\u914D\u7F6E ${d} \u6210\u529F ${c.dim(`(${Date.now()-n}ms)`)}`),s.isOldProject&&(c.list([{title:"\u8BF7\u6839\u636E\u9879\u76EE\u5B9E\u9645\u60C5\u51B5\u8FDB\u884C\u4EE5\u4E0B\u64CD\u4F5C\u5B8C\u6210\u6700\u7EC8\u7684\u914D\u7F6E",items:["\u5220\u9664\u65E7\u914D\u7F6E\u6587\u4EF6\uFF1A.eslintrc.js, .prettierrc...","\u5220\u9664\u65E7\u7684 package.json > scripts","\u6839\u636E\u9879\u76EE\u5B9E\u9645\u60C5\u51B5\u4FEE\u6539 tsconfig.eslint.json eslint.config.ts > tsProject","\u5220\u9664 node_modules \u540E\u91CD\u65B0\u5B89\u88C5\u4F9D\u8D56"]}]),c.log());},U=ie;var oe=["eslint","prettier","stylelint","commitlint","lint-staged"],re=async(e,n)=>{n&&(s.cwd=n,s.isOldProject=!1);let t=[];e?e==="all"?t=oe:t=Array.isArray(e)?e:[e]:t=await checkbox({message:"\u9009\u62E9\u8981\u914D\u7F6E\u7684\u5DE5\u5177",choices:[{name:"eslint",value:"eslint"},{name:"prettier",value:"prettier"},{name:"stylelint",value:"stylelint"},{name:"lint-staged",value:"lint-staged"},{name:"commitlint",value:"commitlint"}]}),await U(t);},$e=re;
`),m.writeFileSync(i,t);},j=(e,i)=>!e||isEmptyObject(e)?[]:Object.keys(e).filter(t=>i.some(s=>t.includes(s)));var J=()=>{readPackageSync({cwd:n.cwd}).name||(f.error("\u5F53\u524D\u76EE\u5F55\u6CA1\u6709\u627E\u5230 package.json, \u8BF7\u5728\u6B63\u786E\u7684\u76EE\u5F55\u6267\u884C\u547D\u4EE4"),process.exit(1));},M=e=>{if(S()!=="pnpm"||!e?.length)return;let i=o.join(n.cwd,".npmrc");m.existsSync(i)||m.writeFileSync(i,"");let t=H.parse(m.readFileSync(i,"utf-8")),s=t["public-hoist-pattern"]??[];t["public-hoist-pattern"]=[...new Set([...s,...e])],m.writeFileSync(i,H.stringify(t,{newline:!0,whitespace:!0}));},x=async(e,i=n.cwd)=>{let t=await readPackage({cwd:i}),s=j(t.dependencies,e),r=j(t.devDependencies,e);await removePackageDependencies(i,{dependencies:s,devDependencies:r});},E=async e=>{if(c())return Promise.all(P().map(async i=>x(e,i)))},R=async e=>{let i=[];Object.entries(e).forEach(([t,s])=>{s==="latest"?i.push(t):e[t]=s;}),Object.assign(e,await getLatestVersions(i)),await addPackageDependencies(n.cwd,{devDependencies:e});},b=async(e,i=n.cwd)=>{isEmptyObject(e)||await updatePackage(i,{scripts:e});},L=async e=>{if(c())return Promise.all(P().map(async i=>b(e,i)))},N=()=>{let e=o.join(C.fileURLToPath(import.meta.url),"../../vscode-config-files"),i=o.join(n.cwd,".vscode");k.mkdir("-p",i),k.cp(`${e}/*`,i),O([".vscode"]);},G=e=>{let i=o.join(C.fileURLToPath(import.meta.url),"../../husky-config-files",S()),t=o.join(n.cwd,".husky");k.mkdir("-p",t),e.forEach(s=>{k.cp(o.join(i,s),o.join(t,s));});},$=async(e,i)=>{if(!i?.length)return;let t=o.join(C.fileURLToPath(import.meta.url),"../../config-files"),s=m.readdirSync(t),r=create(create$1());s.forEach(p=>{let l=p.replace(/^dot\./u,".").replace(/\.tpl$/u,"");if(i.includes(l)){let a=o.join(t,p),g=o.join(n.cwd,l);r.copyTpl(a,g,{isMonorepo:c(),enableReact:D()||c(),enableJest:F()||c(),enableStylelint:e.includes("stylelint")});}}),await r.commit();};var v={lint:"eslint . --no-error-on-unmatched-pattern","lint:fix":"eslint . --fix --no-error-on-unmatched-pattern"},ne=()=>c()?y()==="pnpm"?{lint:"pnpm lint","lint:fix":"pnpm lint -- --fix"}:y()==="lerna"?{lint:"lerna run lint","lint:fix":"lerna run lint -- --fix"}:v:v,se={eslint:{devDependencies:{"@clamjs/config-eslint":"latest"},publicHoistPattern:["*eslint*"],scripts:ne(),packageScripts:v,configFiles:["eslint.config.js"]},prettier:{devDependencies:{"@clamjs/config-prettier":"latest"},publicHoistPattern:["*prettier*"],scripts:{prettier:"prettier . --write --ignore-unknown"},packageScripts:{prettier:"prettier . --write --ignore-unknown"},configFiles:[".prettierrc.mjs",".prettierignore"]},stylelint:{devDependencies:{"@clamjs/config-stylelint":"latest"},publicHoistPattern:["*stylelint*"],scripts:{stylelint:"stylelint **/*.{css,scss,less}","stylelint:fix":"stylelint --fix **/*.{css,scss,less}"},packageScripts:{stylelint:"stylelint **/*.{css,scss,less}","stylelint:fix":"stylelint --fix **/*.{css,scss,less}"},configFiles:[".stylelintrc.mjs",".stylelintignore"]},"lint-staged":{devDependencies:{"lint-staged":"14.0.1"},configFiles:[".lintstagedrc.mjs"],huskyConfigFiles:["pre-commit"]},commitlint:{devDependencies:{"@clamjs/config-commitlint":"latest"},publicHoistPattern:["*commitlint*","commitizen"],scripts:{commit:"cz"},configFiles:[".commitlintrc.mjs",".czrc"],huskyConfigFiles:["commit-msg"]},husky:{devDependencies:{husky:"8.0.3"},scripts:{prepare:"husky install"}}};function A(e){let i=[...e];T(e)&&i.push("husky");let t={devDependencies:{},publicHoistPattern:[],scripts:{},packageScripts:{},configFiles:[],huskyConfigFiles:[]};return i.forEach(s=>{let r=se[s];if(r){let{devDependencies:p={},publicHoistPattern:l=[],scripts:a={},packageScripts:g={},configFiles:q=[],huskyConfigFiles:z=[]}=r;t.devDependencies={...t.devDependencies,...p},t.publicHoistPattern=[...new Set([...t.publicHoistPattern,...l])],t.scripts={...t.scripts,...a},t.packageScripts={...t.packageScripts,...g},t.configFiles=[...new Set([...t.configFiles,...q])],t.huskyConfigFiles=[...new Set([...t.huskyConfigFiles,...z])];}}),t}var re=async e=>{let{devDependencies:i,publicHoistPattern:t,scripts:s,packageScripts:r,configFiles:p,huskyConfigFiles:l}=A(e);J();let a=e.map(g=>f.clamjsBlue(g)).join(" ");f.step(`\u5F00\u59CB\u914D\u7F6E ${a}`),await tasks([{title:"\u914D\u7F6E .npmrc",task:()=>{M(t);}},{title:"\u6DFB\u52A0 devDependencies",task:async()=>{n.isOldProject&&(await x(e),await E(e)),await R(i);}},{title:"\u6DFB\u52A0 scripts",task:async()=>{await b(s),await L(r);}},{title:"\u914D\u7F6E .husky",task:()=>{G(l);}},{title:"\u590D\u5236\u914D\u7F6E\u6587\u4EF6",task:async()=>{await $(e,p);}},{title:"\u914D\u7F6E .vscode",task:()=>{N();}}]),n.isOldProject?(f.list([{title:"\u8BF7\u6839\u636E\u9879\u76EE\u5B9E\u9645\u60C5\u51B5\u8FDB\u884C\u4EE5\u4E0B\u64CD\u4F5C\u5B8C\u6210\u6700\u7EC8\u7684\u914D\u7F6E",items:["\u5220\u9664\u65E7\u914D\u7F6E\u6587\u4EF6\uFF1A.eslintrc.js, .prettierrc...","\u5220\u9664\u65E7\u7684 package.json > scripts","\u6839\u636E\u9879\u76EE\u5B9E\u9645\u60C5\u51B5\u4FEE\u6539 tsconfig.eslint.json eslint.config.ts > tsProject","\u5220\u9664 node_modules \u540E\u91CD\u65B0\u5B89\u88C5\u4F9D\u8D56"]}]),f.outro(`\u914D\u7F6E ${a} \u6210\u529F`)):f.success(`\u914D\u7F6E ${a} \u6210\u529F`);},U=re;var ae=["eslint","prettier","stylelint","commitlint","lint-staged"],pe=async(e,i)=>{i&&(n.cwd=i,n.isOldProject=!1);let t=[];n.isOldProject?f.intro("\u5DE5\u7A0B\u5316\u914D\u7F6E"):f.title("\u5DE5\u7A0B\u5316\u914D\u7F6E"),e?e==="all"?t=ae:t=Array.isArray(e)?e:[e]:t=await multiselect({message:"\u9009\u62E9\u8981\u914D\u7F6E\u7684\u5DE5\u5177",options:[{label:"eslint",value:"eslint"},{label:"prettier",value:"prettier"},{label:"stylelint",value:"stylelint"},{label:"lint-staged",value:"lint-staged"},{label:"commitlint",value:"commitlint"}]}),await U(t);},_e=pe;
export { $e as default };
export { _e as default };
//# sourceMappingURL=out.js.map
//# sourceMappingURL=index.js.map

@@ -1,22 +0,21 @@

import { checkbox } from '@inquirer/prompts';
import c from '@clamjs/logger';
import p from 'fs';
import r from 'path';
import h from 'url';
import f, { multiselect, tasks } from '@clamjs/logger';
import m from 'fs';
import o from 'path';
import C from 'url';
import { getLatestVersions } from '@clamjs/utils/npm';
import { isEmptyObject } from '@clamjs/utils/type';
import v from 'ini';
import H from 'ini';
import { create as create$1 } from 'mem-fs';
import { create } from 'mem-fs-editor';
import { readPackageSync, readPackage } from 'read-pkg';
import w from 'shelljs';
import k from 'shelljs';
import { removePackageDependencies, addPackageDependencies, updatePackage } from 'write-package';
var z={cwd:process.cwd(),isOldProject:!0},s=z;var D=e=>p.existsSync(r.join(s.cwd,e)),x=()=>D("turbo.json")?"turbo":D("lerna.json")?"lerna":D("pnpm-workspace.yaml")?"pnpm":"unknown",m=()=>x()!=="unknown",X=()=>{let e=readPackageSync({cwd:s.cwd});return e.dependencies?.react||e.devDependencies?.react||e.peerDependencies?.react||e.dependencies?.["@ali/pocket"]},Z=()=>{let e=readPackageSync({cwd:s.cwd});return e.dependencies?.jest||e.devDependencies?.jest||e.dependencies?.vitest||e.devDependencies?.vitest},F=e=>e.includes("lint-staged")||e.includes("commitlint"),O=()=>{let e=r.join(s.cwd,"packages");return p.readdirSync(e).map(t=>r.join(e,t))},H=()=>readPackageSync({cwd:s.cwd}).tnpm?"tnpm":"pnpm",ee=e=>{if(!s.isOldProject)return;let n=r.join(s.cwd,".gitignore"),t=p.readFileSync(n,"utf-8");e.forEach(i=>{t=t.replaceAll(i,"");}),t=t.replaceAll(`
var V={cwd:process.cwd(),isOldProject:!0},n=V;var w=e=>m.existsSync(o.join(n.cwd,e)),y=()=>w("turbo.json")?"turbo":w("lerna.json")?"lerna":w("pnpm-workspace.yaml")?"pnpm":"unknown",c=()=>y()!=="unknown",D=()=>{let e=readPackageSync({cwd:n.cwd});return e.dependencies?.react||e.devDependencies?.react||e.peerDependencies?.react||e.dependencies?.["@ali/pocket"]},F=()=>{let e=readPackageSync({cwd:n.cwd});return e.dependencies?.jest||e.devDependencies?.jest||e.dependencies?.vitest||e.devDependencies?.vitest},T=e=>e.includes("lint-staged")||e.includes("commitlint"),P=()=>{let e=o.join(n.cwd,"packages");return m.readdirSync(e).map(t=>o.join(e,t))},S=()=>readPackageSync({cwd:n.cwd}).tnpm?"tnpm":"pnpm",O=e=>{if(!n.isOldProject)return;let i=o.join(n.cwd,".gitignore"),t=m.readFileSync(i,"utf-8");e.forEach(s=>{t=t.replaceAll(s,"");}),t=t.replaceAll(`
`,`
`),p.writeFileSync(n,t);},$=()=>{readPackageSync({cwd:s.cwd}).name||c.fatal("\u5F53\u524D\u76EE\u5F55\u6CA1\u6709\u627E\u5230 package.json, \u8BF7\u5728\u6B63\u786E\u7684\u76EE\u5F55\u6267\u884C\u547D\u4EE4");},J=e=>{if(H()!=="pnpm"||!e?.length)return;let n=Date.now(),t=c.loading("\u914D\u7F6E .npmrc").start(),i=r.join(s.cwd,".npmrc");p.existsSync(i)||p.writeFileSync(i,"");let o=v.parse(p.readFileSync(i,"utf-8")),a=o["public-hoist-pattern"]??[];o["public-hoist-pattern"]=[...new Set([...a,...e])],p.writeFileSync(i,v.stringify(o,{newline:!0,whitespace:!0})),t.suffixText=c.dim(`${Date.now()-n}ms`),t.succeed();},T=(e,n)=>!e||isEmptyObject(e)?[]:Object.keys(e).filter(t=>n.some(i=>t.includes(i))),S=async(e,n=s.cwd)=>{let t=await readPackage({cwd:n}),i=T(t.dependencies,e),o=T(t.devDependencies,e);await removePackageDependencies(n,{dependencies:i,devDependencies:o});},E=async e=>{if(m())return Promise.all(O().map(async n=>S(e,n)))},M=async e=>{let n=[];Object.entries(e).forEach(([t,i])=>{i==="latest"?n.push(t):e[t]=i;}),Object.assign(e,await getLatestVersions(n)),await addPackageDependencies(s.cwd,{devDependencies:e});},j=async(e,n=s.cwd)=>{isEmptyObject(e)||await updatePackage(n,{scripts:e});},R=async e=>{if(m())return Promise.all(O().map(async n=>j(e,n)))},L=()=>{let e=Date.now(),n=c.loading("\u914D\u7F6E .vscode").start(),t=r.join(h.fileURLToPath(import.meta.url),"../../vscode-config-files"),i=r.join(s.cwd,".vscode");w.mkdir("-p",i),w.cp(`${t}/*`,i),ee([".vscode"]),n.suffixText=c.dim(`${Date.now()-e}ms`),n.succeed();},N=e=>{let n=Date.now(),t=c.loading("\u914D\u7F6E .husky").start(),i=r.join(h.fileURLToPath(import.meta.url),"../../husky-config-files",H()),o=r.join(s.cwd,".husky");w.mkdir("-p",o),e.forEach(a=>{w.cp(r.join(i,a),r.join(o,a));}),t.suffixText=c.dim(`${Date.now()-n}ms`),t.succeed();},A=async(e,n)=>{if(!n?.length)return;let t=Date.now(),i=c.loading("\u590D\u5236\u914D\u7F6E\u6587\u4EF6").start(),o=r.join(h.fileURLToPath(import.meta.url),"../../config-files"),a=p.readdirSync(o),g=create(create$1());a.forEach(f=>{let d=f.replace(/^dot\./u,".").replace(/\.tpl$/u,"");if(n.includes(d)){let y=r.join(o,f),u=r.join(s.cwd,d);g.copyTpl(y,u,{isMonorepo:m(),enableReact:X()||m(),enableJest:Z()||m(),enableStylelint:e.includes("stylelint")});}}),await g.commit(),i.suffixText=c.dim(`${Date.now()-t}ms`),i.succeed();};var C={lint:"eslint . --no-error-on-unmatched-pattern","lint:fix":"eslint . --fix --no-error-on-unmatched-pattern"},te=()=>m()?x()==="pnpm"?{lint:"pnpm lint","lint:fix":"pnpm lint -- --fix"}:x()==="lerna"?{lint:"lerna run lint","lint:fix":"lerna run lint -- --fix"}:C:C,ne={eslint:{devDependencies:{"@clamjs/config-eslint":"latest"},publicHoistPattern:["*eslint*"],scripts:te(),packageScripts:C,configFiles:["eslint.config.js"]},prettier:{devDependencies:{"@clamjs/config-prettier":"latest"},publicHoistPattern:["*prettier*"],scripts:{prettier:"prettier . --write --ignore-unknown"},packageScripts:{prettier:"prettier . --write --ignore-unknown"},configFiles:[".prettierrc.mjs",".prettierignore"]},stylelint:{devDependencies:{"@clamjs/config-stylelint":"latest"},publicHoistPattern:["*stylelint*"],scripts:{stylelint:"stylelint **/*.{css,scss,less}","stylelint:fix":"stylelint --fix **/*.{css,scss,less}"},packageScripts:{stylelint:"stylelint **/*.{css,scss,less}","stylelint:fix":"stylelint --fix **/*.{css,scss,less}"},configFiles:[".stylelintrc.mjs",".stylelintignore"]},"lint-staged":{devDependencies:{"lint-staged":"14.0.1"},configFiles:[".lintstagedrc.mjs"],huskyConfigFiles:["pre-commit"]},commitlint:{devDependencies:{"@clamjs/config-commitlint":"latest"},publicHoistPattern:["*commitlint*","commitizen"],scripts:{commit:"cz"},configFiles:[".commitlintrc.mjs",".czrc"],huskyConfigFiles:["commit-msg"]},husky:{devDependencies:{husky:"8.0.3"},scripts:{prepare:"husky install"}}};function G(e){let n=[...e];F(e)&&n.push("husky");let t={devDependencies:{},publicHoistPattern:[],scripts:{},packageScripts:{},configFiles:[],huskyConfigFiles:[]};return n.forEach(i=>{let o=ne[i];if(o){let{devDependencies:a={},publicHoistPattern:g=[],scripts:f={},packageScripts:d={},configFiles:y=[],huskyConfigFiles:u=[]}=o;t.devDependencies={...t.devDependencies,...a},t.publicHoistPattern=[...new Set([...t.publicHoistPattern,...g])],t.scripts={...t.scripts,...f},t.packageScripts={...t.packageScripts,...d},t.configFiles=[...new Set([...t.configFiles,...y])],t.huskyConfigFiles=[...new Set([...t.huskyConfigFiles,...u])];}}),t}var ie=async e=>{let n=Date.now(),{devDependencies:t,publicHoistPattern:i,scripts:o,packageScripts:a,configFiles:g,huskyConfigFiles:f}=G(e),d=e.map(q=>c.clamjsBlue(q)).join(" ");c.info(`\u5F00\u59CB\u914D\u7F6E ${d}`),$(),J(i);let y=Date.now(),u=c.loading("\u914D\u7F6E devDependencies").start();s.isOldProject&&(await S(e),await E(e)),await M(t),u.suffixText=c.dim(`${Date.now()-y}ms`),u.succeed();let _=Date.now(),P=c.loading("\u914D\u7F6E scripts").start();await j(o),await R(a),P.suffixText=c.dim(`${Date.now()-_}ms`),P.succeed(),N(f),await A(e,g),L(),c.log(),c.success(`\u914D\u7F6E ${d} \u6210\u529F ${c.dim(`(${Date.now()-n}ms)`)}`),s.isOldProject&&(c.list([{title:"\u8BF7\u6839\u636E\u9879\u76EE\u5B9E\u9645\u60C5\u51B5\u8FDB\u884C\u4EE5\u4E0B\u64CD\u4F5C\u5B8C\u6210\u6700\u7EC8\u7684\u914D\u7F6E",items:["\u5220\u9664\u65E7\u914D\u7F6E\u6587\u4EF6\uFF1A.eslintrc.js, .prettierrc...","\u5220\u9664\u65E7\u7684 package.json > scripts","\u6839\u636E\u9879\u76EE\u5B9E\u9645\u60C5\u51B5\u4FEE\u6539 tsconfig.eslint.json eslint.config.ts > tsProject","\u5220\u9664 node_modules \u540E\u91CD\u65B0\u5B89\u88C5\u4F9D\u8D56"]}]),c.log());},U=ie;var oe=["eslint","prettier","stylelint","commitlint","lint-staged"],re=async(e,n)=>{n&&(s.cwd=n,s.isOldProject=!1);let t=[];e?e==="all"?t=oe:t=Array.isArray(e)?e:[e]:t=await checkbox({message:"\u9009\u62E9\u8981\u914D\u7F6E\u7684\u5DE5\u5177",choices:[{name:"eslint",value:"eslint"},{name:"prettier",value:"prettier"},{name:"stylelint",value:"stylelint"},{name:"lint-staged",value:"lint-staged"},{name:"commitlint",value:"commitlint"}]}),await U(t);},$e=re;
`),m.writeFileSync(i,t);},j=(e,i)=>!e||isEmptyObject(e)?[]:Object.keys(e).filter(t=>i.some(s=>t.includes(s)));var J=()=>{readPackageSync({cwd:n.cwd}).name||(f.error("\u5F53\u524D\u76EE\u5F55\u6CA1\u6709\u627E\u5230 package.json, \u8BF7\u5728\u6B63\u786E\u7684\u76EE\u5F55\u6267\u884C\u547D\u4EE4"),process.exit(1));},M=e=>{if(S()!=="pnpm"||!e?.length)return;let i=o.join(n.cwd,".npmrc");m.existsSync(i)||m.writeFileSync(i,"");let t=H.parse(m.readFileSync(i,"utf-8")),s=t["public-hoist-pattern"]??[];t["public-hoist-pattern"]=[...new Set([...s,...e])],m.writeFileSync(i,H.stringify(t,{newline:!0,whitespace:!0}));},x=async(e,i=n.cwd)=>{let t=await readPackage({cwd:i}),s=j(t.dependencies,e),r=j(t.devDependencies,e);await removePackageDependencies(i,{dependencies:s,devDependencies:r});},E=async e=>{if(c())return Promise.all(P().map(async i=>x(e,i)))},R=async e=>{let i=[];Object.entries(e).forEach(([t,s])=>{s==="latest"?i.push(t):e[t]=s;}),Object.assign(e,await getLatestVersions(i)),await addPackageDependencies(n.cwd,{devDependencies:e});},b=async(e,i=n.cwd)=>{isEmptyObject(e)||await updatePackage(i,{scripts:e});},L=async e=>{if(c())return Promise.all(P().map(async i=>b(e,i)))},N=()=>{let e=o.join(C.fileURLToPath(import.meta.url),"../../vscode-config-files"),i=o.join(n.cwd,".vscode");k.mkdir("-p",i),k.cp(`${e}/*`,i),O([".vscode"]);},G=e=>{let i=o.join(C.fileURLToPath(import.meta.url),"../../husky-config-files",S()),t=o.join(n.cwd,".husky");k.mkdir("-p",t),e.forEach(s=>{k.cp(o.join(i,s),o.join(t,s));});},$=async(e,i)=>{if(!i?.length)return;let t=o.join(C.fileURLToPath(import.meta.url),"../../config-files"),s=m.readdirSync(t),r=create(create$1());s.forEach(p=>{let l=p.replace(/^dot\./u,".").replace(/\.tpl$/u,"");if(i.includes(l)){let a=o.join(t,p),g=o.join(n.cwd,l);r.copyTpl(a,g,{isMonorepo:c(),enableReact:D()||c(),enableJest:F()||c(),enableStylelint:e.includes("stylelint")});}}),await r.commit();};var v={lint:"eslint . --no-error-on-unmatched-pattern","lint:fix":"eslint . --fix --no-error-on-unmatched-pattern"},ne=()=>c()?y()==="pnpm"?{lint:"pnpm lint","lint:fix":"pnpm lint -- --fix"}:y()==="lerna"?{lint:"lerna run lint","lint:fix":"lerna run lint -- --fix"}:v:v,se={eslint:{devDependencies:{"@clamjs/config-eslint":"latest"},publicHoistPattern:["*eslint*"],scripts:ne(),packageScripts:v,configFiles:["eslint.config.js"]},prettier:{devDependencies:{"@clamjs/config-prettier":"latest"},publicHoistPattern:["*prettier*"],scripts:{prettier:"prettier . --write --ignore-unknown"},packageScripts:{prettier:"prettier . --write --ignore-unknown"},configFiles:[".prettierrc.mjs",".prettierignore"]},stylelint:{devDependencies:{"@clamjs/config-stylelint":"latest"},publicHoistPattern:["*stylelint*"],scripts:{stylelint:"stylelint **/*.{css,scss,less}","stylelint:fix":"stylelint --fix **/*.{css,scss,less}"},packageScripts:{stylelint:"stylelint **/*.{css,scss,less}","stylelint:fix":"stylelint --fix **/*.{css,scss,less}"},configFiles:[".stylelintrc.mjs",".stylelintignore"]},"lint-staged":{devDependencies:{"lint-staged":"14.0.1"},configFiles:[".lintstagedrc.mjs"],huskyConfigFiles:["pre-commit"]},commitlint:{devDependencies:{"@clamjs/config-commitlint":"latest"},publicHoistPattern:["*commitlint*","commitizen"],scripts:{commit:"cz"},configFiles:[".commitlintrc.mjs",".czrc"],huskyConfigFiles:["commit-msg"]},husky:{devDependencies:{husky:"8.0.3"},scripts:{prepare:"husky install"}}};function A(e){let i=[...e];T(e)&&i.push("husky");let t={devDependencies:{},publicHoistPattern:[],scripts:{},packageScripts:{},configFiles:[],huskyConfigFiles:[]};return i.forEach(s=>{let r=se[s];if(r){let{devDependencies:p={},publicHoistPattern:l=[],scripts:a={},packageScripts:g={},configFiles:q=[],huskyConfigFiles:z=[]}=r;t.devDependencies={...t.devDependencies,...p},t.publicHoistPattern=[...new Set([...t.publicHoistPattern,...l])],t.scripts={...t.scripts,...a},t.packageScripts={...t.packageScripts,...g},t.configFiles=[...new Set([...t.configFiles,...q])],t.huskyConfigFiles=[...new Set([...t.huskyConfigFiles,...z])];}}),t}var re=async e=>{let{devDependencies:i,publicHoistPattern:t,scripts:s,packageScripts:r,configFiles:p,huskyConfigFiles:l}=A(e);J();let a=e.map(g=>f.clamjsBlue(g)).join(" ");f.step(`\u5F00\u59CB\u914D\u7F6E ${a}`),await tasks([{title:"\u914D\u7F6E .npmrc",task:()=>{M(t);}},{title:"\u6DFB\u52A0 devDependencies",task:async()=>{n.isOldProject&&(await x(e),await E(e)),await R(i);}},{title:"\u6DFB\u52A0 scripts",task:async()=>{await b(s),await L(r);}},{title:"\u914D\u7F6E .husky",task:()=>{G(l);}},{title:"\u590D\u5236\u914D\u7F6E\u6587\u4EF6",task:async()=>{await $(e,p);}},{title:"\u914D\u7F6E .vscode",task:()=>{N();}}]),n.isOldProject?(f.list([{title:"\u8BF7\u6839\u636E\u9879\u76EE\u5B9E\u9645\u60C5\u51B5\u8FDB\u884C\u4EE5\u4E0B\u64CD\u4F5C\u5B8C\u6210\u6700\u7EC8\u7684\u914D\u7F6E",items:["\u5220\u9664\u65E7\u914D\u7F6E\u6587\u4EF6\uFF1A.eslintrc.js, .prettierrc...","\u5220\u9664\u65E7\u7684 package.json > scripts","\u6839\u636E\u9879\u76EE\u5B9E\u9645\u60C5\u51B5\u4FEE\u6539 tsconfig.eslint.json eslint.config.ts > tsProject","\u5220\u9664 node_modules \u540E\u91CD\u65B0\u5B89\u88C5\u4F9D\u8D56"]}]),f.outro(`\u914D\u7F6E ${a} \u6210\u529F`)):f.success(`\u914D\u7F6E ${a} \u6210\u529F`);},U=re;var ae=["eslint","prettier","stylelint","commitlint","lint-staged"],pe=async(e,i)=>{i&&(n.cwd=i,n.isOldProject=!1);let t=[];n.isOldProject?f.intro("\u5DE5\u7A0B\u5316\u914D\u7F6E"):f.title("\u5DE5\u7A0B\u5316\u914D\u7F6E"),e?e==="all"?t=ae:t=Array.isArray(e)?e:[e]:t=await multiselect({message:"\u9009\u62E9\u8981\u914D\u7F6E\u7684\u5DE5\u5177",options:[{label:"eslint",value:"eslint"},{label:"prettier",value:"prettier"},{label:"stylelint",value:"stylelint"},{label:"lint-staged",value:"lint-staged"},{label:"commitlint",value:"commitlint"}]}),await U(t);},_e=pe;
export { $e as default };
export { _e as default };
//# sourceMappingURL=out.js.map
//# sourceMappingURL=index.js.map
{
"name": "@clamjs/configurator",
"version": "0.0.1-beta.2",
"version": "0.0.1-beta.3",
"description": "Clamjs 工程化配置器",

@@ -24,3 +24,2 @@ "bugs": {

"dependencies": {
"@inquirer/prompts": "^3.3.2",
"ini": "^4.1.1",

@@ -32,4 +31,4 @@ "mem-fs": "^4.0.0",

"write-package": "^7.0.1",
"@clamjs/logger": "0.0.1-beta.1",
"@clamjs/utils": "0.0.3-beta.2"
"@clamjs/logger": "0.0.1-beta.2",
"@clamjs/utils": "0.0.3-beta.3"
},

@@ -36,0 +35,0 @@ "devDependencies": {

Sorry, the diff of this file is not supported yet