Preact工程化 之 wmr (工具篇)

1,262 阅读2分钟

wmr 完成的工具化所需 Nodejs 的工具。 当前版本:3.8.0, Node.js 的版本 >=12.17.x

构建工具

  • npm
    • npm-merge-driver-install 锁文件合并工具
  • yarn 包管理工具
  • rollup 打包工具
    • 插件 rollup-plugin-preserve-shebang
    • 插件 rollup-plugin-visualizer
    • 插件 @rollup/plugin-alias
    • 插件 @rollup/plugin-commonjs
    • 插件 @rollup/plugin-dynamic-import-vars
    • 插件 @rollup/plugin-json
    • 插件 @rollup/plugin-node-resolve
    • 插件 @rollup/plugin-replace
    • 插件 @rollup/plugin-virtual

命令行工具

HTTP 服务相关

  • polk:http 框架
  • sirv: 静态资源
  • ws:websocket 服务
    • bufferutil 工具
    • utf-8-validate buffer utf-8 验证器
  • https
    • devcert 证书相关

版本管理工具

样式工具

  • sass: 预处理器
  • less:预处理器
  • stylis:轻量级预处理器
  • postcss: css 前处理器
  • postcss-es6: github:postcss/postcss#8.3.6
  • cssnano:现代化的 CSS 工具

终端工具

  • kolorist: 终端颜色输出控制

编译器(ast、解释器)

  • babel
    • @babel/core
    • @babel/plugin-transform-modules-commonjs
    • babel-plugin-transform-jsx-to-htm
  • terser
  • sucrase
  • posthtml
  • acorn
    • acorn-class-fields
    • acorn-import-assertions
    • acorn-jsx
    • acorn-jsx-walk
    • acorn-logical-assignment
    • acorn-private-methods
    • acorn-static-class-features
    • acorn-walk
  • astring (ast)

测试

  • jest
  • jest-puppeteer
  • babel-jest
  • puppeteer 一个 headless chrome 浏览器,提供了高级 api 方便用于测试

typescript

  • tsconfig-paths
  • 类型
    • @types/jest

数据统计

临时文件

  • tmp-promise 使用 promise 在设备中创建临时文件或者文件夹

sourcemap

  • sourcemap-codec

error 处理

  • simple-code-frame 显示代码帧的库,一般用于指出错误的位置
  • errorstacks 错误堆栈的简单分析器

压缩

  • tar-stream:流式tar 解析器和生成器

模块与路径

  • es-module-lexer: es 模块司法分析器
  • resolve.exports: 解析导出,不依赖文件系统的 exports
  • magic-string: 魔法字符串,一般用于 esmodule import/export 导入和导出分析

网络

  • node-fetch:nodejs 发送 fetch 请求

环境变量

  • cross-env 跨平台的环境变量设置工具

文件相关

  • chokidar 文件监听
  • mime 文件类型
  • ncp 同步的文件/文件夹复制工具

存储与缓存

  • async-disk-cache 异步磁盘存储

小结

  • 前端工程化属于 nodejs 的特殊一部分,但是对 nodejs 提出与i顶的要求
  • wmr 项目完成一个完整的 unbundle 相对对 vite 的难度小
  • wmr 服务于 PReact 可以了解 PReact 团队对工程化的思考