[求助] 寻找适合 React 前端开发的 Emacs 配置方案

大家好!

我是一名嵌入式开发者,平时偶尔谢谢前后端,最近从 Neovim(使用 LazyVim 配置)转向了 Emacs。在使用 LazyVim 期间,其对前端开发(尤其是 React)的支持给我留下了深刻印象——代码补全、组件预览、错误提示、格式化等功能一应俱全,工作流非常流畅。

然而,在 Emacs 生态中,我尚未找到一个同样完善且开箱即用的 React 开发配置方案。尝试过一些知名配置框架(如 Doom Emacs、Spacemacs 等)的前端模块,但感觉在集成度和使用体验上还有提升空间。

因此在此诚恳请教社区:

  1. 是否有朋友愿意分享您精心打造的 React/前端开发 Emacs 配置?
  2. 或者您能推荐一些关键的包和设置,帮助构建一个高效的前端开发环境?
  3. 特别关注的功能点:TypeScript/JSX 支持、自动导入、组件预览、ESLint/Prettier 集成、终端集成等

我非常愿意学习 Emacs 的哲学和配置方式,只是希望能有一个相对成熟的起点,避免在配置上花费过多时间而影响实际开发工作。

感谢您的建议和分享!期待与各位交流,也愿意在完善自己的配置后回馈社区。

Emacs 版本:30.2 系统环境:macOS Tahoe

Emacs有一个自带的mhtml-mode,支持对同一个文件里的html,js,css提供基于上下文的高亮和移动支持,但是在30.2里面是坏掉的,emacs 31修复了此问题并提供了mhtml-ts-mode。ts/tsx有专门的treesit模式支持。

或者上lsp-mode全家桶,可以直接用vscode的language server,vim里面能做的一应俱全。

可以参考我这个 dotfiles/emacs_init.el at main · oodzchen/dotfiles · GitHub

我的开发栈主要是 Go 后端和 TypeScript + React 前端 。用到的关键 package 组合是,lsp-mode 用于 lsp 服务, flycheck 作为语法检测,corfu + cape 作为补全, typescript-mode + web-mode 用来解析和识别 tsx 文件。

总体基本正常运行没什么大问题,如果有问题可以借助 Claude 或 Gemini 等 AI 工具来调试和修正。

很奇怪,我在网上找了不少配置,每次我复制到 ~/.emacs.d 中总是没什么效果,特别是补全和lsp经常没有效果,我自己去配置关于 typescript 的部分又总是出现问题 :sweat_smile:,我复制了你的配置,依旧不行,唉

你没配置 LSP 吧?

有的,我没学过 lisp 这个语言,我是用 ai 去配置的,配置的确实挺不错的,就是一到 react 部分的配置就出问题,describe-mode 好不容易配置成 TSX,但是编辑体验差 lazyvim 很多,特别是闭合标签,ai 推荐了 emmt 这个插件,我感觉还是很不好用

单纯安装emacs包还不够,注意用安装node模块,比如tsserver和eslint, prettier这些,还有lsp-server也要通过M+x选择lsp-server-install来安装

一般来说在*Message**lsp-log*里面可以看到具体是哪里出问题,还有可以开启debug-on-error来看看有没有哪里报错,对症下药。我这个配置有试过完全重装都是可以正常运行的。

安装后在typescript code buffer中用eglot命令启动,启动以后有符号解释,xref-find-definition寻找定义等功能

下面代码设置自动启用

;; enable eglot for typescript code
(require 'eglot)
(add-hook 'typescript-mode-hook 'eglot-ensure)
(require 'flycheck)
(flycheck-add-mode 'typescript-tslint 'typescript-mode)
(add-hook 'typescript-mode-hook 'flycheck-mode)

另外,让AI把SICP涉及到的scheme代码转换成了typescript, 分享给对这两者都有兴趣的同学: GitHub - tninja/sicp-typescript: Structure and Interpretation of Computer Programs study notes with exercise solutions, in typescript

3 个赞

爱了爱了,我研究研究,看看能不能搞出来一套配置

大家好!

非常感谢各位的建议和分享,收获颇丰 :folded_hands: 经过参考大家的思路和尝试,我已经整理并优化了一套适合自己使用的 Emacs React/前端开发环境配置,目前已经可以比较顺畅地支持 TypeScript/JSX、自动导入、组件预览、ESLint/Prettier 集成以及终端使用等功能

如果大家感兴趣,我将配置公开在 GitHub 上,方便大家参考或在此基础上进行定制:

这套配置仍在不断完善中,也欢迎大家提建议或贡献想法。再次感谢社区的各位前辈和朋友,真心感受到 Emacs 社区的热情和支持![ai 生成😁]

3 个赞

我也想用 emacs 来写更多的代码 。但是现在没有 ai 补全的话,很难用下去。好奇各位是怎么解决的?虽然有 cli 的 ai 工具,但是一些小的改动还是 ai 补全来得真接些。

jsx之类的html模板语言还是web-mode功能齐全强大,推荐使用。当然treesit也少不了,只要在web-mode的buffer里(treesit-parser-create 'tsx)就可以用语法树了。也就是爱用什么mode都行,不必需treesit的那些*-ts-mode

1 个赞

看起来不错。我试试看 :+1: