IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vite+vue3配置vite.config.ts多页面入口并配置多个env -> 正文阅读

[JavaScript知识库]vite+vue3配置vite.config.ts多页面入口并配置多个env

需求:在一个项目有公共的依赖和组件,但是两个模块又没有业务上的关联,这个时候我们需要用到分包,

我的env.test对应是mono2中的变量打包,根据人个需求使用

在根路径下删除原来的index.html,然后在src下建两个目录分别为mono1,mono2

如果页面都抽离成模块后记得改变,记得要修改文件之间的引用关系,接下来我们详细看项目配置方面的修改。

vite.config.ts

/*
 * @Author: 周云芳 164591357@qq.com
 * @Date: 2022-05-23 21:29:09
 * @LastEditors: 周云芳 164591357@qq.com
 * @LastEditTime: 2022-06-02 17:29:03
 * @FilePath: \vue3\vue3-ts\vite.config.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
const fs = require("fs")
// const dotenv = require("dotenv")// Dotenv 是一个零依赖的模块,它能将环境变量中的变量从 .env 文件加载到 process.env 中
export default ({ command, mode }: { command: any, mode: any }) => {
    // 根据当前工作目录中的 `mode` 加载 .env 文件
    // 设置第三个参数为 '' 来加载所有环境变量,而不管是否有 `VITE_` 前缀。
    const envConfig: any = loadEnv(mode, process.cwd(), '')
    let pageEntry = '';
    // let target = envConfig.VITE_TARGET || 'default'
    let NODE_ENV = envConfig.NODE_ENV || 'development';
    console.log('envConfig------>', NODE_ENV);
    if (NODE_ENV == 'production') {
        pageEntry = resolve(__dirname, 'src/packages/mono1/index.html')
    }
    if (NODE_ENV == 'test') {
        pageEntry = resolve(__dirname, 'src/packages/mono2/index.html')
    }
    //views文件夹中添加文件即可,会获取里面的文件夹名在pages中生产模板
    return defineConfig({
        plugins: [vue()],
        base: NODE_ENV === 'development' ? '/' : './',
        // vite config
        // root: "./src/",//设置为src文件夹内(项目入口)
        // 静态资源服务文件夹
        publicDir: 'public',
        // envDir: '../',//(检测环境变量文件所在文件夹)
        // 因为root设为了src所以需要../回到上一层,也可以把.env文件放到src内指定加载环境变量文件的目录,相对于root路径
        server: {
            host: '0.0.0.0',//解决 Network: use `--host` to expose
            port: envConfig.VITE_PORT,//定义端口
            // port: 8080,
            open: true, // 是否自动在浏览器打开
            https: false,  // 是否开启 https
        },
        resolve: {//配置别名,需要配置tsconfig.json文件,compilerOptions中编辑器会自动读取
            alias: [
                {
                    find: '@',
                    replacement: resolve(__dirname, 'src')
                },
            ]
        },
        build: {
            target: 'modules',//浏览器兼容性modules|esnext
            sourcemap: false,//构建后是否生成soutrce map文件
            minify: 'terser', // 混淆器,terser构建后文件体积更小
            // outDir: envConfig.VITE_OUTPUT_DIR,  //指定输出文件包名
            outDir: 'dist',
            assetsDir: 'assets', // 指定生成静态资源的存放路径
            chunkSizeWarningLimit: 1500, //警报门槛,限制大文件大小B为单位
            assetsInlineLimit: 4096,//小于此阈值的导入或引用资源将内联为base64编码,以避免额外的http请求,设置为0可以完全禁用此项
            brotliSize: false,//启用|禁用brotli压缩大小报告
            // 清除console和debugger(minify: 'terser',)设置后这个terserOptions才有用
            terserOptions: {
                compress: {
                    drop_console: true,
                    drop_debugger: true,
                },
            },
            rollupOptions: {
                input: pageEntry,
                output: {//自动分割包名输出 chunkSizeWarningLimit 配置大小
                    chunkFileNames: 'js/[name]-[hash].js',//入口文件名
                    entryFileNames: 'js/[name]-[hash].js',//出口文件名位置
                    assetFileNames: '[ext]/[name]-[hash].[ext]',//静态文件名位置
                    // assetFileNames: 'assets/static/[name]-[hash].[ext]',//静态文件名位置
                    manualChunks(id: any) {
                        if (id.includes('node_modules')) {
                            return id.toString().split('node_modules/')[1].split('/')[0].toString();
                        }
                    }
                }
            },
        }

    })
}

package.json文件写入

dev没有另做配置如果启动dev可能会找不到页面,只能使用dev:mono1或dev:mono2会启动对应的文件

?

?

?

?

其中build默认配置为生产环境的打包

build:test配置为测试环境的打包,本人比较懒,所以没有一一做配置但是大同小异,根据自己的需求配置就可以(当前如果打包测试环境会把env.test和mono2的内容打进去,生产环境会把env.production和mono1打包进去)

  "scripts": {
    "dev": "vite",
    "build": "vue-tsc --noEmit && vite build",
    "preview": "vite preview",
    "dev:mono1": "vite serve src/packages/mono1/ --config ./vite.config.ts",
    "dev:mono2": "vite serve src/packages/mono2/ --config ./vite.config.ts",
    "build:test": "cross-env vite build --mode test"
  },

?打包后生成的文件目录,因配置路径问题这里也会对应的显示在文件下;可以把index.html手动放在dist文件下也是可以的?

仓库代码地址:https://gitee.com/zhouyunfang_admin/vue3-typescript-vite-element/tree/req_1.2/icon-default.png?t=M4ADhttps://gitee.com/zhouyunfang_admin/vue3-typescript-vite-element/tree/req_1.2/

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-08 18:57:17  更:2022-06-08 18:58:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:05:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码