Lucas_Werkmeister_WMDE added a comment.
I couldn’t figure out how to make it part of the app module, but extracting
the dispatcher into a separate module reduces the size of the init module
substantially:
diff --git a/client/data-bridge/package.json
b/client/data-bridge/package.json
index fd81fd9f4..383145e24 100644
--- a/client/data-bridge/package.json
+++ b/client/data-bridge/package.json
@@ -8,6 +8,7 @@
"build": "npm-run-all build:*",
"build:app": "NODE_ENV=production vue-cli-service build --no-clean
--target lib --formats commonjs src/main.ts",
"build:init": "NODE_ENV=production vue-cli-service build --no-clean",
+ "build:dispatcher": "NODE_ENV=production vue-cli-service build
--no-clean --target lib --formats commonjs --name dispatcher
src/mediawiki/Dispatcher.ts",
"fix": "vue-cli-service lint --max-warnings 0 .",
"test": "npm-run-all test:*",
"test:lint": "vue-cli-service lint --max-warnings 0 --no-fix . &&
stylelint --syntax scss 'src/**/*.(vue|scss)'",
diff --git a/client/data-bridge/src/mediawiki/init.ts
b/client/data-bridge/src/mediawiki/init.ts
index 3d78cc33c..62516a32d 100644
--- a/client/data-bridge/src/mediawiki/init.ts
+++ b/client/data-bridge/src/mediawiki/init.ts
@@ -1,9 +1,10 @@
import MwWindow from '@/@types/mediawiki/MwWindow';
import BridgeDomElementsSelector from
'@/mediawiki/BridgeDomElementsSelector';
import { SelectedElement } from '@/mediawiki/SelectedElement';
-import Dispatcher from '@/mediawiki/Dispatcher';
+import { default as DispatcherType } from '@/mediawiki/Dispatcher';
const APP_MODULE = 'wikibase.client.data-bridge.app';
+const DISPATCHER_MODULE = 'wikibase.client.data-bridge.dispatcher';
const WBREPO_MODULE = 'mw.config.values.wbRepo';
const FOREIGNAPI_MODULE = 'mediawiki.ForeignApi';
const ULS_MODULE = 'jquery.uls.data';
@@ -28,12 +29,14 @@ export default async (): Promise<void> => {
if ( linksToOverload.length > 0 ) {
const require = await mwWindow.mw.loader.using( [
APP_MODULE,
+ DISPATCHER_MODULE,
WBREPO_MODULE,
FOREIGNAPI_MODULE,
ULS_MODULE,
MWLANGUAGE_MODULE,
] ),
app = require( APP_MODULE ),
+ Dispatcher: typeof DispatcherType = require(
DISPATCHER_MODULE ).default,
dispatcher = new Dispatcher( mwWindow, app,
dataBridgeConfig );
linksToOverload.map( ( selectedElement: SelectedElement ) => {
diff --git a/client/resources/Resources.php b/client/resources/Resources.php
index 9c9a0e0f2..085d2bccd 100644
--- a/client/resources/Resources.php
+++ b/client/resources/Resources.php
@@ -66,6 +66,24 @@
}
],
+ 'wikibase.client.data-bridge.dispatcher' => [
+ 'factory' => function () {
+ $clientSettings =
WikibaseClient::getDefaultInstance()->getSettings();
+ return new ResourceLoaderFileModule(
+ [
+ 'scripts' => [
+ 'dispatcher.common.js'
+ ],
+ 'targets' =>
$clientSettings->getSetting( 'dataBridgeEnabled' ) ?
+ [ 'desktop', 'mobile' ]
:
+ [],
+ 'remoteExtPath' =>
'Wikibase/client/data-bridge/dist',
+ ],
+ __DIR__ . '/../data-bridge/dist'
+ );
+ },
+ ],
+
'wikibase.client.data-bridge.app' => [
'factory' => function () {
$clientSettings =
WikibaseClient::getDefaultInstance()->getSettings();
$ git show @:client/data-bridge/dist/data-bridge.init.js | wc -c
85411
$ cat client/data-bridge/dist/data-bridge.init.js | wc -c
56988
The new `dispatcher.common.js` is much larger than this difference, but I
hope that’s mostly because it’s not minified whereas `data-bridge.init.js` is.
TASK DETAIL
https://phabricator.wikimedia.org/T233305
EMAIL PREFERENCES
https://phabricator.wikimedia.org/settings/panel/emailpreferences/
To: Lucas_Werkmeister_WMDE
Cc: Lucas_Werkmeister_WMDE, Michael, Aklapper, Lydia_Pintscher, darthmon_wmde,
DannyS712, Nandana, Lahi, Gq86, GoranSMilovanovic, QZanden, LawExplorer,
_jensen, rosalieper, Wikidata-bugs, aude, Mbch331
_______________________________________________
Wikidata-bugs mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikidata-bugs