工具 – 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 中后台管理系统框架,距 ...
随机推荐
- THINKPHP的CURD是什么意思?
thinkphp的CURD是什么意思? 解释如下: 增:C Create 在thinkphp的代码里面对应的方法是add(); 改:U Update 在thinkphp的代码里面对应的 ...
- SQL_left join 和from 两个表的区别
一个是普通的联接,结果中的记录在两个表中都有.一个是左外联接,结果中的记录在A表中存在,B表中不一定有.相当于a表为主体表,b为辅助表. 例子: mysql> select * from a;+ ...
- 解码 xsync 的 map 实现
解码 xsync 的 map 实现 最近在寻找 Go 的并发 map 库的时候,翻到一个 github 宝藏库,xsync (https://github.com/puzpuzpuz/xsync) . ...
- 基于CFX的小型风电机组流场计算流程
一.Workbench界面框架 二.Geometry模块操作 1.打开Geometry模块,导入txt格式模型 File >> Import External Geometry File ...
- [oeasy]python0141_自制模块_module_reusability_复用性
自制包内容 回忆上次内容 上次导入了外部的py文件 import my_module 导入一个自己定义的模块 可以使用my_module中的变量 不能 直接使用 my_module.py文件中的变 ...
- [oeasy]python0115_西里尔字符集_Cyrillic_俄文字符编码_KOI_8859系列
各语言字符编码 回忆上次内容 上次回顾了 非ascii的拉丁字符编码的进化过程 0-127 是 ascii 的领域 西欧.北欧语言 大多使用 拉丁字符 由iso组织 制定iso-8859-1 ...
- oeasy教您玩转vim - 86 - # 外部命令external Command
外部命令 external 回忆 上次研究的是global :[range]global/{pattern}/{command} range 是执行的范围 pattern 是搜索的模式 comma ...
- JMeter 基于脚本实现代码共享
需求描述 需求是这样的:执行某次压测任务时,压测涉及的前端接口,要求携带一个userName请求头,该请求头值为实际用户名经过DES加密后,再采用Base64加密后的值,为此,编写了一段加密代码,发送 ...
- Known框架实战演练——进销存框架搭建
本文介绍如何使用Known开发框架搭建进销存管理系统的项目结构,以及开发前的一些配置和基础代码. 项目代码:JxcLite 开源地址: https://gitee.com/known/JxcLite ...
- 如何免费提取PDF里的图片-pdfimages使用教程
写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 动机 ...