{"id":16969207,"url":"https://github.com/js-banana/jack","last_synced_at":"2025-04-12T00:20:18.779Z","repository":{"id":53147866,"uuid":"518008887","full_name":"JS-banana/jack","owner":"JS-banana","description":"@jack/xx，多包管理方案：组件化、工具库","archived":false,"fork":false,"pushed_at":"2023-05-23T02:21:04.000Z","size":5523,"stargazers_count":8,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-25T20:04:13.869Z","etag":null,"topics":["changeset","component","monorepo","packages","pnpm","pnpm-workspace","rollup","typescript","utils","vue2","webpack"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JS-banana.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-26T10:08:40.000Z","updated_at":"2025-03-25T02:52:47.000Z","dependencies_parsed_at":"2025-02-20T10:32:33.940Z","dependency_job_id":"3b423d86-d3c7-4d40-8061-24ca92269c8d","html_url":"https://github.com/JS-banana/jack","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JS-banana%2Fjack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JS-banana%2Fjack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JS-banana%2Fjack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JS-banana%2Fjack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JS-banana","download_url":"https://codeload.github.com/JS-banana/jack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248498025,"owners_count":21114022,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["changeset","component","monorepo","packages","pnpm","pnpm-workspace","rollup","typescript","utils","vue2","webpack"],"created_at":"2024-10-14T00:24:25.676Z","updated_at":"2025-04-12T00:20:18.738Z","avatar_url":"https://github.com/JS-banana.png","language":"JavaScript","readme":"# @jack/xx 集合仓库\n\n**@jack**是一个采用了 `pnpm + workspace + changeset` 的**monorepo**多包管理组件化项目，当前技术栈为 vue2 相关生态为主（公司实际需求背景），项目设计是按照使用场景进行划分，目前主要包括基础组件、高级组件、工具类库等。\n\n子项目统一维护在 `packages/*`目录下，本项同时配套有文档网站系统（`docs`）、开发调试的真实模拟环境（`examples`），并做了 TypeScript 的支持，完善的项目工程化规范，包括但不限于 `ESlint`/`Prettier`/`CommitLint`\n\n## 特性\n\n- `TypeScript` 支持（目前主要使用在工具类子项目中）\n- 高性能`pnpm`工具，并搭配 `workspace`高效解决相互依赖关系\n- 完善的工程化规范 `husky`/`eslint`/`prettier`/`commitlint`\n- 使用`changeset`进行多包版本管理，自动维护有 `CHANGELOG`日志\n- `vuepress`文档网站系统\n- 组件库使用`webpack`构建\n- 工具类使用`rollup`构建\n\n## 介绍\n\n本项目采用最新的工具、最高效的设计、最简单上手的 pnpm + workspace + monorepo 方案\n\n主要技术栈如下：\n\n1. 组件类的开发、构建打包使用 JavaScript + Vue + Webpack\n2. 工具类的开发、构建打包使用 TypeScript + Rollup\n3. 文档网站当前方案使用的是 vuepress（基于 vue2、webpack）\n\n`package.json` 相关脚本命令如下：\n\n```json\n\"scripts\": {\n  // 项目工程脚本\n  \"preinstall\": \"npx only-allow pnpm\",\n  \"prepare\": \"husky install\",\n\n  // 开发和文档\n  \"dev\": \"pnpm run -C examples serve\",\n  \"docs:dev\": \"pnpm run -C docs dev\",\n  \"docs:build\": \"pnpm run -C docs build\",\n\n  // 格式化相关\n  \"lint\": \"eslint . --ext .vue,.js,.ts,.jsx,.tsx,.json --max-warnings 0\",\n  \"lint:fix\": \"eslint --fix . --ext .vue,.js,.ts,.jsx,.tsx,.json\",\n  \"lint:utils\": \"eslint --fix \\\"./packages/utils/**\\\" --ext .js,.ts,.json\",\n  \"markdownlint\": \"markdownlint \\\"./packages/**/*.md\\\"\",\n  \"markdownlint:fix\": \"markdownlint --fix \\\"**/*.md\\\"\",\n  \"format:code\": \"prettier -w . --cache --plugin-search-dir=.\",\n  \"pretty-quick\": \"pretty-quick --staged\",\n\n  // CHANGELOG\n  \"changelog\": \"conventional-changelog -p angular -i CHANGELOG.md -s \u0026\u0026 git add CHANGELOG.md\",\n\n  // 包构建相关\n  \"clean\": \"pnpm run --filter \\\"./packages/**\\\" -r --parallel clean\",\n  \"build:utils\": \"pnpm run --filter utils build\",\n  \"build:packages\": \"pnpm run --filter \\\"./packages/**\\\" -r --parallel build\",\n\n  // 包版本相关\n  \"preversion\": \"changeset\",\n  \"version\": \"changeset version \u0026\u0026 pnpm install --no-frozen-lockfile \u0026\u0026 pnpm run format:code\",\n  // 包发布相关\n  \"release\": \"pnpm run clean \u0026\u0026 pnpm run build:packages \u0026\u0026 changeset publish\",\n  \"release:nobuild\": \"changeset publish\"\n}\n```\n\n## TO DO LIST\n\n- [x] TypeScript 支持\n- [x] 文档网站开发，支持预览和 demo 查看、源码查看\n- [x] 组件库方案，支持 npm 发包，按需加载\n- [x] 配套的工程化配置，包括 eslint、commitlint 等\n- [ ] 在开发的过程中希望做到一定的自动化功能，如：文档 API 生成、demo 与源码自动区分展示\n- [x] vue2 技术栈的配套产出（本项目）\n- [ ] vue3 技术栈的配套产出\n- [ ] react 技术栈的配套产出\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjs-banana%2Fjack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjs-banana%2Fjack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjs-banana%2Fjack/lists"}