This plugin helps compress static resources (such as js, css, png...) into a zip package, with a resource mapping json file in it.
Resource Mapping Json:
{
"packageId": "testId",
"items": [
{
"packageId": "testId",
"version": 1,
"remoteUrl": "http://192.168.88.88:5000/js/app.630f02ab.js",
"path": "js/app.630f02ab.js",
"mimeType": "application/javascript"
},
{
"packageId": "testId",
"version": 1,
"remoteUrl": "http://192.168.88.88:5000/js/chunk-vendors.dca9c05a.js",
"path": "js/chunk-vendors.dca9c05a.js",
"mimeType": "application/javascript"
}
]
}
pnpm add webpack-plugin-offline-package -D
Via webpack.config.js
or any other webpack config file.
{
plugins: [
new OfflinePackagePlugin({
packageNameKey: "packageId",
packageNameValue: "testId",
version: 1,
baseUrl: "https://xxxx.domain.com/",
fileTypes: ["html", "js", "css", "png"],
}),
];
}
options
need to be an object.
This option determines the key of package name in the resource mapping json.
Resource mapping json:
{
"packageId": "testId",
"items": [
...
]
}
Default: 'packageName'
Config example:
{
plugins: [
new OfflinePackagePlugin({
packageNameKey: "packageId",
}),
];
}
This option determines the value of package name in the resource mapping json.
Resource mapping json:
{
"packageNameValue": "testId",
"items": [
...
]
}
Default: ''
Config example:
{
plugins: [
new OfflinePackagePlugin({
packageNameValue: "testId",
}),
];
}
This option determines the value of version in the resource mapping json.
Resource mapping json:
{
...
"version": 1
"items": [
...
]
}
Default: 1
Config example:
{
plugins: [
new OfflinePackagePlugin({
version: 2,
}),
];
}
This option determines the name of the output zip file.
Default: 'package'
Config example:
{
plugins: [
new OfflinePackagePlugin({
folderName: "package",
}),
];
}
This option determines the name of the resource mapping json.
Default: 'index.json'
Config example:
{
plugins: [
new OfflinePackagePlugin({
indexFileName: "index.json",
}),
];
}
This option determines the base url of remoteUrl in the resource mapping json.
Resource mapping json:
{
...
"items": [
{
"remoteUrl": `${baseUrl}/js/app.xxxx.js`,
"path": "js/app.xxxx.js"
}
]
}
Default: ''
Config example:
{
plugins: [
new OfflinePackagePlugin({
indexFileName: "index.json",
}),
];
}
This options provides control over if add a web resource file into zip file via file extension. The options need to be an array. And an empty array means there is no limit of file extension.
Default: []
Config example:
{
plugins: [
new OfflinePackagePlugin({
fileTypes: ["html", "js", "css", "png"],
}),
];
}
This options provides control over if add a web resource file into zip file via file name. The options need to be an array. And an empty array means there is no limit of file extension.
Default: []
Config example:
{
plugins: [
new OfflinePackagePlugin({
excludeFileName: ["main.js"],
}),
];
}