工具 – Vite
前言
一直想 try Vite, 但一直没有机会。
今天突然 Live Server IP Address 手机连不上...也不知道是 Bug 还是怎么回事儿。
总之 IIS IP Address 没有问题. 那多半是 Live Server 有鬼. 借此机会把它给换了呗。
参考
Vite 介绍
简单说,Vite 可以用来替代 Webpack。
对比 Webpack. Vite 的优点是,超级快 (因为它底层是 esbuild), 配置简单。
因为目前我只用 Vite 来做 development 阶段开发,production 依然用 Webpack,
所以我也不清楚 Vite 的局限,但就 dev 开发而论 Vite 秒杀 Webpack 就是了。
拿 Vite 比 Webpack 其实不太公平,它俩不是同辈,Vite 应该要和未来的 Turbopack 比才合理,希望 Turbopack 找点可以替代 Webpack 吧。
Get Started
安装
npm install vite --global
创建项目
yarn create vite
有各种模板, 我是单侧所以选的是 Vanilla, TypeScript
进入项目并安装
yarn install
启动
vite --open
Sass
安装
yarn add sass --dev
只要安装 sass 就够了. 不需要任何 config. 直接把 .css 换成 .scss 就可以跑了.
PostCSS
参考: 兴杰 – PostCSS
安装插件即可,不需要装 PostCSS CLI 哦
yarn add postcss-preset-env --dev
yarn add postcss-nested --dev
如果使用 Yarn PnP 需要安装 PostCSS
yarn add postcss --dev
postcss.config.js
import postcssPresetEnv from 'postcss-preset-env';
import nested from 'postcss-nested'; export default {
plugins: [postcssPresetEnv({ stage: 1 }), nested()],
};
注:这里用的是 ES Module (.mjs) 不是 CommonJS 哦 (.cjs)
setup browserlist (在 package.json)
{
"browserslist": [
"since 2021 and not ios < 15"
]
}
完成,我们不需要任何 Vite config。它会自动去读 postcss.config.js 和 browserlist。
IP Address & HTTPS
创建 vite.config.ts
注:要支持 .ts 需要额外安装 yarn add @types/node --dev
import { defineConfig } from 'vite';
export default defineConfig({
server: {
host: '192.168.1.152',
port: 4200,
open: '/src/home/home.html',
https: {
cert: 'C:\\self-signed-certificate\\192.168.1.152.crt',
key: 'C:\\self-signed-certificate\\192.168.1.152.key',
},
},
});
https config 和 Live Server 是一样的。
注:open 可以指定开启的路径,这样就不需要 command --open 了,直接 vite 就够了。
Build Production
tsc && vite build
看样子它是先跑一轮 TypeScript compile 然后跑 vite build,就不知道 TypeScript compile 会不会有问题 (我印象中这个不加工直接跑很烂的),但目前测试是 ok 的。
Multiple Entry Points
for development 不需要额外配置,你的 .html 都可以直接访问到。
for build 才需要 config。
import { defineConfig } from 'vite';
import pathHelper from "path";
import { fileURLToPath } from "url";
const __filename = fileURLToPath(import.meta.url);
const __dirname = pathHelper.dirname(__filename);
export default defineConfig({
build: {
rollupOptions: {
input: [
pathHelper.resolve(__dirname, './src/home/home.html'),
pathHelper.resolve(__dirname, './src/about/about.html'),
pathHelper.resolve(__dirname, './src/**/*.html') // 也支持 glob 表达式
],
},
},
});
注:记得要装 yarn add @types/node --dev 哦。
Vite build production 时底层使用的是 rollup,multiple entry points 是通过底层 rollup config 实现的。
直接把路径连到 .html 就可以了
HTML 内会引入 .ts 这样就串起来了。

