From ada3e499b082e23427aa6632a4a5fa64b777778c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20=C5=A0?= Date: Fri, 19 Jan 2024 22:31:40 +0100 Subject: [PATCH] Exclude unnecessary messages from the standard localization files --- extension/.parcelrc | 2 +- extension/package.json | 9 +++++++++ extension/src/manifest.json | 3 +-- extension/tools/transformers/treeshake.js | 21 +++++++++++++++++++++ 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 extension/tools/transformers/treeshake.js diff --git a/extension/.parcelrc b/extension/.parcelrc index c156b7c9..f2fd6ae7 100644 --- a/extension/.parcelrc +++ b/extension/.parcelrc @@ -4,6 +4,6 @@ "transformers": { "filename:*": ["./tools/transformers/filename", "..."], "locale:*": ["./tools/transformers/locale", "@parcel/transformer-json", "@parcel/transformer-js"], - "raw:messages.json": ["./tools/transformers/locale"] + "raw:messages.json": ["./tools/transformers/locale", "./tools/transformers/treeshake"] } } diff --git a/extension/package.json b/extension/package.json index 49731bea..0fd4400f 100644 --- a/extension/package.json +++ b/extension/package.json @@ -70,6 +70,15 @@ "plus-lg", "trash" ], + "messages": [ + "appName", + "appShortName", + "appDescription", + "actionInstallSite", + "actionLaunchSite", + "updateNotificationTitle", + "updateNotificationMessage" + ], "alias": { "process": false } diff --git a/extension/src/manifest.json b/extension/src/manifest.json index 5e0b7dc2..e3ab3345 100644 --- a/extension/src/manifest.json +++ b/extension/src/manifest.json @@ -28,8 +28,7 @@ ], "browser_action": { "default_icon": "images/browser-action.svg", - "default_popup": "sites/manage.html", - "default_title": "__MSG_appShortName__" + "default_popup": "sites/manage.html" }, "page_action": {}, "permissions": [ diff --git a/extension/tools/transformers/treeshake.js b/extension/tools/transformers/treeshake.js new file mode 100644 index 00000000..24025a1c --- /dev/null +++ b/extension/tools/transformers/treeshake.js @@ -0,0 +1,21 @@ +const { Transformer } = require('@parcel/plugin') + +const allowed = require('../../package.json').messages + +module.exports = new Transformer({ + async transform ({ asset }) { + const messages = JSON.parse(await asset.getCode()) + + // Remove all messages except ones used by the standard localization system + for (const key in messages) { + if (!allowed.includes(key)) { + delete messages[key] + } + } + + asset.setCode(JSON.stringify(messages)) + asset.type = 'json' + + return [asset] + } +})