mwstake/mediawiki-component-thirdpartyresources

提供ResourceLoader模块定义,允许包含第三方预编译资源(JS/CSS)

1.0.1 2022-02-25 09:02 UTC

This package is auto-updated.

Last update: 2024-09-22 09:13:34 UTC


README

MediaWiki的第三方资源

提供ResourceLoader模块定义,允许包含第三方预编译资源(JS/CSS)。

此代码旨在在MediaWiki框架中使用。请勿在MediaWiki之外尝试使用它。

在MediaWiki扩展中使用

"mwstake/mediawiki-component-thirdpartyresources": "~1.0" 添加到您的 composer.json 文件的 require 部分。

需要显式初始化。这可以通过以下方式实现:

  • 要么在您的 extension.json/skin.json 中添加 "callback": "mwsInitComponents"
  • 或者在你扩展/皮肤的定制 callback 方法中调用 mwsInitComponents();

另请参阅 mwstake/mediawiki-componentloader

可选:设置 package.json

在MediaWiki扩展/skins中,通常仅使用 package.json 进行CI任务,例如 eslint。因此,通常只有一个 "devDependecies" 条目,并且 node_modules/ 目录通常被排除在源代码管理之外,例如通过 .gitignore

如果使用 npm 来拉取实际依赖,建议将 "dist" 文件(夹)复制到扩展/皮肤的 resources/(或 modules/)目录。这可以通过一个 scripts.postinstall 条目轻松完成。

示例 package.json

"scripts": {
	"postinstall": "cp node_modules/some-package/dist/some-package.min.js resources/lib/"
},
"dependencies": {
	"some-package": "^1.0.0"
}

设置ResourceLoader模块

MediaWiki ResourceLoader可能会破坏预包装的JS/CSS文件,因为它应用了“压缩”。此外,它可能缺少正确的 module.exports 语句,以使第三方代码对消费代码可用。

为了克服这些问题,可以使用 "ResourceModule" 定义中的 "class" 属性,如下所示:

"ResourceModules": {
	"ext.SomePackageComponent": {
		"class": "MWStake\\MediaWiki\\Component\\ThirdPartyResources\\ResourceLoader\\DistFiles",
		"packageFiles": [
			"lib/some-package.min.js"
		]
	}
},
"ResourceFileModulePaths": {
	"localBasePath": "resources",
	"remoteExtPath": "MyExtension/resources"
},

如果需要特殊的 module.exports,它可以在 "module.exports" 属性中指定。

"ResourceModules": {
	"ext.VTreeView": {
		"class": "MWStake\\MediaWiki\\Component\\ThirdPartyResources\\ResourceLoader\\DistFiles",
		"module.exports": "SomePackageComponent",
		"packageFiles": [
			"lib/some-package.min.js"
		]
	}
},