{"id":23385888,"url":"https://github.com/xianjie-li/m78","last_synced_at":"2025-04-11T03:52:58.126Z","repository":{"id":38993436,"uuid":"237593633","full_name":"xianjie-li/m78","owner":"xianjie-li","description":"front-end library, components, hooks, admin and...","archived":false,"fork":false,"pushed_at":"2024-08-25T13:25:34.000Z","size":113851,"stargazers_count":6,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-11T03:52:49.535Z","etag":null,"topics":["front-end","react","react-components","react-toolkits","typescript","ui-components"],"latest_commit_sha":null,"homepage":"https://m78.vercel.app/docs","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xianjie-li.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"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":"2020-02-01T09:47:54.000Z","updated_at":"2024-08-25T13:25:38.000Z","dependencies_parsed_at":"2023-10-16T22:56:01.632Z","dependency_job_id":"bf9d4270-c762-4992-87a5-ee4214eaa374","html_url":"https://github.com/xianjie-li/m78","commit_stats":{"total_commits":513,"total_committers":2,"mean_commits":256.5,"dds":0.007797270955165692,"last_synced_commit":"3a21ae2a779f0cc325c20eaaab9f084927da2a5b"},"previous_names":["iixianjie/m78"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xianjie-li%2Fm78","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xianjie-li%2Fm78/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xianjie-li%2Fm78/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xianjie-li%2Fm78/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xianjie-li","download_url":"https://codeload.github.com/xianjie-li/m78/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248339261,"owners_count":21087214,"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":["front-end","react","react-components","react-toolkits","typescript","ui-components"],"created_at":"2024-12-22T00:29:42.204Z","updated_at":"2025-04-11T03:52:58.109Z","avatar_url":"https://github.com/xianjie-li.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# M78 Land\n\nFront-end library, components, hooks, admin template, and more...\n\nStill in development.\n\n\n## 开发相关\n\n**包管理器**\n\n该项目使用 yarn v4 作为包管理器, 推荐开启并通过 corepack 来自动切换包管理器\n\n\u003cbr\u003e\n\n**monorepo**\n\n使用 yarn 的 workspace 特性来进行 monorepo 管理\n\n\u003cbr\u003e\n\n**devtools**\n\n工作区内提供了一个 devtools 模块, 它简单的包装了很多开发相关的工具, 例如ts, lint, 测试, 开发服务, 构建等, 用来简化各个模块的开发流程, 可以在各模块内通过 npm script 访问这些功能, 例如:\n\n```bash\n# 在工作区根目录执行, 创建一个新的包\n\nyarn m78 init ./packages/my-package\n\n# 在子包内执行以下命令, 进行对应的操作\n\nyarn test # 在工作区内执行测试\n\nyarn lint # 执行 lint 操作, 并处理可自动修复的部分\n\nyarn build # 构建模块\n\nyarn pub # 发布模块, 需要先进行 yarn npm login 认证\n\nyarn example:xxx # 运行模块内部提供的示例\n\nyarn workspace mod-a run build  # 你也可与在工作区任意位置通过 yarn workspace 来对该指定包运行命令\n```\n\n\u003cbr\u003e\n\n**ESM only**\n\n该项目所有模块都仅支持和输出 ES modules, 这即能简化分发的工作量, 又能更好的拥抱未来 :)\n\n所有需要发布的模块导入语句都应严格添加 `.js` 后缀, 且不可省略 `index.js`, 从而达到对 nodejs 和浏览器 ESM 的原生支持\n\n\u003e 事实上: 对于大部分项目 (使用bundler工具的项目), 这些打包器会自动处理 commonjs 和 es 模块的互交互, 而常规的 node 的项目中, 使用 cjs 的用户能够使用 import() 来导入 es 模块, 在目前版本中, 甚至已经可以使用 `--experimental-require-module` 来实现 require(ESM) , 所以在未来乃至现在, 模块兼容性都不再是一个值得一提的问题了. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxianjie-li%2Fm78","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxianjie-li%2Fm78","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxianjie-li%2Fm78/lists"}