minimize-webext-i18n-json
_locales/*/messages.json
files. Remove "description", "example", spaces, inline placeholders.
Example
Input:
{
"hello": {
"message": "Hello, $NAME$!",
"description": "Greeting",
"placeholders": {
"NAME": {
"content": "dear $1",
"example": "dear World"
}
}
}
}
Output:
{"hello":{"message":"Hello, dear $1!"}}
Usage
With a build script
Either
-
const { minimizeDirectory } = require('minimize-webext-i18n-json'); // ... // After you've put `_locales` in `dist`: await minimizeDirectory('_locales');
-
Or:
const { minimizeJsonString } = require('minimize-webext-i18n-json'); // ... // for each `messages.json` file. const minimizedFileContentString = minimizeJsonString(fileContentString); // or // const { minimizeObject } = require('minimize-webext-i18n-json'); // const object = JSON.parse(fileContentString); // minimizeObject(object); // const minimizedFileContentString = JSON.stringify(object);
I don't use a build script
- Make sure you have no uncommitted changes in
_locales
. - Run
npx minimize-webext-i18n-json _locales
. - Run
git checkout -- _locales
to revert the changes.
Webpack
If you're using copy-webpack-plugin
for your _locales
files, just add the transform
key:
new CopyPlugin({
patterns: [
{
from: '_locales/*/messages.json',
transform: (content) => minimizeWebextI18nJson(content),
Unsafe minimizations
They're off by default. These currently include placeholder inlining and placeholder name shortening. As the name implies, they're not safe. See the functions' docstrings for more info.
To enable these, pass { unsafe: true }
as the second argument:
minimizeDirectory('_locales', { unsafe: true })
For CLI, pass unsafe
as the second argument (ordering matters):
npx minimize-webext-i18n-json _locales unsafe