From 88c2bd4dd56a9a321b8e9a4bdf32c18830df12d1 Mon Sep 17 00:00:00 2001 From: rayc Date: Wed, 26 Jun 2024 14:10:08 +0800 Subject: [PATCH] =?UTF-8?q?ESBuild=20=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .obsidian/workspace.json | 40 ++++++++++++++-------------- web/ESBuild 学习.md | 16 ++++++++++++ web/Rollup 学习.md | 42 ++++++++++++++++++++++++++++++ 博文计划/待写博客.md | 4 ++- 工具相关文档/git/Git 遇到的问题.md | 3 +++ 日志检索.md | 2 +- 语言/Rust/2024-06-06.md | 7 +++++ 7 files changed, 92 insertions(+), 22 deletions(-) create mode 100644 web/ESBuild 学习.md create mode 100644 web/Rollup 学习.md create mode 100644 工具相关文档/git/Git 遇到的问题.md create mode 100644 语言/Rust/2024-06-06.md diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 129db07..e5ee619 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -49,7 +49,7 @@ "state": { "type": "markdown", "state": { - "file": "web/lint/前端开发中的lint.md", + "file": "工具相关文档/git/Git 遇到的问题.md", "mode": "source", "source": false } @@ -134,7 +134,7 @@ "state": { "type": "backlink", "state": { - "file": "web/lint/前端开发中的lint.md", + "file": "工具相关文档/git/Git 遇到的问题.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -151,7 +151,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "web/lint/前端开发中的lint.md", + "file": "工具相关文档/git/Git 遇到的问题.md", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -174,7 +174,7 @@ "state": { "type": "outline", "state": { - "file": "web/lint/前端开发中的lint.md" + "file": "工具相关文档/git/Git 遇到的问题.md" } } } @@ -197,41 +197,41 @@ }, "active": "90f44bcb7cbd1134", "lastOpenFiles": [ - "Android Hilt.md", - "web/lint/前端开发中的lint.md", - "web/lint", - "日志检索.md", - "工具相关文档/VSCode/VSCode 相关.md", - "工具相关文档/Android Studio", "工具相关文档/git/Git 笔记.md", + "工具相关文档/git/Git 遇到的问题.md", + "语言/Rust/2024-06-06.md", + "语言/Rust/Rust学习笔记一.md", + "博文计划/待写博客.md", + "日志检索.md", + "未分类日志.md", + "工具相关文档/VSCode/VSCode 连接 云服务器.md", + "工具相关文档/VSCode/VSCode 文件嵌套.md", + "工具相关文档/VSCode/VSCode 相关.md", + "博客/docker 安装 wordpress.md", + "web/Rollup 学习.md", + "web/ESBuild 学习.md", + "web/lint/前端开发中的lint.md", + "Android Hilt.md", + "web/lint", + "工具相关文档/Android Studio", "README.md", "开发中/Vue3 + 腾讯COS文件上传.md", "工具相关文档/git", "工具相关文档/未命名.md", "开发愿望清单.md", "开发中/本地版本的cos图床.md", - "工具相关文档/VSCode/VSCode 连接 云服务器.md", - "工具相关文档/VSCode/VSCode 文件嵌套.md", "工具相关文档/VSCode", "未命名", "工具相关文档/Obsidian 使用笔记.md", "开发中/RayC后台开发日志.md", "gitea.md", "开发中", - "未分类日志.md", - "语言/Rust/Rust学习笔记一.md", "博客/Android/相机/Android Camera2 在预览时,录制视频.md", - "博客/docker 安装 wordpress.md", "Bug日志/后端 -- Bug记录.md", "极客时间学习/Nginx_geek/核心基础.md", - "语言/Kotlin/2023-11-16.md", - "语言/未命名.md", "语言/Kotlin", "语言", - "极客时间学习/Java 实战训练营/分布式服务/分布式服务.md", - "极客时间学习/Java 实战训练营/分布式服务/分布式服务容错.md", "文档编写/PRD", - "文档编写/PRD.md", "文档编写" ] } \ No newline at end of file diff --git a/web/ESBuild 学习.md b/web/ESBuild 学习.md new file mode 100644 index 0000000..0146983 --- /dev/null +++ b/web/ESBuild 学习.md @@ -0,0 +1,16 @@ +- 使用 `esbuild` 构建一个项目 + - 使用命令构建 + - 使用build脚本构建 + - 使用 `build` 方法构建,不能使用 watch mode 和 serve mode + - 使用 `context` 方法进行构建,用来配合 `watch` , `serve` 或 `rebuild` 进行构建 + - `watch` 在项目内容变更后,会自动进行编译 + - `serve` 项目可以通过生成的 一个web服务进行访问,每次刷新访问的时候,会判断是否修改了内容,如果内容发生变化,则会重新编译一次项目 + - `rebuild` 可以在创建出 `context` 之后,手动操作构建 + - 停止 `context`上面的三种方法实现构建项目,构建过程不回主动停止,如果需要停止这个项目,可以中断命令的执行,或者调用 `context.dispose()` 会立即停止当前的 context +- `esbuild` 使用插件 + - 官网有一个插件的实现案例,用来获取系统的Path信息,并进行显示 [参考地址]([esbuild - Plugins (docschina.org)](https://esbuild.docschina.org/plugins/)) + - `onResolve` 钩子函数 + 用在路径解析过程中 + `onResolve` 返回的 的内容中的 `namescape`, 后面 `onLoad` 会 根据这个`namespace` 进行过滤,并作出相应的数据 + - `onLoad` 钩子函数 + 用在模块内容加载过程中时 \ No newline at end of file diff --git a/web/Rollup 学习.md b/web/Rollup 学习.md new file mode 100644 index 0000000..1a82989 --- /dev/null +++ b/web/Rollup 学习.md @@ -0,0 +1,42 @@ +- Rollup 打包 + - Tree Shaking:分析出没有使用的模块并自动擦除 + - 因为ES模块依赖关系是确定的,所以可以在编译阶段分析出依赖关系,对AST语法树中没有使用的节点进行删除 + - 常用配置 + - 多产物配置 + - 在 `output` 配置中,使用一个数组,把多种需求依次写上 + - 多入口配置 + - 和 多产物配置类似,把不同的入口文件,都一次用对象或者数组的方式写在input 的位置即可 + - 自定义 `output` 配置 + - 常用output配置 + ``` javascript + output: { + // 产物输出目录 + dir: path.resolve(__dirname, 'dist'), + // 以下三个配置项都可以使用这些占位符: + // 1. [name]: 去除文件后缀后的文件名 + // 2. [hash]: 根据文件名和文件内容生成的 hash 值 + // 3. [format]: 产物模块格式,如 es、cjs + // 4. [extname]: 产物后缀名(带`.`) + // 入口模块的输出文件名 + entryFileNames: `[name].js`, + // 非入口模块(如动态 import)的输出文件名 + chunkFileNames: 'chunk-[hash].js', + // 静态资源文件输出文件名 + assetFileNames: 'assets/[name]-[hash][extname]', + // 产物输出格式,包括`amd`、`cjs`、`es`、`iife`、`umd`、`system` + format: 'cjs', + // 是否生成 sourcemap 文件 + sourcemap: true, + // 如果是打包出 iife/umd 格式,需要对外暴露出一个全局变量,通过 name 配置变量名 + name: 'MyBundle', + // 全局变量声明 + globals: { + // 项目中可以直接用`$`代替`jquery` + jquery: '$' + } + } + ``` + - 依赖external + - 暂时不理解 + - 接入插件的能力 + - \ No newline at end of file diff --git a/博文计划/待写博客.md b/博文计划/待写博客.md index f6dd747..949faa4 100644 --- a/博文计划/待写博客.md +++ b/博文计划/待写博客.md @@ -1 +1,3 @@ -- Socket通信系列 \ No newline at end of file +- Socket通信系列 +- OpenGL 学习笔记 +- \ No newline at end of file diff --git a/工具相关文档/git/Git 遇到的问题.md b/工具相关文档/git/Git 遇到的问题.md new file mode 100644 index 0000000..939d3ab --- /dev/null +++ b/工具相关文档/git/Git 遇到的问题.md @@ -0,0 +1,3 @@ +## `Detached` +出现问题的原因,在同步(fetch) 之后,使用 `merge` 同步失败,之后使用不知道怎么就出现了这个错误 +解决方法:[Git HEAD detached from XXX (git HEAD 游离) 解决办法](https://blog.csdn.net/u011240877/article/details/76273335)fsafdsa \ No newline at end of file diff --git a/日志检索.md b/日志检索.md index 5db2790..a461444 100644 --- a/日志检索.md +++ b/日志检索.md @@ -49,4 +49,4 @@ ## 2024-04-24 -- [[Android Hilt]] \ No newline at end of file +- [[Android Hilt]]e e \ No newline at end of file diff --git a/语言/Rust/2024-06-06.md b/语言/Rust/2024-06-06.md new file mode 100644 index 0000000..2fba9d7 --- /dev/null +++ b/语言/Rust/2024-06-06.md @@ -0,0 +1,7 @@ +## Rust 项目类型 +- bin 可运行项目 (默认) +- lib 依赖库项目 + +Rust 项目运行 +- cargo run +- cargo build(编译) + 执行编译的二进制可执行文件 \ No newline at end of file