首页IT科技react veu(react中一些vite常见配置)

react veu(react中一些vite常见配置)

时间2025-09-09 02:30:38分类IT科技浏览5114
导读:使用vite,首先要在项目根目录创建vite.config.js的文件,如果使用ts的话,也可以是.ts文件。 这里其实重点想要说的是,vite属于新兴的工具,所以对于他的配置项,我们必然是很陌生的,但是官方很贴心的,给我们提供了方案——一个可以给出配置提示的方法:...

使用vite              ,首先要在项目根目录创建vite.config.js的文件                     ,如果使用ts的话       ,也可以是.ts文件              。 这里其实重点想要说的是              ,vite属于新兴的工具                     ,所以对于他的配置项       ,我们必然是很陌生的       ,但是官方很贴心的                     ,给我们提供了方案——一个可以给出配置提示的方法:

import { defineConfig } from vite import reactRefresh from @vitejs/plugin-react-refresh import path from path; export default defineConfig({ plugins: [reactRefresh()], })

如上              ,只要引用defineConfig       ,包裹vite的config                     ,你在键入options的时候              ,就可以看到提示啦                     。 还有需要注意的一点,vite内置less                     ,和sass                     ,但是如果使用默认配置,那么在给less              ,和sass文件起名字的时候                     ,文件名后缀要使用.module.less,这样vite才能正确识别

项目中实用              、常用配置

文件别名配置resolve.alias

import { defineConfig } from vite import reactRefresh from @vitejs/plugin-react-refresh import path from path; export default defineConfig({ plugins: [reactRefresh()], resolve: { alias: [ { find: "src", replacement: path.resolve(__dirname,src) }, ] }, })

less设置全局变量css.preprocessorOptions

import { defineConfig } from vite import reactRefresh from @vitejs/plugin-react-refresh import path from path; export default defineConfig({ plugins: [reactRefresh()], css: { preprocessorOptions: { less: { additionalData: `@import "${path.resolve(__dirname, src/theme.module.less)}";`, javascriptEnabled: true, } }, }, })

打包

打包这里问题比较多       ,首先要确定自己的项目              ,是什么场景       。比如:是一个完成的应用                     ,需要将html打包进项目的       ,可以使用默认配置              。如果自己的项目是SDK       ,或者是一个react组件                     。那么就需要使用另外一种库模式来打包       。还有node环境的npm包                     ,比如脚手架之类需要执行某些node命令行的配置              ,都会有所不同

常规配置-rollupOptions

一般的打包配置       ,可以使用rollupOptions                     ,这部分具体有什么配置项              ,有哪些参数,我这里偷个懒                     ,大家可以去rollup官方文档去查(虽然我知道这样比较烦人                     ,但是这部分比较容易查,所以就不写啦              ,我重点写一点                     ,不太容易查到的配置) 这里只分享一个我遇到的       ,更改css构建产物文件名的配置

import { defineConfig } from vite import reactRefresh from @vitejs/plugin-react-refresh import path from path; export default defineConfig({ plugins: [reactRefresh()], build: { rollupOptions: { output:{ entryFileNames: `[name].${timestamp}.js`, chunkFileNames: `[name].${timestamp}.js`, // css文件名 assetFileNames: `[name].${timestamp}.[ext]` // 比如你想构建出来的css为dist/index.css              ,那么你可以这样 // assetFileNames: `index.[ext]` } } }, })

库模式

这个模式适用于                     ,打包一个不含html文件的场景

import { defineConfig } from vite import reactRefresh from @vitejs/plugin-react-refresh import path from path; export default defineConfig({ plugins: [reactRefresh()], build: { lib: { // 入口文件 entry: path.resolve(__dirname, src/index.tsx), // umd                     、iife的格式vite要求必须要有name作为导出的全局变量 name: "SpecialEffect", // 导出格式       ,默认为["iife","umd"] formats: [iife], // js打包名称       ,当然这部分官方文档更加详细 fileName: () => "index.js" }, // umd格式下                     ,支持将不需要打包的第三方库              ,排除在外       ,并指定全部环境 // 提供的全局变量代替                     ,比如以下的例子              ,不将react打包,由全局React // 变量提供react库 rollupOptions: { external: [react], output: { globals: { react: React } } } }, })

本地开发服务器的配置

import { defineConfig } from vite import reactRefresh from @vitejs/plugin-react-refresh import path from path; export default defineConfig({ plugins: [reactRefresh()], server: { // 端口 port: 3000, // 是否开启https服务 https: true, // 代理 proxy: { /project/delete: { target: https://www.bdsc.com, changeOrigin: true, rewrite: (path) => path.replace(/^\/project\/delete/, ) }, /project/update: { target: https://www.bdsc.com, changeOrigin: true, rewrite: (path) => path.replace(/^\/project\/update/, ) }, } }, })

proxy

{ proxy:{ api:{ target: https://www.bdsc.com, changeOrigin: true, rewrite: (path) => path.replace(/^\api/, ) } } }

以上配置可以解决proxy百分之九十的问题                     ,但是这个含义却很少有人讲的清楚       。 首先 "api"这个是一个标识符                     ,虽然很多接口会提供给你类似这样的www.bdsc.com/api/materia…

我还是拿www.bdsc.com/api/materia…

首先我们需要向本地开发服务发起请求,然后本地开发服务器请求地址www.bdsc.com/api/materia…

发起请求的方式是              ,我们通过proxy定义一个标识符                     ,例如aaa       ,然后在本地开发服务器的地址拼接上标识符aaa                     。也就是localhost:3000/aaa              ,这样就可以对本地开发服务器发起请求了              。当你发起这个请求                     ,本地开发服务器要做什么呢?他会根据配置中的target字段的地址       ,也就是www.bdsc.com       ,拼接上aaa标识符                     ,然后再拼接上/api/materia… rewrite字段中              ,将aaa这个标识符       ,替换为空的字符串       。那么这样得到的最终地址就是www.bdsc.com/api/materia…

当然这个标识符你不想自定义                     ,想要使用接口中的那个api字段行不行呢              ,当然也可以,最后不需要rewrite就好了

上面说了一大堆                     。字有点多                     ,可能也少有人耐心看              。下面我就从头到位的说一下具体做法                     ,代码:

import axios from axios; import env from ./env; // env 环境变量,这里必须要判断当前的环境。本地开发              ,还是在生产       、日常              、预发等 // 是否是本地环境 const isLocal = env === "LOCAL" // 本地开发baseURL使用标识符                     ,浏览器会自动添加域名       ,也就是本地开发服务器的域名 const baseURL = isLocal ? "aaa" : "https://www.bdsc.com" axios({ baseURL, url:"api/material", method:"GET", params:{} }) .then(res => { // 发起请求 })

如果是本地环境              ,那么上面实际请求的地址就是类似http://localhost:3000/aaa/api/material这种地址

下面proxy的配置

{ proxy:{ aaa:{ target: https://www.bdsc.com, changeOrigin: true, rewrite: (path) => path.replace(/^\aaa/, ) } } }

当本地服务器收到http://localhost:3000/aaa/api/material的请求                     ,便会将localhost:3000替换为target:https://www.bdsc.com的到https://www.bdsc.com/aaa/api/material, 然后再根据rewrite的配置       ,将aaa替换为空字符串                     。得到www.bdsc.com/api/materia…

以上是关于vite的配置的一点总结

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
xp桌面文字大小怎么调(windowsXP桌面字体模糊怎么办)