wxml loader for webpack
Please note this wxml is a markup language for Wechat mini programs
yarn add -D wxml-loaderYou may also need to use file-loader to extract files.
{
test: /\.wxml$/,
include: /src/,
use: [
{
loader: 'file-loader',
options: {
name: '[name].[ext]',
useRelativePath: true,
context: resolve('src'),
},
},
{
loader: 'wxml-loader',
options: {
root: resolve('src'),
enforceRelativePath: true,
},
},
],
}root(String): Root path for requiring sourcesenforceRelativePath(Boolean): Should be true if you wish to generate arootrelative URL for each file. It is recommend to set totruepublicPath(String): Defaults to webpack output.publicPathtransformContent(content, resource)(Function): Transform content, should return a content stringtransformUrl(url, resource)(Function): Transform url, should return a urlminimize(Boolean): To minimize. Defaults tofalse- All html-minifier options are supported
Currently wxml-loader could not resolve dynamic path, i.e.
<image src="./images/{{icon}}.png" />. Please use copy-webapck-plugin to
copy those resource to dist directory manually. See
#1 for detail (Chinese).
This loader is also compatible with
Alipay mini programs. You
just need to make sure using test: /\.axml$/ instead of test: /\.wxml$/ in
webpack config.
If you're using
wxapp-webpack-plugin and
setting Targets.Alipay as webpack target, it will automatically set
transformContent() and transformUrl() option by default, the
transformContent() function will transform wx:attr attribute to a:attr,
and the transformUrl() function will transform .wxml extension to .axml
automatically. That means you could write mini programs once, and build both
Wechat and Alipay mini programs.
webpack.config.babel.js
import WXAppWebpackPlugin, { Targets } from "wxapp-webpack-plugin";
export default env => ({
// ...other
target: Targets[env.target || "Wechat"],
module: {
rules: [
// ...other,
{
test: /\.wxml$/,
use: [
{
loader: "file-loader",
options: {
name: `[name].${env.target === "Alipay" ? "axml" : "wxml"}`
useRelativePath: true,
context: resolve('src'),
},
},
{
loader: 'wxml-loader',
options: {
root: resolve('src'),
enforceRelativePath: true,
},
},
]
}
]
},
plugin: [
// ...other
new WXAppWebpackPlugin()
]
});For a complete guild to use webpack to develop WeiXin App, please checkout
my wxapp-boilerplate repo.
MIT