npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@whalecloud/fdx

v2.0.7

Published

fdx组件库

Downloads

205

Readme

fish-desktop react版本

coverage Build Status

什么是FISH-X

FISH-X 是 FISH 下一代新版本。与阿里技术栈保持一致,在阿里开源项目(如桌面端Ant-design)上面继续开发,而不是从零开始做。

FISH-X 平台完整蓝图

  • Fish-Desktop-X,简称 FDX
  • Fish-Mobile-X,简称 FMX
  • Fish-Store-X,简称 FSX
  • Fish-Topo-X,简称 FTX
  • Fish-Koa-X,简称 FKX
  • Fish-CLI-X,简称 FCX
  • Fish-Unit-Test-X,简称 FUTX
  • NGWEB-DSL-X,简称 NGX

其中,Fish-CLI-X 是底层工具;

Fish-Store-X 是一个全公司共享的前端模板 Store;

NGWEB-DSL-X 是自定义领域建模语言,我们自定义自己的标签规范和语言,然后通过 NGWEB-DSL-X 映射成运行时代码,从而摆脱前端技术不稳定给公司带来的技术风险,这个思路类似于微信小程序和钉钉小程序。

FDX特点

  • 整体上,FDX 与 FMX 相同的 React 技术栈,这样做的原因是最大程度降低业务组织的学习难度。
  • 从阿里开源的组件库 AntD 上 fork 分支,而不是从零开始。这样做的目的是,降低对人力的需求。因为 UI 组件库的代码量非常庞大,FDX 做完之后预计会达到 10 万行 JS 代码的规模。目前我们的 FISH 版本已经超过 7 万行 JS,长期维护这样一个庞大的代码库需要消耗比较多的人力,这是很现实的成本。这里存在一个问题,阿里目前开源的 AntD 组件库是非常互联网化的风格,组件的外观很好看,但是每个组件的 feature 都相对比较简单,而软创目前的大部分业务项目还是后台管理类的项目,这些项目需要 UI 组件的特性非常复杂,我们需要投入比较多的人力来进行扩展和改造。
  • 根据实际业务抽像出的标准组件接口。 组件接口作为媒介沟通页面跟具体组件实现。比如我们用到了某一个开源的 UI 组件,我们会根据实际业务抽象出一份标准接口,对开源组件进行二次封装之后再调用。这样即使后续需要更换其他组件,也不需要对页面进行改动。所有的 UI 组件,不论是我们自己造轮子写的,还是开源的,都是按照:1. 定义接口 -> 2. 进行封装 -> 3. 实现并上传 znpm 服务器 -> 4. 项目 depencency 中引用来自 znpm 的组件 IDL。 这样的流程来进行引用。
  • 支持前端界面的微服务化,解决跨业务系统界面集成的难题。同时促进 UI/UX 规范化,方便跨业务系统集成

本地文档及示例查看

yarn install

npm run docz:dev

组件发布

  • 修改组件代码
  • 修改根目录下 package.json 文件中version中的版本号(版本号要比之前的大)
  • 根目录先执行 npm run compile 再执行 npm run dist 最后 npm publish,要切换到npm官方源进行发包。

官网文档更新

请至CI/CD流程pipeline中手动运行prepare和doc

发包流程

简介:

版本级别说明:

  1. 'major' : 表示主要版本的发布。当进行重大功能改动或不兼容的修改时,可以选择增加主要版本号。
  2. 'premajor': 表示主要版本的预发布。在进行主要版本发布之前,可以选择进行预发布,以便在发布正式版本之前进行测试和准备。
  3. 'minor': 表示次要版本的发布。当进行功能添加或兼容性改进时,可以选择增加次要版本号。
  4. 'preminor': 表示次要版本的预发布。在进行次要版本发布之前,可以选择进行预发布,以便在发布正式版本之前进行测试和准备。
  5. 'patch': 表示补丁版本的发布。当进行错误修复或较小的改进时,可以选择增加补丁版本号。
  6. 'prepatch': 表示补丁版本的预发布。在进行补丁版本发布之前,可以选择进行预发布,以便在发布正式版本之前进行测试和准备。
  7. 'prerelease': 表示预发布版本。当需要在正式版本发布之前进行更多的测试和准备时,可以选择发布预发布版本

changeset 配置项说明:

  • changelog: changelog 生成方式
  • commit: 不要让 changeset 在 publish 的时候帮我们做 git add
  • linked: 配置哪些包要共享版本
  • access: 公私有安全设定,内网建议 restricted ,开源使用 public
  • baseBranch: 项目主分支
  • updateInternalDependencies: 确保某包依赖的包发生 upgrade,该包也要发生 version upgrade 的衡量单位(量级)
  • ignore: 不需要变动 version 的包
  • ___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH: 在每次 version 变动时一定无理由 patch 抬升依赖他的那些包的版本,防止陷入 major 优先的未更新问题

示例配置:

{
"$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": [],
"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
    "onlyUpdatePeerDependentsWhenOutOfRange": true
  }
}

特别说明:非常重要!!!

该发布流程以 tag 为 锚点,去捞取 版本变更日志,以及总版本变更,所以每次发版本之后一定要检查 tag 是否发布正常

