首先,看下企业级项目里可能会用到哪些功能:
而浏览器只认识html,css,js,所以就需要一个东西能够把这些功能集成到一起,这个东西就是构建工具。将我们写的浏览器不认识的代码,交给构建工具进行编译处理的过程叫做打包,打包完成以后会给出浏览器可以认识的文件。
构建工具承担了哪些脏活累活:
优化开发体验:
总之,构建工具让我们不用关心生产的代码如何在浏览器上运行,只需关心我们的开发就行了。
首先,新建一个项目文件夹test-vite:mkdir test-vite && cd test-vite。
npm i -g pnpm配置npm全局安装路径,以管理员身份运行命令:npm config set prefix "E:\develop\NodeJS",E:\develop\NodeJS是Node.js安装目录。
配置npm镜像源地址:npm config set registry https://registry.npmmirror.com。
安装 vite 命令行工具:pnpm add -D vite。
创建一个 index.html 文件:<p>Hello Vite!</p>。
然后在终端中运行 vite:pnpm vite,就可以在 http://localhost:5173 上访问 index.html。
Vite解决了3个问题:
当以命令行方式运行 vite 时,Vite 会自动解析 项目根目录 下名为 vite.config.js 的配置文件。
因为 Vite 本身附带 TypeScript 类型,所以可以通过 IDE 和 jsdoc 的配合来实现智能提示:
/** @type {import('vite').UserConfig} */ export default { // ... }
新建3个配置文件:base文件(vite.base.config.js)、开发环境(vite.dev.config.js)和生产环境(vite.prod.config.js)配置文件:
import { defineConfig } from 'vite' export default defineConfig({ // ... })
修改 vite.config.js 配置文件:
import { defineConfig } from 'vite' import viteBaseConfig from './vite.base.config' import viteDevConfig from './vite.dev.config' import viteProdConfig from './vite.prod.config' // 策略模式 const envResolver = { build: () => { console.log('生产环境...') return { ...viteBaseConfig, ...viteProdConfig } }, serve: () => { console.log('开发环境...') return { ...viteBaseConfig, ...viteDevConfig } }, } export default defineConfig(({ command }) => { return envResolvercommand })
修改 package.json 文件,添加:
"scripts": { "dev": "vite", "build": "vite build", "test": "vite --mode test" },
在终端中运行命令:pnpm dev或pnpm build。
vite内置了dotenv这个第三方库,dotenv会自动读取 .env 文件,并解析其中的环境变量,将其注入到process对象下(但vite考虑到和其他配置的一些冲突问题,并不会直接注入到process对象下)。
不过当你的确需要时,可以使用 Vite 导出的 loadEnv 函数来加载指定的 .env 文件。
新建3个环境变量配置文件:
修改 vite.config.js 配置文件的 export:
export default defineConfig(({ command, mode }) => { const env = loadEnv(mode, process.cwd(), '') console.log('当前环境:', env) return envResolvercommand })
在终端中运行命令:pnpm dev --mode development,会将mode设置为development传递进来。
当调用loadEnv时,会做如下几件事:
如果是客户端,Vite会将对应的环境变量注入到import.meta.env里去。但为了防止将隐私性的变量直接送进import.meta.env中,所以Vite做了一层拦截。如果环境变量不是以VITE开头,就不会注入到客户端中去。如果想要更改VITE这个前缀,可以使用envPrefix配置。
vite和create-vite的关系: create-vite是vite的脚手架,create-vite内置了vite。
本文作者:a
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!