赞
踩
哈哈哈。好久没更新了,因为参加了工作和校招面试,还有一部分是自己学习。大部分笔记都写在印象笔记上了,后续会持续分享哈。
module.exports = { chainWebpack: config => { config.when(process.env.NODE_ENV === 'development', config => { // entry找到默认的打包入口,调用clear则是删除默认的打包入口 config.entryPoints.clear() config .entry('puge-dev') // add添加新的打包入口 .add('./src/main-dev.js') }) // 生产环境 config.when(process.env.NODE_ENV === 'production', config => { config.entryPoints.clear() config .entry('puge-prod') .add('./src/main-prod.js') }) }, }
module.exports = { /** * webpack链式写法 * @param {*} config */ chainWebpack: config => { config.when(process.env.NODE_ENV === 'development', config => { // entry找到默认的打包入口,调用clear则是删除默认的打包入口 config.entryPoints.clear() config .entry('puge-dev') // add添加新的打包入口 .add('./src/main-dev.js') }) // 生产环境 config.when(process.env.NODE_ENV === 'production', config => { config.entryPoints.clear() config .entry('puge-prod') .add('./src/main-prod.js') // 忽略打包一些模块 // 左边是package里的包名。右边是在项目中你引入的名字 config.externals({ vue: 'Vue', 'vue-router': 'VueRouter', vuex: 'Vuex', axios: 'axios', 'js-cookie': 'Cookies', 'core-js': 'CoreJs', 'animate.css': 'animate.css' }) // 修改 HtmlWebpackPlugin 插件参数,用cdns参数 植入 boot-cdn // 添加的css或者js链接的包版本一定要和package.json中一样 config.plugin('html').tap((args) => { args[0].cdns = { css: [ // animate.css 'https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.min.css' ], js: [ // vue vue-router vuex 'https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js', 'https://cdn.bootcdn.net/ajax/libs/vue-router/3.2.0/vue-router.min.js', 'https://cdn.bootcdn.net/ajax/libs/vuex/3.2.0/vuex.min.js', // core-js 'https://cdn.bootcdn.net/ajax/libs/core-js/3.6.5/minified.min.js', // axios 'https://cdn.bootcdn.net/ajax/libs/axios/0.25.0/axios.min.js', // js-cookie 'https://cdn.bootcdn.net/ajax/libs/js-cookie/3.0.1/js.cookie.min.js' ] } return args }) }) }
注意:生产环境中一些包需要在main-prod.js中的就不用引入了。比如antDvue、animate.css等等
<!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link rel="icon" href="<%= BASE_URL %>favicon.ico"> <!-- 引入htmlWebpackPlugin插件中cnds --> <% if(htmlWebpackPlugin.options.cdns) {%> <% for(var css of htmlWebpackPlugin.options.cdns.css) { %> <link rel="stylesheet" href="<%=css%>" /> <% } %> <% } %> </head> <body> <noscript> <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> </noscript> <div id="app"></div> <!-- cdn script --> <!-- 引入htmlWebpackPlugin插件中cnds --> <% if(htmlWebpackPlugin.options.cdns) {%> <% for(var js of htmlWebpackPlugin.options.cdns.js) { %> <script src="<%=js%>"></script> <% } %> <% } %> </body> </html>
看看打包
# 我们下载5.0.1版本
npm i -D compression-webpack-plugin@5.0.1
# 高版本语法已经改变,如果下载高版本打包时可能会出现一下错误
vue,config.js中配置
const CompressionPlugin = require('compression-webpack-plugin') module.exports = { configureWebpack: () => { if (process.env.NODE_ENV === 'production') { return { plugins: [ new CompressionPlugin({ test: /\.js$|\.html$|\.css$|\.jpg$|\.jpeg$|\.png/, // 需要压缩的文件类型 threshold: 10240, // 归档需要进行压缩的文件大小最小值,我这个是10K以上的进行压缩 deleteOriginalAssets: false // 是否删除原文件 }) ] } } } }
# nginx开启gzip服务
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
# 需要开启gzip压缩的格式,如果发现需要的js/css/图片没开启gzip。可以在响应头里查看他的content-type类型是否在这配置了
gzip_types text/plain application/javascript text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/gif image/png image/jpg;
查看传输文件类型
更多推荐:wantLG的《普歌-vue项目中通过文件操作进行动态加载路由(router.js)》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。