这是vue.config.js:、
const CompressionPlugin = require("compression-webpack-plugin");
module.exports = {
chainWebpack: (config) => {
// 发行或运行时启用了压缩时会生效
config.optimization.minimizer('terser').tap((args) => {
const compress = args[0].terserOptions.compress
const output = args[0].terserOptions.output;
//移除 console 代码(包含所有 console 方法,如 log,debug,info...)
compress.drop_console = true;
// 移除注释
//output.comments = false;
//紧凑输出
//output.beautify = false;
//console.log('output',output)
return args
})
},
configureWebpack: (config) => {
if (process.env.NODE_ENV === "production") {
//gzip
config.plugins.push(
new CompressionPlugin({
filename: "[path][base].gz",
algorithm: "gzip",
test: /\.(js|css|html)$/,
threshold: 10240,
minRatio: 0.8,
//deleteOriginalAssets: false,
})
);
// 开启分离js
config.optimization = {
runtimeChunk: 'single',
splitChunks: {
chunks: 'all', // 可选值:all,async 和 initial。all功能最强大,所以咱们就使用all
maxInitialRequests: Infinity, // 最大并行请求数,为了以防万一,设置无穷大即可
minSize: 20000, // 引入的模块大于20kb才做代码分割,官方默认20000,这里不用修改了
maxSize: 60000, // 若引入的模块大于60kb,则告诉webpack尝试再进行拆分
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/, // 使用正则匹配node_modules中引入的模块
priority: -10, // 优先级值越大优先级越高,默认-10,不用修改
name(module) { // 设定分包以后的文件模块名字,按照包名字替换拼接一下
const packageName = module.context.match(
/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1]
return `npm.${packageName.replace('@', '')}`
},
},
},
}
}
}
},
};
这是template.h5.html模版文件:
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
<script>
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
</head>
<body>
<noscript>
<strong>Please enable JavaScript to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
需要在html里怎么配置,有大佬支一招吗
9 个回复
liife (作者)
有人吗
liife (作者)
社区还有人吗
liife (作者)
0.0.0.0.0.
liife (作者)
滴滴滴
liife (作者)
这社区是凉了吗?
liife (作者)
这社区是凉了吗?
杨杨得亿 - 这个人很懒,什么都没有留下~
需要在webpack.config.js中配置入口文件
liife (作者)
能再详细一点吗。。
const glob = require('glob');
function entries(pattern) {
const entries = {};
glob.sync(pattern).forEach(file => {
const name = file.split('/').slice(-2, -1)[0]; // 获取目录名作为入口名称
entries[name] = file;
});
return entries;
}
configureWebpack: (config) => {
if (process.env.NODE_ENV === "production") {
config.entry = entries('src/pages/*/.js');
//gzip
config.plugins.push(
new CompressionPlugin({
filename: "[path][base].gz",
algorithm: "gzip",
test: /.(js|css|html)$/,
threshold: 10240,
minRatio: 0.8,
deleteOriginalAssets: false,
})
);
// 开启分离js
config.optimization = {
runtimeChunk: 'single',
splitChunks: {
chunks: 'all', // 可选值:all,async 和 initial。all功能最强大,所以咱们就使用all
maxInitialRequests: Infinity, // 最大并行请求数,为了以防万一,设置无穷大即可
minSize: 20000, // 引入的模块大于20kb才做代码分割,官方默认20000,这里不用修改了
maxSize: 60000, // 若引入的模块大于60kb,则告诉webpack尝试再进行拆分
cacheGroups: {
vendors: {
test: /[\/]node_modules[\/]/, // 使用正则匹配node_modules中引入的模块
priority: -10, // 优先级值越大优先级越高,默认-10,不用修改
name(module) { // 设定分包以后的文件模块名字,按照包名字替换拼接一下
const packageName = module.context.match(
/[\/]node_modules\/([\/]|$)/)[1]
return
npm.${packageName.replace('@', '')}
打包报错。。
2025-03-10 21:27
liife (作者)
加我微信:fqm112。 有偿解决哈
2025-03-10 21:46
杨杨得亿
回复 liife: config.entry = entries('src/pages//.js');
这是你的代码,你无法匹配js 要加上一个,*.js
2025-03-11 08:04
liife (作者)
回复 杨杨得亿:这几种方法都试了,貌似还不行,下方楼层贴图了
2025-03-11 08:52
liife (作者)
这几种方法都试了,还不行嘞,。。
杨杨得亿 - 这个人很懒,什么都没有留下~
+q 1016368828 把node_modules删掉 项目发我 给你看看
liife (作者)
加你了。大哥
2025-03-12 16:16