oojs / ui
Requires
- php: >=7.4.3
Requires (Dev)
- mediawiki/mediawiki-codesniffer: 44.0.0
- mediawiki/mediawiki-phan-config: 0.14.0
- mediawiki/minus-x: 1.1.3
- php-parallel-lint/php-console-highlighter: 1.0.0
- php-parallel-lint/php-parallel-lint: 1.4.0
- phpunit/phpunit: 9.6.16
- dev-master
- v0.51.1
- v0.51.0
- v0.50.4
- v0.50.3
- v0.50.2
- v0.50.1
- v0.50.0
- v0.49.2
- v0.49.1
- v0.49.0
- v0.48.4
- v0.48.3
- v0.48.2
- v0.48.1
- v0.48.0
- v0.47.5
- v0.47.4
- v0.47.3
- v0.47.2
- v0.47.1
- v0.47.0
- v0.46.3
- v0.46.2
- v0.46.1
- v0.46.0
- v0.45.0
- v0.44.x-dev
- v0.44.5
- v0.44.4
- v0.44.3
- v0.44.2
- v0.44.1
- v0.44.0
- v0.43.2
- v0.43.1
- v0.43.0
- v0.42.1
- v0.42.0
- v0.41.3
- v0.41.2
- v0.41.1
- v0.41.0
- v0.40.4
- v0.40.3
- v0.40.2
- v0.40.1
- v0.40.0
- v0.39.3
- v0.39.2
- v0.39.1
- v0.39.0
- v0.38.1
- v0.38.0
- v0.37.1
- v0.37.0
- v0.36.5
- v0.36.4
- v0.36.3
- v0.36.2
- v0.36.1
- v0.36.0
- v0.35.1
- v0.35.0
- v0.34.1
- v0.34.0
- v0.33.4
- v0.33.3
- v0.33.2
- v0.33.1
- v0.33.0
- v0.32.1
- v0.32.0
- v0.31.6
- v0.31.5
- v0.31.4
- v0.31.3
- v0.31.2
- v0.31.1
- v0.31.0
- v0.30.4
- v0.30.3
- v0.30.2
- v0.30.1
- v0.30.0
- v0.29.6
- v0.29.5
- v0.29.4
- v0.29.3
- v0.29.2
- v0.29.1
- v0.29.0
- v0.28.2
- v0.28.1
- v0.28.0
- v0.27.6
- v0.27.5
- v0.27.4
- v0.27.3
- v0.27.2
- v0.27.1
- v0.27.0
- v0.26.5
- v0.26.4
- v0.26.3
- v0.26.2
- v0.26.1
- v0.26.0
- v0.25.3
- v0.25.2
- v0.25.1
- v0.25.0
- v0.24.4.x-dev
- v0.24.4
- v0.24.3
- v0.24.2
- v0.24.1
- v0.24.0
- v0.23.5
- v0.23.4
- v0.23.3
- v0.23.2
- v0.23.1
- v0.23.0
- v0.22.5
- v0.22.4
- v0.22.3
- v0.22.2
- v0.22.1
- v0.22.0
- v0.21.4
- v0.21.3
- v0.21.2
- v0.21.1
- v0.21.0
- v0.20.2
- v0.20.1
- v0.20.0
- v0.19.5
- v0.19.4
- v0.19.3
- v0.19.2
- v0.19.1
- v0.19.0
- v0.18.4
- v0.18.3
- v0.18.2
- v0.18.1
- v0.18.0
- v0.17.10
- v0.17.9
- v0.17.8
- v0.17.7
- v0.17.6
- v0.17.5
- v0.17.4
- v0.17.3
- v0.17.2
- v0.17.1
- v0.17.0
- v0.16.6
- v0.16.5
- v0.16.4
- v0.16.3
- v0.16.2
- v0.16.1
- v0.16.0
- v0.15.4
- v0.15.3
- v0.15.2
- v0.15.1
- v0.15.0
- v0.14.1
- v0.14.0
- v0.13.3
- v0.13.2
- v0.13.1
- v0.13.0
- v0.12.12
- v0.12.11
- v0.12.10
- v0.12.9
- v0.12.8.1
- v0.12.8
- v0.12.7
- v0.12.6
- v0.12.5
- v0.12.4
- v0.12.3
- v0.12.2
- v0.12.1
- v0.12.0
- v0.11.8
- v0.11.7
- v0.11.6
- v0.11.5
- v0.11.4
- v0.11.3
- v0.11.2
- v0.11.1
- v0.11.0
- v0.10.1
- v0.10.0
- v0.9.8
- v0.9.7
- v0.9.6
- v0.9.5
- v0.9.4
- v0.9.3
- v0.9.2
- v0.9.1
- v0.9.0
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.0
- v0.6.6
- v0.6.5
- v0.6.4
- v0.6.3
- v0.6.2
- v0.6.1
- v0.6.0
- v0.5.0
- v0.4.0
- v0.3.0
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- dev-0.23.0-no-at-ease
This package is auto-updated.
Last update: 2024-09-19 17:59:56 UTC
README
OOUI是一个基于组件的JavaScript UI库。主要特性
- 常用小部件、布局和对话框
- 类、元素和混合,用于创建自定义界面
- 国际化本地化,如支持从右到左(RTL)语言
- 主题化
- 内置图标
- 无障碍功能
它是维基媒体基金会Web产品的标准库,最初是为VisualEditor使用而创建的。
快速开始
库可在npm上获得。要安装
$ npm install oojs-ui
安装后,包含以下脚本和样式以开始使用
<script src="node_modules/jquery/dist/jquery.min.js"></script> <script src="node_modules/oojs/dist/oojs.min.js"></script> <script src="node_modules/oojs-ui/dist/oojs-ui.min.js"></script> <script src="node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.js"></script> <link rel="stylesheet" href="node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.css">
加载库
尽管分发目录中文件众多,但您通常只需加载以下三个文件
oojs-ui.js
,包含完整库;- 以下之一:
oojs-ui-wikimediaui.css
或oojs-ui-apex.css
,包含特定主题的样式;以及 - 以下之一:
oojs-ui-wikimediaui.js
或oojs-ui-apex.js
,包含特定主题的代码
您还可以从名为oojs-ui-wikimediaui-icons-*.css
或oojs-ui-apex-icons-*.css
的文件中加载额外的图标包。
其余文件使您能够只加载整个库的部分。
此外,每个CSS文件都有一个从右到左(RTL)版本可用,如果您的环境不自动根据需要翻转,则可在使用从右到左语言的页面上使用。
问题跟踪器
发现错误或缺失功能?请在我们的问题跟踪器Phabricator中报告!
贡献
我们总是很高兴看到人们贡献补丁。要设置您的开发环境
-
克隆存储库:
$ git clone https://gerrit.wikimedia.org/r/oojs/ui oojs-ui
-
移动到库目录
$ cd oojs-ui
-
安装composer并确保运行
composer
将执行它(例如,将其添加到POSIX环境中的$PATH
)。 -
安装开发依赖项
$ npm install
-
构建库(如果您不需要重新构建PNG,则可以使用
grunt quick-build
)$ grunt build
-
您可以通过执行以下命令来查看
/demos
目录中的演示套件$ npm run-script demos
-
您还可以将分发目录中的文件复制到您的项目中。
-
您可以在根目录中运行
php -S localhost:80
以启动本地Web服务器。 -
您可以通过导航到http://localhost/tests/在浏览器中本地运行测试。
我们使用Gerrit进行代码审查,并使用Phabricator跟踪问题。要贡献补丁或加入讨论,您只需要一个开发者帐户。
- 如果您发现了错误,或者想要请求一个功能,请在Phabricator上提交一个工单。
- 要提交您的补丁,请遵循“入门”快速指南。我们尽量在一周内审查补丁。
- 我们自动对JavaScript、PHP、LESS/CSS、Ruby和JSON文件进行代码风格检查和格式化。您可以在推送更改之前,使用
npm test
和composer test
在本地上测试这些更改。在提交之前,应使用svgo --pretty --disable=removeXMLProcInst --disable=cleanupIDs <filename>
通过SVGO压缩SVG文件。
库的新版本通常在每周二的上午发布。
社区
获取更新,提出问题,并与维护者及贡献者加入讨论
- 加入wikitech-lWikimedia开发者邮件列表。
- 在
irc.libera.chat
的#wikimedia-dev
上与维护者聊天。 - 在StackOverflow上提问。
- 关注MediaWiki上的文档,以保持最新状态。
版本控制
我们遵循语义化版本控制指南。
版本号将按照以下格式进行编号
<主版本>.<次版本>.<修订号>
发布
先决条件
- 如果您还没有,请创建一个NPM账户
- 验证您是否可以登录您的NPM账户
- 验证您是否被列为oojs-ui包的维护者。如果不是,请让现有的维护者添加您。
- 确保您已设置了两步验证(2FA)。
- 运行
npm login
并遵循步骤。您可能只需在每个电脑上做一次。如果您不确定是否已经做过,可以运行npm whoami
;如果它打印出您的NPM用户名,您已经登录了。 - 克隆mediawiki/vendor仓库:https://gerrit.wikimedia.org/r/admin/repos/mediawiki/vendor,general
准备和提交发布提交
从此仓库的根目录,更新master并检出新的release
分支
$ git remote update $ git checkout -B release -t origin/master
清理安装npm依赖项,更新Composer依赖项,并确保测试通过
$ npm ci && composer update && npm test && composer test
生成包含在此版本中的提交列表
$ git log --format='* %s (%aN)' --no-merges v$(node -e 'console.log(require("./package").version);')...HEAD | grep -v "Localisation updates from" | sort
在History.md中,为这个版本添加一个新的标题和日期。将提交列表复制到新部分,并按顺序排序成五个子部分,忽略任何没有提交的子部分
### Breaking changes ### Deprecations ### Features ### Styles ### Code
生成此版本的Phabricator任务列表。复制生成的列表并保存以备后用。在后续步骤中,您将将其添加到MediaWiki核心提交的提交信息中。
$ git log --pretty=format:%b v$(node -e 'console.log(require("./package").version);')...HEAD | grep Bug: | sort | uniq
更新版本号(在以下命令中,如果您已经做出了破坏性更改,请将'patch'更改为'minor')
$ npm version patch --git-tag-version=false
提交发布并提交到Gerrit。注意,如果与发布相关的Phabricator任务,您应在运行git review
之前编辑提交以添加错误号。
$ git add -u
$ git commit -m "Tag v$(node -e 'console.log(require("./package").version);')"
$ git review
发布标签并推送到NPM
在标签提交合并到此仓库后,推送标签并将其发布到NPM
$ git remote update $ git checkout origin/master $ git tag "v$(node -e 'console.log(require("./package").version);')" $ npm run publish-build && git push --tags && npm publish
更新mediawiki/vendor仓库
在您本地的mediawiki/vendor仓库中,让Composer指向新版本并拉入更新的供应商文件
# Replace 1.2.34 with the version number of the new release
$ composer require oojs/oojs-ui 1.2.34 --no-update
$ composer update --no-dev
然后使用以下提交信息提交更改,将1.2.34替换为新OOUI版本号(例如:https://gerrit.wikimedia.org/r/c/mediawiki/vendor/+/813629)。
$ git add -u $ git commit
提交信息格式
Update OOUI to v1.2.34 Release notes: https://gerrit.wikimedia.org/g/oojs/ui/+/v1.2.34/History.md
将此推送到gerrit。注意提交信息中的Change-Id。将其复制并保存以备后用。在更新MediaWiki时,您将需要它用于提交信息中的Depends-On:行。
$ git review
# Show the last commit
$ git show --stat
更新MediaWiki核心仓库
在您的本地MediaWiki核心仓库中,打开composer.json
并将oojs/oojs-ui
的版本号更新为新版本号。
打开RELEASE-NOTES-1.NN
。如果已经有关于OOUI的项目列表,则更新最新的版本号。例如,如果有一个项目列表说“从v1.2.0更新OOUI到v1.2.33”,则更新后者版本号到v1.2.34
。如果没有关于OOUI的项目列表,请在Changed external libraries
部分添加一个。
打开resources/lib/foreign-resources.yaml
。对于OOUI列表,更改version
、purl
和src
URL以使用新版本号。计算新的完整性哈希值。
$ php maintenance/run.php manageForeignResources make-sri ooui # Or if you're running Docker... $ docker compose exec mediawiki php maintenance/run.php manageForeignResources make-sri ooui
然后更新OOUI库文件
$ php maintenance/run.php manageForeignResources update ooui # Or if you're running Docker... $ docker compose exec mediawiki php maintenance/run.php manageForeignResources update ooui
然后运行以下命令更新foreign-resources.cdx.json
$ php maintenance/run.php manageForeignResources make-cdx # Or if you're running Docker... $ docker compose exec mediawiki php maintenance/run.php manageForeignResources make-cdx
然后使用以下提交信息提交更改,将1.2.34替换为新OOUI版本号
$ git add -u $ git commit
提交信息格式,其中bug列表是您在OOUI标记步骤中生成的列表,Depends-On设置为mediawiki/vendor提交的Change-Id
Update OOUI to v1.2.34 Release notes: https://gerrit.wikimedia.org/g/oojs/ui/+/v1.2.34/History.md Bug: T123456 Bug: T234567 Depends-On: I12345678901234567890
然后将其提交推送到gerrit
git review
更新VisualEditor/VisualEditor仓库
在您的本地VisualEditor/VisualEditor仓库中,运行脚本以创建更新本地OOUI副本的提交,并将提交推送到Gerrit
$ ./bin/update-ooui.sh $ git review