TODO
目前只用到上面几个功能, 以后有其它的再补上呗.
工具 – Vite的更多相关文章
- 轻量级工具Vite到底牛在哪——一文全知道
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://www.sitepoint.com/vitejs-front-end-build- ...
- 如何在 Vite 中使用 Element UI + Vue 3
在上篇文章<2021新年 Vue3.0 + Element UI 尝鲜小记>里,我们尝试使用了 Vue CLI 创建 Vue 3 + Element UI 的项目,而 Vue CLI 实际 ...
- 手把手带你实现基于 Vite+Vue3 的在线Excel表格系统
今天,葡萄带你了解如何基于Vite+Vue3实现一套纯前端在线表格系统. 在正式开始项目介绍之前,首先咱们首先来介绍一下Vite和Vue3. Vue3 2020年09月18日Vue.js 3.0发布, ...
- 如何开发一款基于 Vite+Vue3 的在线表格系统(上)
今天,葡萄带你了解如何基于Vite+Vue3实现一套纯前端在线表格系统. 在正式开始项目介绍之前,首先咱们首先来介绍一下Vite和Vue3. Vue3 Vue是什么?大多前端开发者对这个词已毫不陌生了 ...
- 蒲公英 · JELLY技术周刊 Vol.10 为什么你还不使用 TypeScript
登高远眺 天高地迥,觉宇宙之无穷 基础技术 直播延迟?为什么流媒体直播的延迟那么高 随着通信技术的发展,视频点播.直播业务也逐渐兴起.在这些业务形态中,流媒体技术扮演着重要的角色.但在实际使用中,即便 ...
- vue3 一些关键属性
环境搭建 尤大开发了一个项目构建工具vite npm init vite-app <project-name> cd <project-name> npm install np ...
- 京东 Vue3 组件库闪亮登场
京东零售开源项目 NutUI 是一套京东风格的轻量级移动端 Vue 组件库,是开发和服务于移动 Web 界面的企业级产品.经过长时间的开发与打磨,NutUI 3.0 终于要和大家见面了!3.0 版本在 ...
- 京东 vue3 组件库震撼升级,如约而至!
京东零售开源项目 NutUI 是一套京东风格的轻量级移动端 Vue 组件库,是开发和服务于移动 Web 界面的企业级产品.经过长时间的开发与打磨,NutUI 3.0 终于和大家见面了!3.0 版本在技 ...
- 京东 Vue3 组件库支持小程序开发啦!
源码抢先看: https://github.com/jdf2e/nutui NutUI 3.0 官网:https://nutui.jd.com/3x/#/ 小程序多端适配 设计初衷 在跨端小程序的开发 ...
- 爆款预订,2022 年最值得关注的后台框架 —— Fantastic-admin
前言 如果 2021 年你还没有听说过 Fantastic-admin ,那即将到来的 2022 年可不要再错过了. Fantastic-admin 做为一款开箱即用的 Vue 中后台管理系统框架,距 ...
随机推荐
- Midnight Commander (MC)
Midnight Commander GNU Midnight Commander 是一个可视化文件管理器,根据 GNU 通用公共许可证获得许可,因此有资格成为自由软件.它是一个功能丰富的全屏文本模式 ...
- 【JavaScript高级04】作用域和作用域链
1,作用域 作用域表示的是变量的有效区域,JavaScript中作用域分为全局作用域和函数作用域(在es6之前没有块作用域).其确定时间为编写成功之后就已经确定好了. 作用域的作用是用来隔离变量,不同 ...
- 初读Nginx
Nginx反向代理:将前端发送的动态请求由Nginx转发到后端服务器 NGINX的好处: 可以缓存,提高访问速度 负载均衡:当请求量过大时,可以按指定方式均衡的分配给集群中的每台服务器 保证后端服务安 ...
- 【Java】MultiThread 多线程 Re01
学习参考: https://www.bilibili.com/video/BV1ut411T7Yg 一.线程创建的四种方式: 1.集成线程类 /** * 使用匿名内部类实现子线程类,重写Run方法 * ...
- 【Java】Input,Output,Stream I/O流 01 概述 & 4个基础流
Input,Output,Stream IO流 I/O Input/Output缩写.I/O技术用于处理设备之间的数据传输,读写文件,网络通讯 Java程序对于数据的操作以Stream流的形式进行 i ...
- 全地形人形机器人(humanoid)是否只能进行短距视野感知呢 —— 实时地形感知
相关: https://capital.lenovo.com/news/detail/id/924/s/1.html 常见的人形机器人都是测试其手臂灵活度为主,但是近日看到一款以全地形步态行走为主的机 ...
- AQS专题
1.背景 2.预备知识 2.1.park.unpark.interrupt.isInterrupted.interrupted方法的理解 一:park.unpark 1.park.unpark它不是T ...
- FAT32和NTFS文件系统的区别
文件系统对于在计算设备上运行至关重要. 因此,选择正确的文件系统变得很重要. FAT32 和 NTFS 是两个具有显着差异的文件系统. 1.磁盘分区容量区别 NTFS可以支持的分区(如果采用动态磁盘则 ...
- 并查集基础 &打击罪犯
并查集基础 真的很基础 题目描述:Description 某个地区有n(n<=1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接联系,但是任意两个 ...
- grpc坑之Could not find TLS ALPN provider; no working netty-tcnative
在使用grpc过程中偶尔会遇到下面报错: Initialization of bean failed; nestedexception is java.lang.IllegalStateExcepti ...