@asd14/vblocks (英语)
零配置 React 构建, 作为静态站点或单一的 HTML 文件
零配置
仅需要 src/index.tsx 财务报告和审定财务报表 src/index.html
🔋 最大支持
SWC, PostCSS, CSS 模块, MDX, 反应刷新, 多腾夫
几个应用,一个安装
Apps 共享一个 package.json 财务报告和审定财务报表 node_modules/。一个新的应用程序重新使用
已安装的软件包
为AI代理优化
代理上下文只持有应用程序 : 没有 Webpack, PostCSS 或 TypeScript 配置
写入、读取或修正
[大
VBlocks 需要节点^22.22.3, (中文(简体) ),^24.15.0或者说>=26.0。 。 。 .
目录
快速启动
-
脚手架最小反应项目
npx @asd14/vblocks init my-vblocks-app cd my-vblocks-app npm installmy-vblocks-app/ ├─ src/ │ ├─ index.tsx │ ├─ index.html │ └─ index.css ├─ .gitignore ├─ tsconfig.json └─ package.json # react, react-dom and the vblocks scripts -
启动开发服务器
npx vblocks serve -
构建
npx vblocks build # production bundle in dist/ npx vblocks build --single-file # one dist/index.html, every asset inlined
一个项目中的几个应用程序
多个应用程序,如演示或MVP草图,可以共享一个 package.json 和一个
node_modules/数字 :
-
增加水管
npx @asd14/vblocks init sketches --only plumbingsketches/ ├─ .gitignore └─ package.json -
添加应用程序
npx @asd14/vblocks init sketches/flow-diagram --template xyflow --only app cd sketches npm installsketches/ + ├─ flow-diagram/ + │ ├─ src/ # the files of the xyflow template + │ ├─ postcss.config.js + │ └─ tsconfig.json ├─ .gitignore ! └─ package.json # + @xyflow/react, tailwindcss, @tailwindcss/postcss, cssnano -
启动一个应用程序的开发服务器
npx vblocks serve --prefix flow-diagram
词汇
| 任期 | 手段 |
|---|---|
| 接线 | 项目文件 init 写道: package.json, (中文(简体) ), .gitignore |
| 项目文件夹 | 文件夹与 package.json |
| App 文件夹 | 文件夹与 src/index.tsx 财务报告和审定财务报表 src/index.html |
| 套装 | 文件 build 写到 dist/ |
怎么样
使用环境变量
-
添加一个
.env文件到您的应用程序文件夹API_URL=https://api.example.com -
读取代码中的变量
const apiUrl = process.env["API_URL"]
网页包替换每个 process.env["NAME"] 值为 NAME,以及
undefined 何时 .env 不设置它。 Webpack 树叶出捆绑
变量代码不读取.
[尖叫声]
从不泄露秘密,例如API密钥,通过process.env任何装载者 页面可以读取.
[注]
这个 客户类型 声明process.env没有别的了 从节点, 因为Webpack 取代了其他的.
停止使用 ../../../ 到处都是
VBlocks 解析 @self 页:1 src/ 您的应用程序文件夹 :
// Instead of: import { Component } from "../../../components"
import { Component } from "@self/components"
[注]
VBlocks用 SWC 编译类型脚本,不进行打字检查. 运行tsc你自己来 tsconfig.json需要和 Webpack 相同的别名.
这个tsconfig.json那个vblocks init已写 这个 否则,添加:{ "compilerOptions": { + "paths": { "@self/*": ["./src/*"] } } }
使用 CSS 模块
-
文件名称
*.module.css/* src/button.module.css */ .primary-button { color: tomato; } -
作为对象导入
/* src/button.tsx */ import styles from "./button.module.css" export const Button = () => <button className={styles.primaryButton} />
- 骆驼Case 键 - 说吧
.primary-button变成styles.primaryButton - 类名 - 一个赤裸的大麻花
production模式,[local]__[hash]内development模式
[注]
这个 客户类型 声明.css,图像和字体导入.
替换默认配置
您的应用程序文件夹中的每个配置都会替换同名的默认值 :
webpack.config.jspostcss.config.jspostcss-preset-env编织出巢穴,oklch()财务报告和审定财务报表color-mix()用于旧浏览器并添加销售商前缀cssnano内production
.swcrc- 浏览器目标
> 0.25%, not dead
- 浏览器目标
-
弹出 默认位于您的应用程序文件夹中
cd flow-diagram npx vblocks eject swc > .swcrc -
更新弹出的文件
[注]
VBlocks 不将您的配置与默认合并, 除了两个例外 :
.swcrc -> env.targets: VBlocks 在缺少您的默认值时添加默认值.swcrc -> jsc.transform.react.refresh: VBlocks 添加反应刷新 当serve运行在development模式
有尾风的样式
VBlocks不包括"泰尔风". 通过一个加法 postcss.config.js 在你身边
应用程序文件夹 :
[注]
这个xyflow财务报告和审定财务报表xyflow-tabs模板vblocks init有这个设置.
-
安装 Tailwind、 PostCSS 和 cssnano 的 Tailwind 插件, 其名称为 已弹出配置导入
npm install --save-dev tailwindcss @tailwindcss/postcss cssnano -
弹出默认 PostCSS 配置到您的应用文件夹
npx vblocks eject postcss > postcss.config.js -
替换
postcss-preset-env带有 Tailwind 插件+import tailwindcss from "@tailwindcss/postcss" import cssnano from "cssnano" -import postcssPresetEnv from "postcss-preset-env" export default ({ mode }) => ({ plugins: [ - postcssPresetEnv({ stage: 2 }), + tailwindcss({ optimize: mode === "production" }), ...(mode === "production" ? [cssnano({ preset: "default" })] : []), ], })
[大
尾风 4 编译并添加销售商前缀 自己来 两个插件,postcss-preset-env重写 Tailwind的@layer规则进入:not(#\#)选择者。 CSS文件增长.
-
添加尾风导入到
src/index.css@import "tailwindcss" source(".");source(".")将 Tailwind 的类扫描限制在 CSS 文件的文件夹中,src/。 。 。 .
[注]
无source("."),尾风扫描当前文件夹。 与--prefix,您从工程文件夹中运行 VBlocks,该文件夹 持有每个应用程序。 每个应用程序的CSS,然后也获得其他应用程序的类.
在现有工程中添加 VBlocks
-
安装 VBlocks
npm install --save-dev @asd14/vblocks # needs react and react-dom ^18 or ^19 -
添加数据 客户类型 编辑
@self您的别名tsconfig.json{ "compilerOptions": { + "types": ["@asd14/vblocks/client"], + "paths": { "@self/*": ["./src/*"] } } } -
保证
index.tsx财务报告和审定财务报表index.html包含src/
[注]
VBlocks 构建dist/index.html从src/index.html并添加脚本和 样式表标签。 放下装入您的条目的标签, 如 Vite's<script type="module" src="/src/main.tsx"></script>。 。 。 .
-
启动开发服务器
npx vblocks serve
参考资料
图标
每个命令都会打印自己的帮助 --help,比如说. npx vblocks serve --help。 。 。 .
vblocks init
将模板的管道、应用或两者都写入 <directory>。 。 。 .
vblocks init <directory>
[--template <plain|xyflow|xyflow-tabs>]
[--only <app|plumbing>]
<directory>- 要写入的文件夹 。 一定是不见了还是空的
--template(默认 :plain(中文(简体) )- 要写入的模板见 模板
--only(默认:两者兼有)- 写入模板的一部份
plumbing数字 :package.json, (中文(简体) ),.gitignoreapp数字 :src/, (中文(简体) ),tsconfig.json和模板的配置.init添加 模板对package.json会 议 日 程 和 议 程 项目文件夹时<directory>没有package.json那边,init失败
vblocks serve
启动开发服务器 .
- 运行于
http://localhost:8080,或下一个自由端口 - 听着
localhost,所以你网络上的另一个设备,例如电话,不能 打开页面 - 打开浏览器中的页面
vblocks serve
[--mode <development|production>]
[--prefix <directory>]
[--analyze]
[--log-level <error|warn|info|verbose>]
[-- <webpack option>...]
--mode(默认 :development(中文(简体) )- Webpack 模式
- 反应刷新仅在其中运行
development
--prefix(默认: 当前文件夹)- 这个 应用程序文件夹,必须存在
--analyze- 在自由端口运行捆绑分析器
--log-level(默认 :warn(中文(简体) )- Webpack 及其开发服务器打印多少
-- <webpack option>...- 任意
webpack serve选项 serve每一个都转到 Webpack 不变- 举个例子.
-- --host 0.0.0.0在网络上听
- 任意
vblocks build
将应用程序建为捆绑在 dist/ 应用程序文件夹.
默认, build数字 :
- 撰写 JS 和 CSS 的有内容隐藏名称的文件
- 写入 a
react块和 avendors其它依赖关系时的块 总计20个KB(10个KB)以上development(中文(简体) ) - 内插
jpg, (中文(简体) ),gif, (中文(简体) ),png财务报告和审定财务报表svg不超过 10 KB 的文件 - 写入更大的图像到
dist/含有包含内容的名称 - 写作
woff, (中文(简体) ),woff2, (中文(简体) ),ttf财务报告和审定财务报表eot文件为dist/fonts/ - 副本
src/public/favicon.svg财务报告和审定财务报表src/public/robots.txt您的应用程序,或 默认 VBlocks
vblocks build
[--mode <development|production>]
[--prefix <directory>]
[--single-file|--single]
[--log-level <error|warn|info|verbose>]
[-- <webpack option>...]
--mode(默认 :production(中文(简体) )- Webpack 模式
- 单位
production, (中文(简体) ),build修改JS、HTML和默认的PostCSS 配置, CSS
--prefix(默认: 当前文件夹)- 这个 应用程序文件夹,必须存在
--single-file|--single- 单独写一个
dist/index.html,每个资产 - 浏览器从磁盘打开文件, 没有服务器和网络
- 捆绑没有
robots.txt - 在 URL 散列中保留路径
- 打开
file://, (中文(简体) ),history.pushState向其它路径投掷
- 打开
- 单独写一个
--log-level(默认 :warn(中文(简体) )- 网包印数
-- <webpack option>...- 任意
webpack build选项 build每一个都转到 Webpack 不变- 举个例子.
-- --devtool source-map,用于写入源地图
- 任意
vblocks eject
打印默认配置到 stdout .
vblocks eject <webpack|postcss|swc>
<webpack|postcss|swc>- 要打印的配置
在您的应用程序文件夹中运行并保存输出到 替换默认数字 :
npx vblocks eject webpack > webpack.config.js
npx vblocks eject postcss > postcss.config.js
npx vblocks eject swc > .swcrc
一个被弹出配置从您的工程中加载其插件和加载器 。 安装它们
在项目文件夹中, eg. postcss-preset-env 财务报告和审定财务报表 cssnano 邮政编码
相会.
模板
所有模板脚手架 src/index.html, (中文(简体) ), src/index.css 财务报告和审定财务报表 tsconfig.json。 。 。 .
plain
"Hello World!" 进入 src/index.tsx。 。 。 .
- 不添加软件包
xyflow
一个图,和一个选定节点或边缘的细节面板.
- 添加数
@xyflow/react, (中文(简体) ),tailwindcss, (中文(简体) ),@tailwindcss/postcss财务报告和审定财务报表cssnano改为 页:1package.json项目文件夹 - 写入 a
postcss.config.js配置尾风
src/
├── index.tsx # the layout: header, diagram, details panel, the selected id
├── diagram.tsx # the nodes and edges, placed and sized in grid cells
├── details.tsx # the panel for the selected node or edge
└── utils/grid.ts # CELL_SIZE and toPixels
xyflow-tabs
每个图一个分页,每个分页都有自己的细节面板.
- 添加相同的软件包和
postcss.config.js作为xyflow
src/
├── index.tsx # the layout: header, tab bar, details panel, the selected id
├── pages/
│ ├── build/
│ │ ├── diagram.tsx # the nodes and edges of one tab, in grid cells
│ │ └── details.tsx # the panel for its selected node or edge
│ └── serve/ # the same two files
├── ui/zoom-level.tsx # the zoom level, and a Reset to 100%
└── utils/grid.ts # CELL_SIZE and toPixels
许可证
麻省理工学院