最近有段时间没有更新博客,主要的原因是因为面临换工作,而且家里事情也比较多。最近也是安定下来,希望之后可以多更新一些文章。

vite+react项目搭建

到了新的公司之后接到了一个任务,就是重构一个已经开发维护了4年的项目,所以就想到了用一些比较新颖的之前没有用到的技术。于是就想到vite。

关于vite的信息大家可以去官网进行查看,我就不赘述了。至于使用的构建模版其实也在官网可以找到链接,我这边就直接贴上吧。https://github.com/vitejs/vite/tree/main/packages/create-vite 我使用的是react+ts。

我用到的所有技术栈如下:
vite + react + ts + antd + react-reouter + mobx + eslint + husky + commitlint
就构建来说,其实就是查阅各个技术的官方文档,没什么好说的,难度也不大。如果你刚好需要用到这些模版,你可以评论下或者点个赞,我把我的模版上传到github上。

遇到的坑
  • vite proxy设置记得添加changeOrigin 否则会报405的错误
  • 引入antd后报错,找不到~antd/dist/antd.less
    这个是引入路径的识别问题,vite识别不了~符号代表的路径,将~替换为/,在根目录下查找就可以了。
  • 提示less的配置错误,需要在vite配置文件下设置:css:{preprocessorOptions: {less: {javascriptEnabled: true}}}
  • 如果设置的MODE不是production,当你想进行preview的时候会报错:jsxDEV is not a function,这个时候需要对plugin中的react()调用添加参数:jsxRuntime: “classic”。
  • 如果设置全局常量的话:define对象的值不能直接写成字符串,那样的运行时会报错(除非你设置为数字),正确的办法是设置为JSON.stringify();
  • react-router-dom v6版本中的重定向需要这样编写: <Route path="*" element={<Navigate to="/" />} />跳转需要使用useNavigate
  • 进行code split的时候只需要使用React.lazy就可以了
  • 如果在vite下也想实现通过cdn引入第三方库,例如React & react-dom,类似于webpack中的external,可以使用vite-plugin-externals这个插件,根据文档简单配置,然后在index.html文件中引入就可以了。
  • vite的打包工具使用的rollup,当你使用code split功能后,打包出来的文件中都是index.[hash].js这样的文件,难以进行区分,如果想对分割的代码进行自定义命名你需要配置rollup的打包配置,然后自定义打包的规则:
    // vite.config.ts
    export default definConfig({
    	.
    	.
    	.
    	build: {
    		rollupOptions: {
    	      output: {
    	        manualChunks: function (id, {getModuleInfo, getModuleIds}) {
    	          // 此处写你自己的逻辑,id值为你打包文件的绝对路径
    	          // 最终需要返回相应的字符串,可以根据id的路径进行定制,
    	          // getModuleInfo 和 getModuleIds是两个函数,可以获取当前打包文件的更多信息
    	        }
    	      }
    	    },
    	}
        .
        .
        .
    })
    

希望可以帮助到各位

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