正式版本发布模式:

1、合并主分支: 将基础分支合并进来

        git merge origin/v3.0

2、生成变更集: 执行 yarn changeset :选择版本层级 + summary

        yarn changeset

3、消费预变更集: 执行 yarn version-package

        yarn version-package

4、加载变更日志: 执行 reloadlog 遍历每个包 将这段时间的commits 安装 文件夹去归类commits 信息 追加到 每个子包的changelog 上

        yarn changelog-gen

5、发包: 执行 yarn build + changeset publish (这一步可自行斟酌,发包时机不受限制,这里第五步只做建议)

        yarn build + changeset publish

6、提交变更日志: git add . + git commit -m 'xxxx' + git push

        git add . + git commit -m 'xxxx' + git push

7、生成tag: git tag v1.0.0 -m '初始版本' + git push origin v1.0.0

        git tag v1.0.0 -m '初始版本'  +  git push origin v1.0.0

版本发布详细流程:正式版本: 单包 + 多包 两轮发包流程

测试分支20597300(基于v5 分支) 当前版本(根目录版本)1.0.1

步骤1:
  1. 修改pkg1 中index.ts 内容
  2. commit信息 :#10597315 v1.0.1 : pkg1 修改;
  3. push;
步骤2:
  1. 修改pkg2中 index.ts 内容
  2. commit信息:#10597315 v1.0.1 : pkg2 修改;
  3. push;
步骤3:(开始发版本):

在当前分支下 合并v5分支 : git merge origin/v5;

执行 yarn changeset :

  1. 选择要发布的包:这里选择pkg1 和 pkg2:

image.png

  1. 选择 patch 版本级别发布;

键入summary 内容: test upgrade; 执行 yarn version-packages:

自动会升级 pkg1 pkg2 的版本号 ,生成对应的CHANGELOG.md, 并且应为 pkg3 引用了pkg1 ,pkg3 也会跟着升级:

image.png

  1. 执行 yarn changelog-gen :

1、检测根目录下package 版本是否和上一次tag 版本相同,如果版本相同则 patch 级别加1

2、拉取此刻距离上一次发tag的时间段内发生的 commits

3、解析每个commit 的文件夹 是否跟当前待发布的子包有交集,如果有交集则该子包的 CHANGELOG 将这次的commit 收集进去

步骤4:

执行 git add . && git commit -m '#10597315 v1.0.2 版本变更记录' && git push

步骤5:

执行 git tag v1.0.2 -m 'v1.0.2' + git push origin v1.0.2

此刻一个 发包流程结束 (npm publish 可自行处理),接下来基于这个版本 继续第二次版本发布

步骤6:
  1. 修改pkg2 中index.ts 内容;
  2. commit信息 :#20597300 v1.0.2 : pkg2 修改;
  3. push;
步骤7:开始第二次发包流程,类似第一次发包流程 ,简化一下

yarn changeset

yarn version-packages

yarn reloadlog

步骤8:

执行 git add . && git commit -m '#10597315 v1.0.3 版本变更记录' && git push

步骤9:

执行 git tag v1.0.3 -m 'v1.0.3' + git push origin v1.0.3

至此第二次发包流程结束

pre 预发布模式:

常用 预发布类型:

| 名称 | 功能 | | ------- | ------------------------------------------------------------------------------------------ | | alpha | 是内部测试版,一般不向外部发布,会有很多Bug,一般只有测试人员使用 | | beta | 也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出 | | rc | Release Candidate) 系统平台上就是发行候选版本。RC版不会再加入新的功能了,主要着重于除错 |

预发布流程:

注意:changeset 有一个bug: 当你的工作空间中,某个子包中,package.json 缺失 version 字段时,预发布流程会报错。请保持每个子包都有符合规范的version

步骤1: 进入 pre 模式, 这是使用 tag = beta 模式:

yarn changeset pre enter beta : 该步骤会在 .chengeset 文件夹下生成预发布配置文件 pre.json:

image.png

步骤2:执行 yarn changeset:
1. 选择 发布pkg3
2. 变更级别 patch
3. 这一步骤选择的 变更级别都会转成 预变更类型
步骤3:执行 yarn version-packages

生成如下升级产物

image.png

步骤4:执行 yarn reloadlog
收集 commits 信息

注:

  • 在pre 模式下 根目录下的version 变更规则也会保持 pre 预发布策略 ,变更层级默认 prereleaseimage.png

  • 与正常发布流程不同的是,预发布不会消费预变更集 ,会在发正式版本的时候同意消费;

后续步骤同 正常发布流程,这里不做赘述...

常见问题:

一次发两个包,但是两个包的发布级别不一样怎么处理?

在执行 yarn changeset 产生变更集的 过程中 ,

第一步选中所有要发包的版本:这里选择了 pk1 和 pk2:

image.png

第二步 按下回车键 选择发布级别 可以先选 pk1 为 major 级别:

image.png

第三步按下回车键,将剩下的 pkg2 设置为 minor 级别:

image.png

之后就走正常的发包流程即可:执行 yarn version-packages;

结果如下:

