首页 > 其他分享 >uniapp Vue2升级Vue3使用Vite分包

uniapp Vue2升级Vue3使用Vite分包

时间:2023-08-10 23:23:30浏览次数:36  
标签:__ uniapp console filePath Timestamp js Vue2 Vue3 path

uniapp Vue2使用webpack打包配置

根目录下创建vue.config.js文件

const path = require('path')
const CopyWebpackPlugin = require('copy-webpack-plugin') //最新版本copy-webpack-plugin插件暂不兼容,推荐v5.0.0

let filePath = ''
let Timestamp = ''
//编译环境判断,判断是否H5环境
if (process.env.UNI_PLATFORM === 'h5') {
  filePath = 'static/js/'; //打包文件存放文件夹路径
  Timestamp = '.' + new Date().getTime();//时间戳
 
}

module.exports = {
	configureWebpack: {
		output: { // 输出重构  打包编译后的 文件目录 文件名称 【模块名称.时间戳】
		    filename: `${filePath}[name]${Timestamp}.js`,
		    chunkFilename: `${filePath}[name]${Timestamp}.js`
		},
		plugins: [
			// 自定义分包静态资源目录
			new CopyWebpackPlugin([{
					from: path.join(__dirname, '/static_sub'),
					to: path.join(__dirname + '/unpackage/', 'dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, '/')
				}
			])
		]
	},
	chainWebpack: (config) => {
		// 发行或运行时启用了压缩时会生效
		config.optimization.minimizer('terser').tap((args) => {
			const compress = args[0].terserOptions.compress
			// 非 App 平台移除 console 代码(包含所有 console 方法,如 log,debug,info...)
			compress.drop_console = true
			compress.pure_funcs = [
				'__f__', // App 平台 vue 移除日志代码
				// 'console.debug' // 可移除指定的 console 方法
			]
			return args
		})
	}
}

 

uniapp Vue3使用Vite打包配置

根目录下创建vite.config.js文件

import path from 'path'
import fs from 'fs-extra'
import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'

function copyFile() {
	return {
		enforce: 'post',
		async writeBundle() {
			await fs.copy(
				path.join(__dirname, '/static_sub'),
				path.join(__dirname + '/unpackage/', 'dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, '/')
			)
		},
	}
}

let filePath = ''
let Timestamp = ''
//编译环境判断,判断是否H5环境
if (process.env.UNI_PLATFORM === 'h5') {
  filePath = 'assets/'; //打包文件存放文件夹路径
  Timestamp = '.' + new Date().getTime();//时间戳
}

export default defineConfig({
	plugins: [
		uni(),
		copyFile()
	],
	build: {
		minify: 'terser',
		terserOptions: {
			compress: {
				// 发布时删除 console
				drop_console: true,
			},
		},
		rollupOptions: {
			output:{ // 输出重构  打包编译后的 文件目录 文件名称 【模块名称.时间戳】
				// 入口文件名
				entryFileNames: `${filePath}[name]${Timestamp}.js`,
				// 块文件名
				chunkFilename: `${filePath}[name]${Timestamp}.js`,
				// 资源文件名 css 图片等等
				assetFileNames: `${filePath}[name]${Timestamp}.[ext]`
			}
		}
	}
})

 

标签:__,uniapp,console,filePath,Timestamp,js,Vue2,Vue3,path
From: https://www.cnblogs.com/Intellectualscholar/p/17621862.html

相关文章

  • vue3+vite+view-ui-plus 实现按需引用
    现有项目使用的是vue3+vite+view-ui-plus由于公司要求秒开速度对h5页面进行优化,首先想到的是把组件的引用从全量引用打包改成按需引用;下面是改之前的 view-ui-plus引用配置,简单粗暴直接在main.ts中引用  importViewUIPlusfrom'view-ui-plus'import'view-ui-plus/d......
  • vue3怎么使用defineExpose
    在使用单文件组件<scriptsetup>创建一个子组件,会遇到父组件需要调用子组件的方法或变量的情况,这个时候,子组件中就需要使用defineExpose把子组件中那些需要被父组件调用的方法或变量给输出,方便父组件使用。 1.子组件在子组件中,定义updata方法、getData方法、num变量<templat......
  • 项目vue2升级vue3
    Vue2迁移vue3操作指南#一、前言有个自动化迁移工具gogocode-cli,尝试后发现不好用且得不偿失,就放弃了,感兴趣的可以去了解一下,本指南选择手动迁移迁移开始之前,我们先来梳理下思路:现在有一个vue2的项目,首先我们升级框架,得到了一个vue3的框架,但是上面放着vue2的代码,跑不起来,然后我......
  • vue3源码入口
    vue有两个阶段  分为编译时和运行时webpack  把vue模板编译生成对应的js代码,vue组件组件对应的template模板会被编译器转化为render函数。 运行时编译后代码执行render函数并返回VNode,最后将VNode渲染成真实的DOM节点createApp>ensureRenderer>createRenderer>ba......
  • Vue3中的defineProps方法
    1.什么是definePropsdefineProps是Vue3中的一种新的组件数据传递方式,可以用于在子组件中定义接收哪些父组件的props。当父组件的props发生变化时,子组件也会随之响应。2.如何使用defineProps?在子组件中可以使用defineProps声明该组件需要接收的props,它需要传递一个包含props字段......
  • vue3 + vite + vue-router 4.x项目在router文件中使用pinia报错
    1.背景vue-router4.x版本,想在路由文件中引入并使用pinia后报错如下:表面意思是getActivePinia()方法在pinia还没有激活的时候被调用,导致报错。2.解决方法在stores文件夹下新建pinia.js文件,用来引入并创建pinia实例。import{createPinia}from"pinia";const......
  • 在vue2 v-bind中使用console.log
    <el-submenuv-for="(item,index)inmenuList":key="index":index="console.log(item.name)||item.name"> main.jsVue.prototype.console=console 参考:https://stackoverflow.com/questions/51......
  • 智慧工地源码,基于Vue+Spring Cloud +UniApp框架开发
    源码技术架构:微服务+JavaVue+SpringCloud+UniApp+MySql智慧工地管理平台是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。智慧工地管理平台功能包括:劳务实名制管理系统、监测系统、区域安......
  • uniapp中微信小程序取手机号(后端net7+盛派SDK)
    uniapp中微信小程序取手机号(后端net7+盛派SDK)2023年08月09日测试成功,不过看微信的小程序文档8月26日起微信小程序取手机号就要收费了,取一次3分钱。原理:前端取到code后传到后端,后端再把code传给微信的某一接口取手机号前端uniapp中的vue代码:<template><view><......
  • vue3 + ElementPlus 封装函数式弹窗组件
    需求场景:弹窗组件需要支持自定义的插槽内容,删除的弹窗也要使用这个组件,只是样式不一样而已,希望在父组件使用删除弹窗的时候直接调用某个方法就可以显示弹窗组件模拟cuDialog假设我的弹窗组件有以下的props和事件dialogVisible:控制弹窗显示和隐藏title:弹窗的标题showClose......