👷CLI Delete prefetch preload of lazy load module

This commit is contained in:
Aicirou 2020-06-29 22:45:58 +08:00
parent 4a098d3718
commit 16b8f33b8d
3 changed files with 38 additions and 13 deletions

View File

@ -8,24 +8,27 @@ const cdn = {
class BuildAppJSPlugin { class BuildAppJSPlugin {
apply(compiler) { apply(compiler) {
// emit 是异步 hook使用 tapAsync 触及它,还可以使用 tapPromise/tap(同步)
compiler.hooks.emit.tapAsync( compiler.hooks.emit.tapAsync(
"BuildAppJSPlugin", "BuildAppJSPlugin",
(compilation, callback) => { (compilation, callback) => {
const isProd = process.env.NODE_ENV === "production"
let cssarr = []; let cssarr = [];
let jsarr = []; let jsarr = [];
// 遍历所有编译过的资源文件, let reg = "";
// 对于每个文件名称,都添加一行内容。 if (isProd) {
reg = "(app|chunk-vendors)\\.";
}
// 遍历所有编译过的资源文件
for (let filename in compilation.assets) { for (let filename in compilation.assets) {
if (filename.match(".*\\.js$")) { if (filename.match(reg + ".*\\.js$")) {
if (process.env.NODE_ENV === "production") { if (isProd) {
filename = (process.env.VUE_APP_CDN_PATH || "/") + filename; filename = (process.env.VUE_APP_CDN_PATH || "/") + filename;
} else { } else {
filename = "/" + filename; filename = "/" + filename;
} }
jsarr.push(filename); jsarr.push(filename);
} }
if (filename.match(".*\\.css$")) { if (filename.match(reg + ".*\\.css$")) {
cssarr.push(filename); cssarr.push(filename);
} }
} }
@ -33,7 +36,7 @@ class BuildAppJSPlugin {
return a.indexOf("app."); return a.indexOf("app.");
}); });
var cdnjs = ""; var cdnjs = "";
if (process.env.NODE_ENV === "production") { if (isProd) {
cssarr = cdn.css.concat(cssarr); cssarr = cdn.css.concat(cssarr);
cdnjs = `var cdnjs = ${JSON.stringify(cdn.js)}; cdnjs = `var cdnjs = ${JSON.stringify(cdn.js)};
cdnjs.forEach((item) => { cdnjs.forEach((item) => {

12
package-lock.json generated
View File

@ -9207,6 +9207,18 @@
"find-up": "^2.1.0" "find-up": "^2.1.0"
} }
}, },
"plyr": {
"version": "3.6.2",
"resolved": "https://registry.npm.taobao.org/plyr/download/plyr-3.6.2.tgz",
"integrity": "sha1-WlW2CKzRYSYt4cx1yoQ6pkNVoFE=",
"requires": {
"core-js": "^3.6.5",
"custom-event-polyfill": "^1.0.7",
"loadjs": "^4.2.0",
"rangetouch": "^2.0.1",
"url-polyfill": "^1.1.8"
}
},
"pnp-webpack-plugin": { "pnp-webpack-plugin": {
"version": "1.6.4", "version": "1.6.4",
"resolved": "https://registry.npm.taobao.org/pnp-webpack-plugin/download/pnp-webpack-plugin-1.6.4.tgz", "resolved": "https://registry.npm.taobao.org/pnp-webpack-plugin/download/pnp-webpack-plugin-1.6.4.tgz",

View File

@ -2,6 +2,7 @@ const path = require("path");
const cdnDependencies = require("./dependencies-cdn"); const cdnDependencies = require("./dependencies-cdn");
const BuildAppJSPlugin = require("./buildAppJSPlugin"); const BuildAppJSPlugin = require("./buildAppJSPlugin");
const CompressionWebpackPlugin = require("compression-webpack-plugin"); const CompressionWebpackPlugin = require("compression-webpack-plugin");
const { set } = require("lodash");
function resolve(dir) { function resolve(dir) {
return path.join(__dirname, dir); return path.join(__dirname, dir);
@ -67,18 +68,27 @@ module.exports = {
/** /**
* 添加 CDN 参数到 htmlWebpackPlugin 配置中 * 添加 CDN 参数到 htmlWebpackPlugin 配置中
*/ */
config.plugin("html").tap((args) => { config.plugin("html").tap((options) => {
if (isProd) { if (isProd) {
args[0].cdn = cdn; set(options, "[0].cdn", cdn);
} else { } else {
args[0].cdn = { set(options, "[0].cdn", {
js: cdnDependencies.filter((e) => e.name === "").map((e) => e.js), js: cdnDependencies.filter((e) => e.name === "").map((e) => e.js),
css: cdnDependencies.filter((e) => e.name === "").map((e) => e.css), css: cdnDependencies.filter((e) => e.name === "").map((e) => e.css),
}; });
} }
args[0].inject = false; set(options, "[0].inject", false);
return args; return options;
}); });
/**
* 删除懒加载模块的 prefetch preload降低带宽压力
* https://cli.vuejs.org/zh/guide/html-and-static-assets.html#prefetch
* https://cli.vuejs.org/zh/guide/html-and-static-assets.html#preload
* 而且预渲染时生成的 prefetch 标签是 modern 版本的低版本浏览器是不需要的
*/
if (isProd) {
config.plugins.delete("prefetch").delete("preload");
}
// 解决 cli3 热更新失效 https://github.com/vuejs/vue-cli/issues/1559 // 解决 cli3 热更新失效 https://github.com/vuejs/vue-cli/issues/1559
config.resolve.symlinks(true); config.resolve.symlinks(true);
config.resolve.alias config.resolve.alias