@clamjs/configurator
Advanced tools
Comparing version 0.0.1-beta.6 to 0.0.1-beta.7
@@ -17,3 +17,3 @@ import f, { multiselect, tasks } from '@clamjs/logger'; | ||
`,` | ||
`),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=r.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),o=j(t.devDependencies,e);await removePackageDependencies(i,{dependencies:s,devDependencies:o});},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=r.join(C.fileURLToPath(import.meta.url),"../../vscode-config-files"),i=r.join(n.cwd,".vscode");k.mkdir("-p",i),k.cp(`${e}/*`,i),O([".vscode"]);},G=e=>{let i=r.join(C.fileURLToPath(import.meta.url),"../../husky-config-files",S()),t=r.join(n.cwd,".husky");k.mkdir("-p",t),e.forEach(s=>{k.cp(r.join(i,s),r.join(t,s));});},$=async(e,i)=>{if(!i?.length)return;let t=r.join(C.fileURLToPath(import.meta.url),"../../config-files"),s=m.readdirSync(t),o=create(create$1());s.forEach(p=>{let l=p.replace(/^dot\./u,".").replace(/\.tpl$/u,"");if(i.includes(l)){let a=r.join(t,p),g=r.join(n.cwd,l);o.copyTpl(a,g,{isMonorepo:c(),enableReact:D()||c(),enableJest:F()||c(),enableStylelint:e.includes("stylelint")});}}),await o.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 o=se[s];if(o){let{devDependencies:p={},publicHoistPattern:l=[],scripts:a={},packageScripts:g={},configFiles:q=[],huskyConfigFiles:z=[]}=o;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 oe=async e=>{let{devDependencies:i,publicHoistPattern:t,scripts:s,packageScripts:o,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(o);}},{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=oe;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; | ||
`),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=r.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),o=j(t.devDependencies,e);await removePackageDependencies(i,{dependencies:s,devDependencies:o});},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=r.join(C.fileURLToPath(import.meta.url),"../../vscode-config-files"),i=r.join(n.cwd,".vscode");k.mkdir("-p",i),k.cp(`${e}/*`,i),O([".vscode"]);},G=e=>{let i=r.join(C.fileURLToPath(import.meta.url),"../../husky-config-files",S()),t=r.join(n.cwd,".husky");k.mkdir("-p",t),e.forEach(s=>{k.cp(r.join(i,s),r.join(t,s));});},$=async(e,i)=>{if(!i?.length)return;let t=r.join(C.fileURLToPath(import.meta.url),"../../config-files"),s=m.readdirSync(t),o=create(create$1());s.forEach(a=>{let p=a.replace(/^dot\./u,".").replace(/\.tpl$/u,"");if(i.includes(p)){let l=r.join(t,a),g=r.join(n.cwd,p);o.copyTpl(l,g,{isMonorepo:c(),enableReact:D()||c(),enableJest:F()||c(),enableStylelint:e.includes("stylelint")});}}),await o.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 o=se[s];if(o){let{devDependencies:a={},publicHoistPattern:p=[],scripts:l={},packageScripts:g={},configFiles:q=[],huskyConfigFiles:z=[]}=o;t.devDependencies={...t.devDependencies,...a},t.publicHoistPattern=[...new Set([...t.publicHoistPattern,...p])],t.scripts={...t.scripts,...l},t.packageScripts={...t.packageScripts,...g},t.configFiles=[...new Set([...t.configFiles,...q])],t.huskyConfigFiles=[...new Set([...t.huskyConfigFiles,...z])];}}),t}var oe=async e=>{let{devDependencies:i,publicHoistPattern:t,scripts:s,packageScripts:o,configFiles:a,huskyConfigFiles:p}=A(e);J();let l=e.map(g=>f.clamjsBlue(g)).join(" ");f.step(`\u5F00\u59CB\u914D\u7F6E ${l}`),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(o);}},{title:"\u914D\u7F6E .husky",task:()=>{G(p);}},{title:"\u590D\u5236\u914D\u7F6E\u6587\u4EF6",task:async()=>{await $(e,a);}},{title:"\u914D\u7F6E .vscode",task:()=>{N();}}]),n.isOldProject&&f.note(`${f.list([{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"]}],!1)}`,"\u8BF7\u6839\u636E\u9879\u76EE\u5B9E\u9645\u60C5\u51B5\u8FDB\u884C\u4EE5\u4E0B\u64CD\u4F5C\u5B8C\u6210\u6700\u7EC8\u7684\u914D\u7F6E"),f.success(`\u914D\u7F6E ${l} \u6210\u529F`);},U=oe;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; | ||
@@ -20,0 +20,0 @@ export { _e as default }; |
@@ -17,3 +17,3 @@ import f, { multiselect, tasks } from '@clamjs/logger'; | ||
`,` | ||
`),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=r.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),o=j(t.devDependencies,e);await removePackageDependencies(i,{dependencies:s,devDependencies:o});},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=r.join(C.fileURLToPath(import.meta.url),"../../vscode-config-files"),i=r.join(n.cwd,".vscode");k.mkdir("-p",i),k.cp(`${e}/*`,i),O([".vscode"]);},G=e=>{let i=r.join(C.fileURLToPath(import.meta.url),"../../husky-config-files",S()),t=r.join(n.cwd,".husky");k.mkdir("-p",t),e.forEach(s=>{k.cp(r.join(i,s),r.join(t,s));});},$=async(e,i)=>{if(!i?.length)return;let t=r.join(C.fileURLToPath(import.meta.url),"../../config-files"),s=m.readdirSync(t),o=create(create$1());s.forEach(p=>{let l=p.replace(/^dot\./u,".").replace(/\.tpl$/u,"");if(i.includes(l)){let a=r.join(t,p),g=r.join(n.cwd,l);o.copyTpl(a,g,{isMonorepo:c(),enableReact:D()||c(),enableJest:F()||c(),enableStylelint:e.includes("stylelint")});}}),await o.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 o=se[s];if(o){let{devDependencies:p={},publicHoistPattern:l=[],scripts:a={},packageScripts:g={},configFiles:q=[],huskyConfigFiles:z=[]}=o;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 oe=async e=>{let{devDependencies:i,publicHoistPattern:t,scripts:s,packageScripts:o,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(o);}},{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=oe;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; | ||
`),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=r.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),o=j(t.devDependencies,e);await removePackageDependencies(i,{dependencies:s,devDependencies:o});},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=r.join(C.fileURLToPath(import.meta.url),"../../vscode-config-files"),i=r.join(n.cwd,".vscode");k.mkdir("-p",i),k.cp(`${e}/*`,i),O([".vscode"]);},G=e=>{let i=r.join(C.fileURLToPath(import.meta.url),"../../husky-config-files",S()),t=r.join(n.cwd,".husky");k.mkdir("-p",t),e.forEach(s=>{k.cp(r.join(i,s),r.join(t,s));});},$=async(e,i)=>{if(!i?.length)return;let t=r.join(C.fileURLToPath(import.meta.url),"../../config-files"),s=m.readdirSync(t),o=create(create$1());s.forEach(a=>{let p=a.replace(/^dot\./u,".").replace(/\.tpl$/u,"");if(i.includes(p)){let l=r.join(t,a),g=r.join(n.cwd,p);o.copyTpl(l,g,{isMonorepo:c(),enableReact:D()||c(),enableJest:F()||c(),enableStylelint:e.includes("stylelint")});}}),await o.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 o=se[s];if(o){let{devDependencies:a={},publicHoistPattern:p=[],scripts:l={},packageScripts:g={},configFiles:q=[],huskyConfigFiles:z=[]}=o;t.devDependencies={...t.devDependencies,...a},t.publicHoistPattern=[...new Set([...t.publicHoistPattern,...p])],t.scripts={...t.scripts,...l},t.packageScripts={...t.packageScripts,...g},t.configFiles=[...new Set([...t.configFiles,...q])],t.huskyConfigFiles=[...new Set([...t.huskyConfigFiles,...z])];}}),t}var oe=async e=>{let{devDependencies:i,publicHoistPattern:t,scripts:s,packageScripts:o,configFiles:a,huskyConfigFiles:p}=A(e);J();let l=e.map(g=>f.clamjsBlue(g)).join(" ");f.step(`\u5F00\u59CB\u914D\u7F6E ${l}`),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(o);}},{title:"\u914D\u7F6E .husky",task:()=>{G(p);}},{title:"\u590D\u5236\u914D\u7F6E\u6587\u4EF6",task:async()=>{await $(e,a);}},{title:"\u914D\u7F6E .vscode",task:()=>{N();}}]),n.isOldProject&&f.note(`${f.list([{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"]}],!1)}`,"\u8BF7\u6839\u636E\u9879\u76EE\u5B9E\u9645\u60C5\u51B5\u8FDB\u884C\u4EE5\u4E0B\u64CD\u4F5C\u5B8C\u6210\u6700\u7EC8\u7684\u914D\u7F6E"),f.success(`\u914D\u7F6E ${l} \u6210\u529F`);},U=oe;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; | ||
@@ -20,0 +20,0 @@ export { _e as default }; |
{ | ||
"name": "@clamjs/configurator", | ||
"version": "0.0.1-beta.6", | ||
"version": "0.0.1-beta.7", | ||
"description": "Clamjs 工程化配置器", | ||
@@ -30,4 +30,4 @@ "bugs": { | ||
"write-package": "^7.0.1", | ||
"@clamjs/logger": "0.0.1-beta.5", | ||
"@clamjs/utils": "0.0.3-beta.6" | ||
"@clamjs/utils": "0.0.3-beta.7", | ||
"@clamjs/logger": "0.0.1-beta.6" | ||
}, | ||
@@ -34,0 +34,0 @@ "devDependencies": { |
Sorry, the diff of this file is not supported yet
45784
+ Added@clamjs/logger@0.0.1-beta.6(transitive)
+ Added@clamjs/utils@0.0.3-beta.7(transitive)
- Removed@clamjs/logger@0.0.1-beta.5(transitive)
- Removed@clamjs/utils@0.0.3-beta.6(transitive)
Updated@clamjs/logger@0.0.1-beta.6
Updated@clamjs/utils@0.0.3-beta.7