首页 > 解决方案 > 为什么 emacs 终端模式下 npm 开发服务器启动慢?

问题描述

几年来,我第一次重新尝试一些前端项目。我尝试的许多基于 npm 的 javascript 项目最终都需要很长时间才能在开发模式下启动,即使对于 Hello World-ish 示例也是如此。特别是我正在尝试Nuxt.js

开发服务器启动大约需要 100 秒,并且似乎没有任何内容被缓存,因此重新启动(不是热重载)需要相同的时间。我对该项目和已知 npm 问题的研究尚未找到任何明确的根本原因或改进方法。

我在具有核心 i5、8 GB 内存和 SSD 的 2018 13" MacBook Pro 上以终端模式使用 emacs 26.1。

当我运行npm run dev启动nuxt开发服务器时,我得到了与一些不寻常的字符相关的重复error in process filter: Args out of range: "\342", -1错误,他们正在使用它们来尝试使输出变得漂亮。如果我在 vanilla Mac OS 终端中尝试相同的操作,服务器启动速度会快 10 倍。为什么会出现这些错误,为什么在 emacs 终端中它会慢得多?

标签: npmemacsnuxt.js

解决方案


事实证明,重复的error in process filter问题可能是由最近修复的术语模式中的错误引起的,但在我的 emacs 版本中可能仍然是一个问题。

作为一种解决方法,通过过滤掉有关正在构建的模块的重复行,以下可以让nuxt开发服务器在我的 mac 上的 emacs 终端中以 ~10 秒而不是 ~100 秒的速度运行:

$ npm run dev | grep -v modules

请注意,我尝试使用 npm 的选项来调整日志级别,但似乎没有一个过滤此输出。如果有人知道一种更“官方”的过滤方式,或者甚至更好,如果你知道如何使它不会在每次开发服务器启动时都尝试重建模块,我很想知道。

编辑:调整 package.json 文件中的脚本命令以包含 grep 过滤器可能是有意义的dev,这样您仍然可以只键入npm run dev并获取解决方法。


推荐阅读