目前新版主要基于Webpack5与Vite做构建工具,废弃Fis3与Webpack4
v16.0
以上版本最新
的Demo的配置和结构如需要兼容低版本浏览器,去掉箭头函数,可修改
webpack.base.js
配置,添加以下配置
let config = {
target : ['es5','web']
};
需要先在
html
页面引入对应的js文件,修改webpack.base.js
配置externals
<!--引用本地项目的-->
<script src="js/zepto.js"></script>
<!--引用线上-->
<script src="https://nie.res.netease.com/comm/js/zepto(mixNIE).last.js"></script>
let config = {
externals: {
'$': 'window.Zepto'
}
};
只方式只针对非js、css资源,以及资源在
html
或者js
中有引用,js
中是需要使用require
或者import
引用,修改webpack.base.js
let config = {
module : {
rules : [
{
test: /data/,
type: "asset/resource",
generator: {
filename: "data/[name][ext]"
}
}
]
}
};
比如需要循环拼接引人图片列表,此时需要使用
CopyPlugin
插件,修改webpack.base.js
let img = __CDNPATH + 'data/1.jpg';
//webpack.base.js
const CopyPlugin = require("copy-webpack-plugin");
let config = {
plugins : [
new CopyPlugin({
patterns: [
{
from: "src/data",
to: "data"
}
]
}),
]
};
css
文件使用使用
URS登录组件
,需要加载独立css文件
,已在simple-webpack5
中的配置实现,如不需要,可以删除start.js
,dist.js
、release.js
中的CopyPlugin
配置相关即可
默认配置中,对于特殊后缀文件,是不支持,需要额外添加才能够打包出来,修改
webpack.base.js
let config = {
module : {
rules : [
{
test: /\.(glb|h5f)$/,
type: "asset/resource",
generator: {
filename: "assets/[name][ext]"
}
}
]
}
};
例如,需要添加
是否本地环境
,则需要在同时修改start
、dist
、release
配置文件
// 在start.js中为true,其它为false
plugins : [
new webpack.DefinePlugin({
__DEBUG: JSON.stringify(true),
__CDNPATH: JSON.stringify("http://127.0.0.1:9000/"),
__LOCAL : JSON.stringify(true)
})
]
GBK
编码
simple-webpack-cms
中已经实现,在webpack.dist
与webpack.release
,默认注释掉,使用EncodingPlugin
,注意:源文件必须使用UTF-8
编码
const EncodingPlugin = require('webpack-encoding-plugin');
let config = {
plugins : [
new EncodingPlugin({
test: /(\.js|\.css|\.html)($|\?)/i,
encoding: 'GBK'
})
]
};
xxxxx
全局变量不存在修改
.eslintrc.js
配置文件,添加xxxxx
变量校验
module.exports = {
globals: {
"nie": true,
"xxxxx" : true
}
};
将资源放在根目录的
public/data
下即可,打包时候会复制到根目录下的data
目录下
随机路径涉及分享参数与随机地址,只支持
index.html
访问,以及不带哈希
去掉vue-router
,项目内只有一个页面地址和路径
H5还需要支持PC打开后显示二维码扫码页面
qrcode.html
支持随机路径
方式执行qrcode/index.html
,qrcode
目录跟src
同级vite.config.base.ts
配置,添加以下配置 build: {
minify: false,
rollupOptions: {
input: {
index: resolve(__dirname, '../index.html'),
qrcode: resolve(__dirname, '../qrcode/index.html')
}
}
}