@cgzair/cgz-fabric 1.6.6 → 2.0.8
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 +7 -5
- package/lib/cli.js +1 -1
- package/lib/config/_prettierignore.ejs +5 -0
- package/lib/config/_vscode/settings.json.ejs +1 -0
- package/lib/config/eslint.config.mjs.ejs +37 -0
- package/lib/config/prettier.config.mjs.ejs +1 -0
- package/lib/config/stylelint.config.mjs.ejs +3 -0
- package/lib/constants/index.js +1 -1
- package/lib/index.js +1 -1
- package/lib/scripts/install.js +1 -1
- package/lib/utils/extension.js +1 -1
- package/lib/utils/generate-template.js +1 -1
- package/package.json +34 -33
- package/tsconfig.json +1 -1
- package/lib/config/_eslintignore.ejs +0 -3
- package/lib/config/_eslintrc.js.ejs +0 -3
- package/lib/config/_prettierrc.js.ejs +0 -3
- package/lib/config/_stylelintrc.js.ejs +0 -5
- /package/lib/config/{_commitlintrc.js.ejs → commitlint.config.cjs.ejs} +0 -0
package/README.md
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
# cgz-fabric
|
|
1
|
+
# @cgzair/cgz-fabric
|
|
2
2
|
|
|
3
3
|
fabric 是《信息技术部前端编码手册》的配套 CLI 工具,一键接入符合前端研发部门的编码规范,提高项目研发效率。
|
|
4
4
|
|
|
5
5
|
## 使用
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
安装:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
|
|
10
|
+
pnpm add @cgzair/cgz-fabric -D
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
+

