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

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

时间2025-05-22 05:14:30分类IT科技浏览3671
导读:使用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
苹果cms模板制作教程(苹果CMS免费版,助力网站建设,轻松搭建个性化网站) 关闭win11自动更新(怎么禁止Win11自动更新驱动? 避免win11降级GPU的技巧)