pkg1 走的 major 级别的改动 :1.0.2 -> 2.0.0

image.png

pkg2走的 minor 级别的改动 :3.0.0 -> 3.0.1

image.png

根目录下的版本号更新策略是什么?

* 正常发布模式下 根目录下的版本号在 reloadlog 环节中 默认 patch 级别 加 1 , 1.0.1 -> 1.0.2
* pre发布模式下 根目录下的版本号 在预发布版本 默认 prerelease, 例如:1.0.1 -> 1.0.2-beta.0 、 1.0.2-beta.0 -> 1.0.2-beta.1
* 退出pre模式后 根目录下所有的子包都会由 pre 版本转为 正式版本 1.0.2-beta.1 -> 1.0.2

commit 提交规范:

规范代码提交

代码提交规范对于团队或者公司来说是非常重要的,养成良好的代码提交规范可以方便回溯,有助于对本次提交进行review,如果单纯的只是要求团队成员遵循某些代码提交规范,是很难形成强制约束的,现在我们就尝试通过工具来约束代码提交规范。

使用commitizen规范commit提交格式

commitizen 的作用主要是为了生成标准化的 commit message,符合 Angular 规范。

一个标准化的 commit message 应该包含三个部分:Header、Body 和 Footer,其中的 Header 是必须的,Body 和 Footer 可以选填。

<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>

Header 部分由三个字段组成:type(必需)、scope(可选)、subject(必需)

Type (必须)type 必须是下面的其中之一:
  • feat: 增加新功能
  • fix: 修复 bug
  • docs: 只改动了文档相关的内容
  • style: 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号
  • refactor: 代码重构时使用,既不是新增功能也不是代码的bud修复
  • perf: 提高性能的修改
  • test: 添加或修改测试代码
  • build: 构建工具或者外部依赖包的修改,比如更新依赖包的版本
  • ci: 持续集成的配置文件或者脚本的修改
  • chore: 杂项,其他不需要修改源代码或不需要修改测试代码的修改
  • revert: 撤销某次提交
scope(可选):

用于说明本次提交的影响范围。scope 依据项目而定,例如在业务项目中可以依据菜单或者功能模块划分,如果是组件库开发,则可以依据组件划分。

subject(必需):

主题包含对更改的简洁描述:

注意三点:

  1. 使用祈使语气,现在时,比如使用 "change" 而不是 "changed" 或者 ”changes“
  2. 第一个字母不要大写
  3. 末尾不要以.结尾
Body(可选):

主要包含对主题的进一步描述,同样的,应该使用祈使语气,包含本次修改的动机并将其与之前的行为进行对比。

Footer(可选):

包含此次提交有关重大更改的信息,引用此次提交关闭的issue地址,如果代码的提交是不兼容变更或关闭缺陷,则Footer必需,否则可以省略。

直接上手:

上述步骤适用于第一次配置,这里我们已经配置好。这里提供两种方法去提交:

方法一:使用 commitizen 模板工具,直接执行以下命令:
yarn commit

只需要按照提示,根据模板一步一步执行下去,即可生成符合条件的commit 信息;

方法二:直接使用常规提交:

点击提交按钮 或者 git commit 命令,commitlint 会自动检验 commit 信息的合法性,按照错误提示修改即可;以feat 为例:

  git commit -m 'feat: #xxxxxx(某个任务单):完成xxxx 新功能 '
如何配置:
commitizencz-conventional-changelog

如果需要在项目中使用 commitizen 生成符合 AngularJS 规范的提交说明,还需要安装 cz-conventional-changelog 适配器。

$ yarn install -wD commitizen cz-conventional-changelog

工程根目录下的 package.json 中增加一条脚本:

"scripts": {
  "commit": "cz"
}

接下来就可以使用 $ yarn commit 来代替 $ git commit 进行代码提交了,看到下面的效果就表示已经安装成功了。

image.png

commitlint && husky:

前面我们提到,通过 commitizen && cz-conventional-changelog 可以规范我们的 commit message,但是同时也存在一个问题,如果用户不通过 yarn commit 来提交代码,而是直接通过 git commit 命令来提交代码,就能绕开 commit message 检查,这是我们不希望看到的。

因此接下来我们使用 commitlint 结合 husky 来对我们的提交行为进行约束。在 git commit 提交之前使用 git 钩子来验证信息,阻止不符合规范的commit 提交。

安装 commitlinthusky

yarn install -wD @commitlint/cli @commitlint/config-conventional husky

在工程根目录下增加 commitlint.config.js 配置文件,指定 commitlint 的校验配置文件:

module.exports = { extends: ['@commitlint/config-conventional'] };

husky 配置(husky的每个版本配置不一样,具体可以参考官方文档,当前的husky是v8.0.1)。

工程根目录下的 package.json 中增加一条 script:

"scripts": {
  "postinstall": "husky install"
}

该脚本会在执行完 $ yarn install 之后自动执行,进行 husky 的初始化,执行完毕后就会在根目录下创建一个 .husky 目录。

执行如下命令新增一个husky的hook:

$ npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'

当我们通过 git commit 提交不符合规范的代码,就会出现如下报错,并且自动退出提交流程。

image.png