ak-webpack-plugin
AlloyKit平台生成离线包命令
安装
npm i --save ak-webpack-plugin
npm i --save-dev ak-webpack-plugin
使用
var AkWebpackPlugin = require('ak-webpack-plugin');
plugins: [
new AkWebpackPlugin({
"zipFileName": "dist/offline",
"src": "dist",
"keepOffline": true,
"zipConfig": {
zlib: { level: 9 },
},
"map": [
{
"src": "webserver",
"url": "//localhost:9000/"
},
{
"src": "cdn",
"url": "//localhost:8000/"
}
],
"minimatchOpt": {
matchBase: true,
dot: true
},
beforeCopy: function() {
},
afterCopy: function() {
},
beforeZip: function(offlineFiles) {
},
afterZip: function(zipFilePath) {
}
})
]
如果你使用上述的配置,它会在 dist
目录下,生成 offline
文件夹和 offline.zip
文件:
-- dist
|
|- webserver
|- cdn
|- offline
|- offline.zip
plugins: [
new AkWebpackPlugin({
"zipFileName": "offline",
"src": "dist",
"map": [
{
"src": "cdn/js",
"dest": "js",
"isSameOrigin": true,
"url": "s1.url.cn/huayang/"
},
{
"src": "cdn/css",
"dest": "css",
"url": "s2.url.cn/huayang/"
},
{
"src": "cdn/img",
"dest": "img",
"url": "s3.url.cn/huayang/"
},
{
"src": "cdn/lib",
"dest": "lib",
"url": "s1.url.cn/huayang/"
},
{
"src": "webserver",
"isWebserver": true,
"url": "huayang.qq.com/huayang/activity/"
}
],
})
]
之所以要用 isSameOrigin
与 isWebserver
,是有时候需要 html
文件和 js
文件的域名一致,例如有时候需要收集js的报错,让两者的 cdn
一致会更方便收集到具体的报错信息。
注意 此功能只对 js
文件有效,只会给 js
文件进行 cdn
的替换。
如果使用上述配置,生成的 offline
目录,将会有以下的排布:
offline
|-- huayang.qq.com
| |-- huayang
| |-- activity
| |-- entry.html
| |-- js
| |-- index.js
|-- s1.url.cn
| |-- huayang
| |-- lib
| |-- react.js
|
|-- s2.url.cn
| |-- huayang
| |-- css
| |-- index.css
|-- s3.url.cn
|-- huayang
|-- img
|-- logo.png
如果你想部份文件走离线包,部份走线上,你在生成离线包的时候,可以 exclude
部份文件。 exclude
参数,主要是 Globs
的写法,可以参考 minimatch 的配置。示例配置如下。对于一些比较长的路径,如 /a/b/c/d/1.png
,可以尝试如 **/c/d/*.png
类似的匹配。
plugins: [
new AkWebpackPlugin({
"zipFileName": "dist/offline",
"src": "dist",
"map": [
{
"src": "webserver",
"url": "//localhost:9000/"
},
{
"src": "cdn",
"url": "//localhost:8000/",
"exclude": ['*.png', '*ell.jpg'],
}
]
})
]
测试
npm i -g eslint
npm run test