前言

一直想 try Vite, 但一直没有机会。

今天突然 Live Server IP Address 手机连不上...也不知道是 Bug 还是怎么回事儿。

总之 IIS IP Address 没有问题. 那多半是 Live Server 有鬼. 借此机会把它给换了呗。

参考

Docs – Vite

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的更多相关文章

  1. 轻量级工具Vite到底牛在哪——一文全知道

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://www.sitepoint.com/vitejs-front-end-build- ...

  2. 如何在 Vite 中使用 Element UI + Vue 3

    在上篇文章<2021新年 Vue3.0 + Element UI 尝鲜小记>里,我们尝试使用了 Vue CLI 创建 Vue 3 + Element UI 的项目,而 Vue CLI 实际 ...

  3. 手把手带你实现基于 Vite+Vue3 的在线Excel表格系统

    今天,葡萄带你了解如何基于Vite+Vue3实现一套纯前端在线表格系统. 在正式开始项目介绍之前,首先咱们首先来介绍一下Vite和Vue3. Vue3 2020年09月18日Vue.js 3.0发布, ...

  4. 如何开发一款基于 Vite+Vue3 的在线表格系统(上)

    今天,葡萄带你了解如何基于Vite+Vue3实现一套纯前端在线表格系统. 在正式开始项目介绍之前,首先咱们首先来介绍一下Vite和Vue3. Vue3 Vue是什么?大多前端开发者对这个词已毫不陌生了 ...

  5. 蒲公英 · JELLY技术周刊 Vol.10 为什么你还不使用 TypeScript

    登高远眺 天高地迥,觉宇宙之无穷 基础技术 直播延迟?为什么流媒体直播的延迟那么高 随着通信技术的发展,视频点播.直播业务也逐渐兴起.在这些业务形态中,流媒体技术扮演着重要的角色.但在实际使用中,即便 ...

  6. vue3 一些关键属性

    环境搭建 尤大开发了一个项目构建工具vite npm init vite-app <project-name> cd <project-name> npm install np ...

  7. 京东 Vue3 组件库闪亮登场

    京东零售开源项目 NutUI 是一套京东风格的轻量级移动端 Vue 组件库,是开发和服务于移动 Web 界面的企业级产品.经过长时间的开发与打磨,NutUI 3.0 终于要和大家见面了!3.0 版本在 ...

  8. 京东 vue3 组件库震撼升级,如约而至!

    京东零售开源项目 NutUI 是一套京东风格的轻量级移动端 Vue 组件库,是开发和服务于移动 Web 界面的企业级产品.经过长时间的开发与打磨,NutUI 3.0 终于和大家见面了!3.0 版本在技 ...

  9. 京东 Vue3 组件库支持小程序开发啦!

    源码抢先看: https://github.com/jdf2e/nutui NutUI 3.0 官网:https://nutui.jd.com/3x/#/ 小程序多端适配 设计初衷 在跨端小程序的开发 ...

  10. 爆款预订,2022 年最值得关注的后台框架 —— Fantastic-admin

    前言 如果 2021 年你还没有听说过 Fantastic-admin ,那即将到来的 2022 年可不要再错过了. Fantastic-admin 做为一款开箱即用的 Vue 中后台管理系统框架,距 ...

随机推荐

  1. oeasy教您玩转 linux 010212 管道 pipe

    上一部分我们都讲了什么? 牛说cowsay 牛可以有各种表情 可以自定义眼睛 可以变成各种别的小动物 可以说也可以想cowthink 我们也想让牛说出字符画的感觉 回顾字符画 下载figlet和toi ...

  2. oeasy教您玩转vim - 39 - # 剪切粘贴

    ​ 剪切粘贴 回忆上节课内容 我们大幅度地复习了整个 motion: 直接运动 h j k l 行运动 首行g g 末行G 第n行n G 单词运动 wbe w 是到下一个 word 的开头 b 是到当 ...

  3. vue小知识~实现父子组件双向数据绑定

    vue的数据是单向数据流动,在子组件中是不可以修改父组件的数据的,但是还是可以通过其他方式间接修改父组件的数据. 核心思想:数据在哪个组件,就在哪个组件修改. 1,方式一:通过向子组件传递方法 这个方 ...

  4. 记一次 Redisson 线上问题 → 你怎么能释放别人的锁

    开心一刻 今天,我的又一个好哥们脱单了,只剩下我自己单身了 我向一个我喜欢的女生吐苦水 我:我这辈子是找不到女朋友了 她:怎么可能,你很优秀的,会有很多女孩子愿意当你女朋友的 我内心窃喜,问道:那你愿 ...

  5. java面试一日一题:rabbitMQ如何保证消息不丢失

    问题:请讲下rabbitMQ如何保证消息不丢失 分析:该问题属于概念题,同时也是一个设计方面的题,牵扯到部分设计层面的东西: 回答要点: 主要从以下几点去考虑, 1.rabbitMQ在保证消息不丢失方 ...

  6. uniapp生成的app怎么上架到iphone的app store

    首先这里需要强调的是,上架app store,必须用自己公司的账号的证书打包,不能使用别的公司的证书打包,因为假如使用别人的证书打包,打包出来的app,只能上传到别人的app store账号,你开发的 ...

  7. 使用update-alternatives管理GCC版本

    目录 简介 操作过程 简介 当操作系统中存在多个版本的GCC时,可以使用使用update-alternatives管理默认使用的编译器版本. 本文使用gcc-9和gcc-11做演示,操作系统为ubun ...

  8. 【Java】Socket Programming 网络编程

    Java提供了网路相关的类库,无痛连网,底层细节交给JVM控制 Java实现了一个跨平台的网络库,我们开发面对的是一个统一的网路编程环境 目的: 直接或者间接的通过网络协议和其他计算机数据交互,通讯 ...

  9. 【Scala】02 循环

    1.支持集合直接作为循环体的条件: // - - - - 支持集合遍历 - - - - var arr = Array(10, 20, 30) var arr2 = List(10, 20, 30) ...

  10. 【Spring】09 后续的学习补充 vol3

    原生JDBC事务: package dao; import cn.dzz.util.DruidUtil; import org.apache.commons.dbutils.QueryRunner; ...