vite2 + vite.config.js 比较坑的环境变量,vite2模式的使用
想在vite.config.js 里面判断一下环境,看看是不是开发环境,查了一下官网(https://cn.vitejs.dev/guide/env-and-mode.html),说是 可以使用 import.meta.env.DEV 。
但是在 vite.config.js 里面直接写 import.meta.env.DEV 的时候 ,运行时却报错了。
各种查了之后,发现要折腾一下。
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
const project = ({ mode }) => {
return defineConfig({
plugins: [vue()],
base: loadEnv(mode, process.cwd()).DEV ? './':'nf-rollup-webstorage',
})
}
export default project
这样折腾之后,虽然不报错了,但是 base 好像不太对劲的样子。测试了一番之后发现,根本没有读取出来。
模式
又继续看,发现了一个叫做“模式”的东东,简单的说,我们可以在项目根目录里面设置 .env.xxx 的文件,来存放不同模式的配置文件。
既然这样的话,干脆就用模式的方式吧。
因为我的项目有三个模式:开发模式,生产模式,库项目。
前两个都是常规模式,只是base不一致,后面的库项目,是因为想作为资源包发包发布到npmjs.com里面去。
修改 vite.config.js
首先建立三个文件:.env、.env.project、.env.lib
分别写入下面的内容,注意要分开写。
VITE_BASEURL=./
VITE_BASEURL=lib
VITE_BASEURL=nf-rollup-webstorage
然后把vite.config.js改成这样:
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path' // 主要用于alias文件路径别名
const pathResolve = (dir) => resolve(__dirname, '.', dir)
// 发布库的设置
const lib = defineConfig({
plugins: [vue()],
// 打包配置
build: {
lib: {
entry: resolve(__dirname, 'lib/main.js'),
name: 'nf-web-storage',
fileName: (format) => `nf-web-storage.${format}.js`
},
sourcemap: true,
rollupOptions: {
// 确保外部化处理那些你不想打包进库的依赖
external: ['vue', 'nf-tool'],
output: {
// 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
globals: {
vue: 'Vue',
'nf-tool': 'nfTool'
}
}
}
}
})
// 开发模式、生产模式
const project = (url) => {
return defineConfig({
plugins: [vue()],
devtools: true,
resolve: {
alias: {
'/@': resolve(__dirname, '.', 'src'),
'/nf-web-storage': pathResolve('lib/main.js') //
}
},
base: url,
// 打包配置
build: {
sourcemap: true,
outDir: 'distp', //指定输出路径
assetsDir: 'static/img/', // 指定生成静态资源的存放路径
rollupOptions: {
output: {
chunkFileNames: 'static/js1/[name]-[hash].js',
entryFileNames: 'static/js2/[name]-[hash].js',
assetFileNames: 'static/[ext]/[name]-[hash].[ext]'
},
brotliSize: false, // 不统计
target: 'esnext',
minify: 'esbuild' // 混淆器,terser构建后文件体积更小
}
}
})
}
// 判断类型,返回对应的 defineConfig
export default ({ mode }) => {
const url = loadEnv(mode, process.cwd()).VITE_BASEURL
switch (url) {
case 'lib': // 打包库文件
return lib
break;
default: // 开发模式、生产模式
return project(url)
break;
}
}
修改 package.json
模式和 vite.config.js 都设置好了,那么如何使用呢?我们需要改一下 package.json 的 script
"scripts": {
"dev": "vite",
"build": "vite build --mode project",
"lib": "vite build --mode lib",
"serve": "vite preview"
}
然后输入对应命令即可。
yarn dev // 开发模式
yarn build // 发布项目
yarn lib // 发布库
以前各种改 vite.config.js ,现在就不用改文件了。
vite2 + vite.config.js 比较坑的环境变量,vite2模式的使用的更多相关文章
- vue-cli3.0 环境变量与模式
vue-cli3.0移除了配置文件目录: config和build文件夹.可以说是非常的精简了,那移除了配置文件目录后如何自定义配置环境变量和模式呢? 为什么需要配置环境变量和模式呢? 所有方法肯定是 ...
- 安装Node.js、npm和环境变量的配置
由于Node.js平台是在后端运行JavaScript代码,所以,必须首先在本机安装Node环境. 一.安装Node.js 首先,从Node.js官网下载对应平台的安装程序,网速慢的童鞋请移步国内镜像 ...
- node.js安装后出现环境变量错误找不到node
安装node.js和bower之后,运行bower出现/usr/bin/env: 'node': No such file or directory错误 这个错误是由于安装完node.js环境变量并没 ...
- 使用vue在开发中的一些小问题--利用环境变量做一些常量的定义
1.集中式的环境配置: (1)使用vue-cli基本上不用去处理什么,只需要在config文件夹下的文件中配置写既可: module.exports = merge(prodEnv, { NODE_E ...
- node配置环境变量
package.json "scripts": { "start_test": "cross-env BUILD_ENV=dev nuxt start ...
- vue cli4.0 配置环境变量
温馨提示:本文只适用于vue-cli 3.0 及以上的版本哦~ ------------------正文开始------------------ 开发项目时,经常会需要在不同环境中切换.那么我们如何配 ...
- vue-cli 4.0.5 配置环境变量样例
在项目根目录下建 .env 文件,环境变量无论运行何种模式均可获取其设置值. vue 中主要有三种模式: development.test.production,在 package.json 中目前三 ...
- 从0构建webpack开发环境(一) 一个简单webpack.config.js
本文基于webpack4.X,使用的包管理工具是yarn 概念相关就不搬运了,直接开始 首先项目初始化 mkdir webpack-demo && cd webpack-demo ya ...
- react基础学习和react服务端渲染框架next.js踩坑
说明 React作为Facebook 内部开发 Instagram 的项目中,是一个用来构建用户界面的优秀 JS 库,于 2013 年 5 月开源.作为前端的三大框架之一,React的应用可以说是非常 ...
随机推荐
- 如何评估 Serverless 服务能力?这份报告给出了 40 条标准
编者按:两年前,我们还在讨论什么是 Serverless,Serverless 如何落地.如今,已经有评测机构给出了 40 条标准来对 Serverless 的服务能力进行评估,这些评估细则既是技术生 ...
- CF123E Maze(期望dp,树形dp,式子)
题目大意: 给你一棵树,边权都是1,每一个点有一个是起点的概率和一个是终点的概率,你将以起点为根,开始在树上随机dfs,每到一个点,就会将他的所有儿子随机打乱成序列,然后按照那个随机顺序走完,直到走到 ...
- 小数的十进制和二进数转换 “无限不循环”小数的IEEE 754表示
十进制 -> 二进制 将整数部分和小数部分分开处理 例:3.125(10) 其整数部分为11(2) 小数部分按照下面的步骤求解: 0.125 x 2 = 0.25 取0 0.250 x 2 = ...
- Java(44)JDK新特性之函数式接口
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201667.html 博客主页:https://www.cnblogs.com/testero ...
- javascript运算符和表达式
1.表达式的概念 由运算符连接操作组成的式子,不管式子有多长,最终都是一个值. 2.算术运算符 加+ 减- 乘* 除/ 取模% 负数- 自增++ 自减-- 3.比较运算符 等于== 严格等于=== ...
- UML快速概述 - All you need to know about UML
UML 是统一建模语言的缩写,就像使用一组图表来可视化软件建模的蓝图(或设计计划).它不仅可以让您彻底评估整个概念,还可以确保团队中的每个人都在同一页面上. UML 图可以组织成两个不同的组. 结 ...
- 验证域用户(C#)
代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Intero ...
- JVM:内存结构
JVM:内存结构 说明:这是看了 bilibili 上 黑马程序员 的课程 JVM完整教程 后做的笔记 内容 程序计数器 虚拟机栈 本地方法栈 堆 方法区 直接内存 1. 程序计数器 1.1 定义 P ...
- makedown笔记
makedown语法 表格 这个表格的主题 |姓名|性别|年龄|职业| | ----- | ----- | ----- | ----- | |张三|男|34|码农| |李四|男|27|代驾| 这个表格 ...
- elasticsearch地理位置查询
elasticsearch地理位置查询 一.背景 二.geo数据类型 1.geo_point 2.geo_shape 三.此处对geo_point类型实战 1.背景 2.插入地点数据 1.创建索引 2 ...