|
|
14
|
+
|
|
13
15
|
### 自动配置
|
|
14
16
|
|
|
15
17
|
1.通过 `shell` 命令
|
|
@@ -18,7 +20,7 @@ yarn add @cgzair/cgz-fabric -D
|
|
|
18
20
|
npx fabric install
|
|
19
21
|
```
|
|
20
22
|
|
|
21
|
-
2.通过 `
|
|
23
|
+
2.通过 `pnpm scripts`
|
|
22
24
|
|
|
23
25
|
```json
|
|
24
26
|
// package.json
|
|
@@ -45,6 +47,6 @@ npx fabric install
|
|
|
45
47
|
|
|
46
48
|
帮助
|
|
47
49
|
|
|
48
|
-
```
|
|
50
|
+
```bash
|
|
49
51
|
fabric -h
|
|
50
52
|
```
|
package/lib/cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var __awaiter=this&&this.__awaiter||function(e,
|
|
2
|
+
"use strict";var __awaiter=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))(function(o,n){function a(e){try{s(i.next(e))}catch(e){n(e)}}function c(e){try{s(i.throw(e))}catch(e){n(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(a,c)}s((i=i.apply(e,t||[])).next())})},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const path_1=__importDefault(require("path")),cgz_core_1=require("@cgzair/cgz-core"),commander_1=require("commander"),install_1=__importDefault(require("./scripts/install")),extension_1=__importDefault(require("./utils/extension")),cwd=process.cwd(),currentPkg=(0,cgz_core_1.getCurrentPkg)(path_1.default.resolve(__dirname,"../"));commander_1.program.version(currentPkg.version,"-v").description(`${currentPkg.name} 是《信息技术部前端编码手册》的配套 CLI 工具,一键接入符合前端研发部门的编码规范,提高项目研发效率。`),commander_1.program.command("install").alias("i").description("交互式生成适用于当前项目的编码规范").option("--vsc","写入 .vscode 推荐配置").option("--ext","安装 vscode 推荐扩展").option("--local","使用内网 Nexus registry 安装依赖(http://nexus.it.cgzair.com/repository/npm/)").option("--registry <url>","自定义 npm registry 地址,优先级高于 --local").action(e=>__awaiter(void 0,void 0,void 0,function*(){e.ext?(0,extension_1.default)():yield(0,install_1.default)({cwd:cwd,local:e.local,registry:e.registry},e.vsc)})),commander_1.program.parse(process.argv);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import cgz, { defineConfig } from "@cgzair/eslint-config-cgz";
|
|
2
|
+
|
|
3
|
+
export default defineConfig([
|
|
4
|
+
{
|
|
5
|
+
ignores: [
|
|
6
|
+
"**/statics/**",
|
|
7
|
+
"**/dist/**",
|
|
8
|
+
"**/build/**",
|
|
9
|
+
],
|
|
10
|
+
},
|
|
11
|
+
<%_ if (eslint === 'javascript') { _%>
|
|
12
|
+
...cgz.common,
|
|
13
|
+
<%_ } else if (eslint === 'typescript') { _%>
|
|
14
|
+
...cgz.typescript,
|
|
15
|
+
<%_ } else if (eslint === 'react') { _%>
|
|
16
|
+
...cgz.react,
|
|
17
|
+
<%_ } else if (eslint === 'typescript/react') { _%>
|
|
18
|
+
...cgz.ts.react,
|
|
19
|
+
<%_ } else if (eslint === 'vue') { _%>
|
|
20
|
+
...cgz.vue,
|
|
21
|
+
<%_ } else if (eslint === 'typescript/vue') { _%>
|
|
22
|
+
...cgz.ts.vue,
|
|
23
|
+
<%_ } else if (eslint === 'node') { _%>
|
|
24
|
+
...cgz.node,
|
|
25
|
+
<%_ } else if (eslint === 'typescript/node') { _%>
|
|
26
|
+
...cgz.ts.node,
|
|
27
|
+
<%_ } else if (eslint === 'es5') { _%>
|
|
28
|
+
...cgz.es5,
|
|
29
|
+
<%_ } else if (eslint === 'uni-app') { _%>
|
|
30
|
+
...cgz.uniApp,
|
|
31
|
+
<%_ } else if (eslint === 'typescript/uni-app') { _%>
|
|
32
|
+
...cgz.ts.uniApp,
|
|
33
|
+
<%_ } _%>
|
|
34
|
+
<%_ if (prettier) { _%>
|
|
35
|
+
cgz.prettier,
|
|
36
|
+
<%_ } _%>
|
|
37
|
+
]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "@cgzair/prettier-config-cgz";
|
package/lib/constants/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.MARKDOWN_LINT_IGNORE_PATTERN=exports.STYLELINT_IGNORE_PATTERN=exports.STYLELINT_FILE_EXT=exports.PROJECT_CATEGORYS=void 0,exports.PROJECT_CATEGORYS=[{name:"非 React、Vue、Node.js 的项目(JavaScript)",value:"javascript"},{name:"非 React、Vue、Node.js 的项目(TypeScript)",value:"typescript"},{name:"React 项目(JavaScript)",value:"react"},{name:"React 项目(TypeScript)",value:"typescript/react"},{name:"Vue 项目(JavaScript)",value:"vue"},{name:"Vue 项目(TypeScript)",value:"typescript/vue"},{name:"Node.js 项目(JavaScript)",value:"node"},{name:"Node.js 项目(TypeScript)",value:"typescript/node"},{name:"使用 ES5 及之前版本 JavaScript 的老项目",value:"es5"},{name:"uni-app 项目(JavaScript)",value:"uni-app"},{name:"uni-app 项目(TypeScript)",value:"typescript/uni-app"}],exports.STYLELINT_FILE_EXT=[".css",".scss",".less"],exports.STYLELINT_IGNORE_PATTERN=["build","statics","dist"],exports.MARKDOWN_LINT_IGNORE_PATTERN=["node_modules/","build","dist","statics"];
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.UNICODE=exports.PRETTIER_IGNORE_PATTERN=exports.MARKDOWN_LINT_IGNORE_PATTERN=exports.STYLELINT_IGNORE_PATTERN=exports.STYLELINT_FILE_EXT=exports.PROJECT_CATEGORYS=void 0,exports.PROJECT_CATEGORYS=[{name:"非 React、Vue、Node.js 的项目(JavaScript)",value:"javascript"},{name:"非 React、Vue、Node.js 的项目(TypeScript)",value:"typescript"},{name:"React 项目(JavaScript)",value:"react"},{name:"React 项目(TypeScript)",value:"typescript/react"},{name:"Vue 项目(JavaScript)",value:"vue"},{name:"Vue 项目(TypeScript)",value:"typescript/vue"},{name:"Node.js 项目(JavaScript)",value:"node"},{name:"Node.js 项目(TypeScript)",value:"typescript/node"},{name:"使用 ES5 及之前版本 JavaScript 的老项目",value:"es5"},{name:"uni-app 项目(JavaScript)",value:"uni-app"},{name:"uni-app 项目(TypeScript)",value:"typescript/uni-app"}],exports.STYLELINT_FILE_EXT=[".css",".scss",".less"],exports.STYLELINT_IGNORE_PATTERN=["build","statics","dist"],exports.MARKDOWN_LINT_IGNORE_PATTERN=["node_modules/","build","dist","statics"],exports.PRETTIER_IGNORE_PATTERN=["node_modules","dist","build",".husky","*.min.js","*.min.css","pnpm-lock.yaml","package-lock.json"],exports.UNICODE={success:"🎉 🎉 🎉 🎉 🎉",failure:"✖"};
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __awaiter=this&&this.__awaiter||function(t,
|
|
1
|
+
"use strict";var __awaiter=this&&this.__awaiter||function(t,i,e,n){return new(e||(e=Promise))(function(r,o){function a(t){try{s(n.next(t))}catch(t){o(t)}}function u(t){try{s(n.throw(t))}catch(t){o(t)}}function s(t){var i;t.done?r(t.value):(i=t.value,i instanceof e?i:new e(function(t){t(i)})).then(a,u)}s((n=n.apply(t,i||[])).next())})},__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.init=void 0;const install_1=__importDefault(require("./scripts/install")),init=(t,i)=>__awaiter(void 0,void 0,void 0,function*(){return yield(0,install_1.default)(t,i)});exports.init=init;
|
package/lib/scripts/install.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __awaiter=this&&this.__awaiter||function(e,
|
|
1
|
+
"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(s,r){function c(e){try{o(n.next(e))}catch(e){r(e)}}function l(e){try{o(n.throw(e))}catch(e){r(e)}}function o(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(c,l)}o((n=n.apply(e,t||[])).next())})},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),cgz_core_1=require("@cgzair/cgz-core"),execa_1=__importDefault(require("execa")),inquirer_1=__importDefault(require("inquirer")),index_1=require("../constants/index"),extension_1=__importDefault(require("../utils/extension")),generate_template_1=__importDefault(require("../utils/generate-template"));let step=0;const handleEslint=()=>__awaiter(void 0,void 0,void 0,function*(){const{type:e}=yield inquirer_1.default.prompt({type:"list",name:"type",message:`第 ${++step} 步,请选择项目类型:`,choices:index_1.PROJECT_CATEGORYS});return e}),handleStylelint=e=>__awaiter(void 0,void 0,void 0,function*(){const{enable:t}=yield inquirer_1.default.prompt({type:"confirm",name:"enable",message:`第 ${++step} 步,是否启用 stylelint(若没有样式文件则不需要):`,default:e});return t}),handleMarkdownLint=()=>__awaiter(void 0,void 0,void 0,function*(){const{enable:e}=yield inquirer_1.default.prompt({type:"confirm",name:"enable",message:`第 ${++step} 步,是否启用 markdownlint:`,default:!0});return e}),handlePrettier=()=>__awaiter(void 0,void 0,void 0,function*(){const{enable:e}=yield inquirer_1.default.prompt({type:"confirm",name:"enable",message:`第 ${++step} 步,是否启用 Prettier 格式化代码(推荐始终开启):`,default:!0});return e}),removeConflictingDeps=e=>{const t=path_1.default.resolve(e,"package.json");if(!fs_1.default.existsSync(t))return!1;try{const e=JSON.parse(fs_1.default.readFileSync(t,"utf8")),i=e=>!e.startsWith("@cgzair/")&&(!!("eslint"===e||e.startsWith("eslint-")||e.startsWith("@eslint/")||e.includes("eslint-config")||e.includes("eslint-plugin")||e.includes("eslint-formatter")||e.includes("typescript-eslint")||e.startsWith("babel-eslint")||e.startsWith("@babel/eslint-")||"@umijs/lint"===e)||(!!("stylelint"===e||e.startsWith("stylelint-")||e.startsWith("@stylelint/")||e.includes("stylelint-config")||e.includes("stylelint-plugin"))||(!!("prettier"===e||e.startsWith("prettier-")||e.startsWith("@prettier/")||e.includes("prettier-plugin")||e.includes("prettier-config"))||(!!e.includes("markdownlint")||!!e.includes("commitlint")))));let n=!1;if(["dependencies","devDependencies"].forEach(t=>{e[t]&&Object.keys(e[t]).forEach(s=>{i(s)&&(delete e[t][s],n=!0)})}),n)return fs_1.default.writeFileSync(t,`${JSON.stringify(e,null,2)}\n`,"utf8"),cgz_core_1.log.info("已自动从 package.json 中移除冲突的旧版依赖"),!0}catch(e){cgz_core_1.log.error(`读取或修改 package.json 失败: ${e}`)}return!1},addProjectDeps=(e,t)=>{const i=path_1.default.resolve(e,"package.json");if(!fs_1.default.existsSync(i))return!1;try{const e=JSON.parse(fs_1.default.readFileSync(i,"utf8")),n=(0,cgz_core_1.getCurrentPkg)(path_1.default.resolve(__dirname,"../../"));e.devDependencies=e.devDependencies||{};const s=n.peerDependencies||{},r={},c=(e,t)=>{const i=s[e];return!i||i.startsWith("workspace:")?t:i};t.eslint&&(r["@cgzair/eslint-config-cgz"]=c("@cgzair/eslint-config-cgz","^2.0.2"),r.eslint="^9.39.2"),t.stylelint&&(r["@cgzair/stylelint-config-cgz"]=c("@cgzair/stylelint-config-cgz","^2.0.0"),r.stylelint="^16.26.1"),t.prettier&&(r["@cgzair/prettier-config-cgz"]=c("@cgzair/prettier-config-cgz","^2.0.0"),r.prettier="^3.7.4",r["@trivago/prettier-plugin-sort-imports"]="^6.0.0"),t.markdownlint&&(r["@cgzair/markdownlint-config-cgz"]=c("@cgzair/markdownlint-config-cgz","^2.0.0"),r["markdownlint-cli"]="^0.35.0"),r["@cgzair/commitlint-config-cgz"]=c("@cgzair/commitlint-config-cgz","^2.0.0"),r["@commitlint/cli"]="^16.2.1",r["@commitlint/cz-commitlint"]="^20.2.0",r.commitizen="^4.2.4",r.husky="^9.1.7";let l=!1;if(Object.keys(r).forEach(t=>{e.devDependencies[t]!==r[t]&&(e.devDependencies[t]=r[t],l=!0)}),l){const t={};return Object.keys(e.devDependencies).sort().forEach(i=>{t[i]=e.devDependencies[i]}),e.devDependencies=t,fs_1.default.writeFileSync(i,`${JSON.stringify(e,null,2)}\n`,"utf8"),cgz_core_1.log.info("已自动向 package.json 中写入最新的规范依赖包"),!0}}catch(e){cgz_core_1.log.error(`自动向 package.json 写入依赖包失败: ${e}`)}return!1},LOCAL_REGISTRY="http://nexus.it.cgzair.com/repository/npm/",pruneAndInstall=(e,t)=>{if(fs_1.default.existsSync(path_1.default.join(e,"yarn.lock")))return void cgz_core_1.log.error("当前项目使用 yarn,@cgzair/cgz-fabric 仅支持 pnpm(需要 autoInstallPeers 机制自动安装规范依赖),请迁移到 pnpm 后重试。");if(fs_1.default.existsSync(path_1.default.join(e,"package-lock.json")))return void cgz_core_1.log.error("当前项目使用 npm,@cgzair/cgz-fabric 仅支持 pnpm(需要 autoInstallPeers 机制自动安装规范依赖),请迁移到 pnpm 后重试。");const i=t?["--registry",t]:[];t===LOCAL_REGISTRY?cgz_core_1.log.info(`内网模式已开启,将使用内网 Nexus registry:${t}`):t&&cgz_core_1.log.info(`自定义 registry 已设置:${t}`),cgz_core_1.log.info("正在执行 pnpm install(autoInstallPeers 将自动安装规范依赖)...");try{execa_1.default.sync("pnpm",["install",...i],{cwd:e,stdio:"inherit"}),cgz_core_1.log.success("依赖安装完成")}catch(e){cgz_core_1.log.error("自动执行 pnpm install 失败,请稍后手动运行以更新依赖环境。")}};exports.default=(e,t)=>__awaiter(void 0,void 0,void 0,function*(){const i=path_1.default.resolve(e.cwd||process.cwd()),n=e.registry||(e.local?LOCAL_REGISTRY:void 0),s={};process.chdir(i),e.eslint&&index_1.PROJECT_CATEGORYS.some(t=>t.value===e.eslint)?s.eslint=e.eslint:s.eslint=yield handleEslint(),"boolean"==typeof e.stylelint?s.stylelint=e.stylelint:s.stylelint=yield handleStylelint(!/node/.test(s.eslint)),"boolean"==typeof e.markdownlint?s.markdownlint=e.markdownlint:s.markdownlint=yield handleMarkdownLint(),"boolean"==typeof e.prettier?s.prettier=e.prettier:s.prettier=yield handlePrettier(),removeConflictingDeps(i),addProjectDeps(i,s),cgz_core_1.log.info(`第 ${++step} 步,配置 git commit 卡点`);try{try{execa_1.default.sync("npx",["husky","install"],{cwd:i})}catch(e){try{execa_1.default.sync("npx",["husky"],{cwd:i})}catch(e){}}const e=(e,t)=>{const n=path_1.default.join(i,`.husky/${e}`),s=path_1.default.join(i,".husky/_/husky.sh");let r="";r=fs_1.default.existsSync(s)?`#!/usr/bin/env sh\n. "$(dirname -- "$0")/_/husky.sh"\n\n${t}\n`:`#!/usr/bin/env sh\n${t}\n`,fs_1.default.writeFileSync(n,r,{mode:493})};e("commit-msg",'npx --no-install commitlint --edit "$1"'),e("pre-commit","npx --no-install lint-staged"),(0,cgz_core_1.setScripts)("commit","git-cz",i),(0,cgz_core_1.setScripts)("postinstall","husky install",i);const t=[];s.eslint&&((0,cgz_core_1.setScripts)("lint:eslint",'eslint "src/**/*.{js,jsx,ts,tsx,vue}" --cache --fix',i),t.push("pnpm run lint:eslint")),s.stylelint&&((0,cgz_core_1.setScripts)("lint:css",'stylelint "src/**/*.{css,scss,sass,less}" --allow-empty-input --fix',i),t.push("pnpm run lint:css")),s.markdownlint&&((0,cgz_core_1.setScripts)("lint:md",'markdownlint README.md "src/**/*.md" --fix',i),t.push("pnpm run lint:md")),t.length>0&&(0,cgz_core_1.setScripts)("lint",t.join(" && "),i),s.prettier&&(0,cgz_core_1.setScripts)("format",'prettier --write "src/**/*.{js,jsx,ts,tsx,vue,css,scss,sass,less,json,md}"',i),(0,cgz_core_1.setConfig)("config",{commitizen:{path:"@commitlint/cz-commitlint"}},i),(0,cgz_core_1.setConfig)("lint-staged",{"*.{js,jsx,tsx,ts,vue}":"eslint --cache --fix","*.{scss,less,css}":"stylelint --fix --allow-empty-input","*.md":"markdownlint --fix","*.{js,jsx,tsx,ts,vue,scss,less,css,json,html}":"prettier --write"},i),cgz_core_1.log.success("配置 git commit 卡点成功")}catch(e){cgz_core_1.log.error(e),cgz_core_1.log.error("配置 git commit 卡点失败")}cgz_core_1.log.info(`第 ${++step} 步,写入编码规范配置文件`),(0,generate_template_1.default)(i,s,t),cgz_core_1.log.success("写入编码规范配置文件成功"),pruneAndInstall(i,n),cgz_core_1.log.info(`第 ${++step} 步,安装vscode 扩展`),(0,extension_1.default)(i),cgz_core_1.log.result("初始化完成",path_1.default.resolve(__dirname,"../../"),!0)});
|
package/lib/utils/extension.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const child_process_1=require("child_process"),fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),cgz_core_1=require("@cgzair/cgz-core");exports.default=(e=path_1.default.resolve(__dirname,"../../../"))=>{try{(0,child_process_1.execSync)("code -v")}catch(e){return cgz_core_1.log.info("当前系统暂未安装 vscode,扩展安装已跳过,更多请参考:https://code.visualstudio.com/")}JSON.parse(fs_1.default.readFileSync(path_1.default.resolve(__dirname,"../config/_vscode/extensions.json.ejs"),"utf-8")).recommendations.forEach(e=>{cgz_core_1.log.info(`安装 ${e} ...`),(0,child_process_1.execSync)(`code --install-extension ${e}`),cgz_core_1.log.info(`${e} 安装成功`)}),(0,cgz_core_1.setScripts)("extension","fabric i --ext",e),cgz_core_1.log.info("写入 vscode 扩展 scripts 配置成功"),cgz_core_1.log.success("安装推荐 vscode 扩展成功")};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),cgz_core_1=require("@cgzair/cgz-core"),ejs_1=__importDefault(require("ejs")),glob_1=require("glob"),lodash_1=__importDefault(require("lodash")),index_1=require("../constants/index"),mergeVSCodeConfig=(e,t)=>{if(!(0,cgz_core_1.isAccessSync)(e))return t;try{const r=JSON.parse(fs_1.default.readFileSync(e,"utf8")),s=JSON.parse(t);return JSON.stringify(lodash_1.default.mergeWith(r,s,(e,t)=>{if(Array.isArray(e)&&Array.isArray(t))return lodash_1.default.union(t.concat(e))}),null,2)}catch(e){return""}},removeLegacyConfigs=e=>{const t=[".eslintrc.js",".eslintrc.cjs",".eslintrc.json",".eslintrc.yaml",".eslintrc.yml",".eslintrc",".eslintignore",".prettierrc",".prettierrc.js",".prettierrc.cjs",".prettierrc.json",".prettierrc.yaml",".prettierrc.yml","prettier.config.js","prettier.config.cjs",".prettierignore",".stylelintrc",".stylelintrc.js",".stylelintrc.cjs",".stylelintrc.json",".stylelintrc.yaml",".stylelintrc.yml","stylelint.config.js","stylelint.config.cjs",".stylelintignore",".commitlintrc.js",".commitlintrc.cjs","commitlint.config.js","commitlint.config.mjs"];for(const r of t){const t=path_1.default.resolve(e,r);if(fs_1.default.existsSync(t))try{fs_1.default.unlinkSync(t)}catch(e){}}};exports.default=(e,t,r,s=path_1.default.resolve(__dirname,"../config"))=>{r||removeLegacyConfigs(e);const i=(0,glob_1.globSync)((r?"_vscode":"**")+"/*.ejs",{cwd:s});(0,cgz_core_1.isAccessSync)(path_1.default.resolve(e,".vscode"))||fs_1.default.mkdirSync(path_1.default.resolve(e,".vscode"));for(const r of i){const i=path_1.default.resolve(e,r.replace(/\.ejs$/,"").replace(/^_/,"."));let l=ejs_1.default.render(fs_1.default.readFileSync(path_1.default.resolve(s,r),"utf8"),Object.assign({stylelintExt:index_1.STYLELINT_FILE_EXT,stylelintIgnores:index_1.STYLELINT_IGNORE_PATTERN,markdownLintIgnores:index_1.MARKDOWN_LINT_IGNORE_PATTERN,prettierIgnores:index_1.PRETTIER_IGNORE_PATTERN},t));/^_vscode/.test(r)&&(l=mergeVSCodeConfig(i,l)),l.trim()&&fs_1.default.writeFileSync(i,l,"utf8")}};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cgzair/cgz-fabric",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.8",
|
|
4
4
|
"description": "A collection of configuration files containing prettier, eslint, stylelint, markdown",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"cgz-fabric"
|
|
11
11
|
],
|
|
12
12
|
"scripts": {
|
|
13
|
-
"build": "
|
|
13
|
+
"build": "npx rimraf -g \"lib/**\" && pnpm run copy && tsc",
|
|
14
14
|
"copy": "copyfiles -a -u 1 \"src/config/**\" lib",
|
|
15
15
|
"test": "jest",
|
|
16
16
|
"test-watch": "jest --watch",
|
|
@@ -23,58 +23,59 @@
|
|
|
23
23
|
"tsconfig.json"
|
|
24
24
|
],
|
|
25
25
|
"author": "cgz",
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"@cgzair/commitlint-config-cgz": "^2.0.0",
|
|
28
|
+
"@cgzair/eslint-config-cgz": "^2.0.4",
|
|
29
|
+
"@cgzair/markdownlint-config-cgz": "^2.0.0",
|
|
30
|
+
"@cgzair/prettier-config-cgz": "^2.0.0",
|
|
31
|
+
"@cgzair/stylelint-config-cgz": "^2.0.1"
|
|
32
|
+
},
|
|
33
|
+
"peerDependenciesMeta": {
|
|
34
|
+
"@cgzair/stylelint-config-cgz": {
|
|
35
|
+
"optional": true
|
|
36
|
+
},
|
|
37
|
+
"@cgzair/prettier-config-cgz": {
|
|
38
|
+
"optional": true
|
|
39
|
+
},
|
|
40
|
+
"@cgzair/markdownlint-config-cgz": {
|
|
41
|
+
"optional": true
|
|
42
|
+
}
|
|
43
|
+
},
|
|
26
44
|
"dependencies": {
|
|
27
|
-
"@
|
|
28
|
-
"@babel/eslint-parser": "^7.16.5",
|
|
29
|
-
"@babel/plugin-proposal-class-properties": "^7.16.7",
|
|
30
|
-
"@babel/plugin-proposal-decorators": "^7.16.7",
|
|
31
|
-
"@babel/preset-env": "^7.16.10",
|
|
32
|
-
"@babel/preset-react": "^7.16.7",
|
|
33
|
-
"@babel/preset-typescript": "^7.16.7",
|
|
34
|
-
"@cgzair/cgz-core": "^1.3.0",
|
|
35
|
-
"@cgzair/commitlint-config-cgz": "^1.1.0",
|
|
36
|
-
"@cgzair/eslint-config-cgz": "^1.2.4",
|
|
37
|
-
"@cgzair/markdownlint-config-cgz": "^1.4.0",
|
|
38
|
-
"@cgzair/prettier-config-cgz": "^1.1.3",
|
|
39
|
-
"@cgzair/stylelint-config-cgz": "^1.1.0",
|
|
40
|
-
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
|
41
|
-
"@typescript-eslint/eslint-plugin": "^5.13.0",
|
|
42
|
-
"@typescript-eslint/parser": "^5.13.0",
|
|
45
|
+
"@cgzair/cgz-core": "^2.0.0-alpha.0",
|
|
43
46
|
"chalk": "4.1.2",
|
|
44
47
|
"commander": "^9.0.0",
|
|
45
48
|
"ejs": "^3.1.6",
|
|
46
|
-
"
|
|
47
|
-
"eslint-config-prettier": "^8.5.0",
|
|
48
|
-
"eslint-plugin-import": "^2.25.4",
|
|
49
|
-
"eslint-plugin-jsx-a11y": "^6.5.1",
|
|
50
|
-
"eslint-plugin-react": "^7.28.0",
|
|
51
|
-
"eslint-plugin-react-hooks": "^4.3.0",
|
|
52
|
-
"eslint-plugin-vue": "^8.5.0",
|
|
53
|
-
"glob": "^7.2.0",
|
|
49
|
+
"glob": "^13.0.0",
|
|
54
50
|
"inquirer": "^8.2.1",
|
|
55
|
-
"
|
|
56
|
-
"markdownlint-cli": "^0.31.1",
|
|
57
|
-
"vue-eslint-parser": "^8.3.0"
|
|
51
|
+
"lodash": "^4.17.21"
|
|
58
52
|
},
|
|
59
53
|
"devDependencies": {
|
|
54
|
+
"@cgzair/commitlint-config-cgz": "2.0.0",
|
|
55
|
+
"@cgzair/eslint-config-cgz": "2.0.4",
|
|
56
|
+
"@cgzair/markdownlint-config-cgz": "2.0.0",
|
|
57
|
+
"@cgzair/prettier-config-cgz": "2.0.0",
|
|
58
|
+
"@cgzair/stylelint-config-cgz": "2.0.1",
|
|
60
59
|
"@types/ejs": "^3.1.0",
|
|
61
60
|
"@types/fs-extra": "^9.0.13",
|
|
62
61
|
"@types/glob": "^7.2.0",
|
|
63
62
|
"@types/inquirer": "^8.2.0",
|
|
63
|
+
"@types/lodash": "^4.14.195",
|
|
64
64
|
"copyfiles": "^2.4.1",
|
|
65
65
|
"execa": "5.1.1",
|
|
66
66
|
"fs-extra": "^10.1.0",
|
|
67
|
-
"jest": "
|
|
67
|
+
"jest": "^30.2.0",
|
|
68
68
|
"nyc": "^15.1.0",
|
|
69
69
|
"ts-node": "^10.8.1",
|
|
70
|
-
"typescript": "^
|
|
70
|
+
"typescript": "^5.9.3"
|
|
71
71
|
},
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
|
74
74
|
},
|
|
75
75
|
"engines": {
|
|
76
|
-
"node": ">=
|
|
76
|
+
"node": ">=24.14.1",
|
|
77
|
+
"pnpm": ">=9.0.0"
|
|
77
78
|
},
|
|
78
79
|
"license": "MIT",
|
|
79
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "516c41f893f18edaf5b49db8eab6e7541ba70c31"
|
|
80
81
|
}
|
package/tsconfig.json
CHANGED
|
File without changes
|