VIte+Vue3 打包在本地 双击 index.html 打开项目

npm i @vitejs/plugin-legacy --save

import legacy from '@vitejs/plugin-legacy';

export default defineConfig({
  base:"./",
  plugins:[
    vue(),
    legacy({
      targets:["defaults","not IE 11"],
    })
  ]
});

打包完成后,需要把 script 标签里面的 nomodule,crossorigin 属性删掉
删掉含有 type="module" 的标签
data-src 属性换成 src。

直接用此代码修改index.html

const fs = require("fs");
const {JSDOM} = require("jsdom");

const dom = new JSDOM(fs.readFileSync("./dist/index.html"));

//删除包含type="module"的标签
var tags = dom.window.document.querySelectorAll("*[type=\"module\"]");
for(var i = 0 ; i < tags.length; i++){
    var tag = tags[i];
    tag.parentElement.removeChild(tag);
}

//需要把 script 标签里面的 nomodule,crossorigin 属性删掉
tags = dom.window.document.querySelectorAll("SCRIPT[nomodule]");
for(var i = 0 ; i < tags.length; i++){
    var tag = tags[i];
    tag.removeAttribute("nomodule");
}

tags = dom.window.document.querySelectorAll("SCRIPT[crossorigin]");
for(var i = 0 ; i < tags.length; i++){
    var tag = tags[i];
    tag.removeAttribute("crossorigin");
}

//data-src换成src
tags = dom.window.document.querySelectorAll("SCRIPT[data-src]");
for(var i = 0 ; i < tags.length; i++){
    var tag = tags[i];
    var src = tag.getAttribute("data-src");
    tag.removeAttribute("data-src");
    tag.setAttribute("src", src);
}

var html = "<!DOCTYPE html>\r\n" + dom.window.document.documentElement.outerHTML;
fs.writeFileSync("./dist/index.html", html);
console.log("成功修改dist/index.html");

posted @ 2023-10-27 11:02  IWing  阅读(603)  评论(0编辑  收藏  举报