为啥我的 ember-cli 构建时间在 Windows 上如此缓慢?

Posted

技术标签:

【中文标题】为啥我的 ember-cli 构建时间在 Windows 上如此缓慢?【英文标题】:Why is my ember-cli build time so slow on windows?为什么我的 ember-cli 构建时间在 Windows 上如此缓慢? 【发布时间】:2014-08-28 00:52:03 【问题描述】:

Ember-cli 在 Windows 上使用 ember server 构建非常缓慢。

Build successful - 13126ms.

Slowest Trees                  | Total
-------------------------------+----------------
TreeMerger (vendor)            | 3154ms
TreeMerger (stylesAndVendor)   | 2051ms
TreeMerger (appAndDependencies) | 1914ms
StaticCompiler                 | 1791ms

这与在 linux 机器上在不到 1 秒的时间内构建相同的项目形成对比。

【问题讨论】:

【参考方案1】:

罪魁祸首有两个:

    实时文件系统扫描或保护 来自 Windows Defender(在 win7 中也称为 Microsoft Security Essentials)的实时保护 Windows 搜索索引 防病毒扫描 bower_components 文件夹中未使用的文件

实时扫描

在构建过程中,ember 项目的 ./tmp 文件夹中会生成大量文件,索引器和实时保护都会对每个文件进行额外读取,这会增加大量额外的文件 I/O 操作。

解决办法是:

exclude node.exe and/or the ./tmp folder from realtime-protection, 和 exclude the folder from indexing。 禁用实时防病毒扫描

这应该可以让您的构建时间缩短到几秒钟。 Windows 的其他速度改进是 being investigated continuing to be investigated 与 Broccoli 对构建过程的处理有关。

管理未使用的 bower 文件

有lots of files in the bower_components is the biggest culprit。

我编写了一个脚本clean-ember-cli.js,它删除了除 ember-cli 依赖项之外的所有内容,以及在Brocfile.js 中导入的所有内容。我正在恢复到大约 5 秒的构建时间。

更新

Reports are 以管理员身份运行控制台也有帮助。

【讨论】:

@jaaksarv 现在很正常。您是否还使用上面链接的“clean-ember-cli.js”脚本从 bower_componants 文件夹中清除了不必要的文件? @nissemand 只需将脚本保存到您的 ember-cli 项目的根文件夹并使用节点运行。它应该读取您的 Brocfile 并排除 app.import() 中包含的任何库。如果您尝试构建并且 ember-cli 抱怨缺少依赖项,只需添加到 EMBER_FILES 列表并在重新运行“干净”脚本之前执行 bower install @Weston 我发现以管理员身份运行终端有助于进一步将构建时间从 38 秒缩短到 28 秒。显然这让 ember-clie 使用符号链接而不是复制文件 (from this answer)。也许值得添加到您的答案中? 嗯,我想我的新电脑会是 Mac! 谢谢,以管理员身份运行速度提高了大约 40-50 倍,从 90 秒到 2 秒 :)【参考方案2】:

Official recommendation 来自 ember-cli 以提高其在 Windows 上的性能

使用以下命令安装带有节点的 ember-cli-windows

npm install -g ember-cli-windows

在您的项目根文件夹上运行以下命令

ember-cli-windows

【讨论】:

谢谢!我没有保持最新,所以我不知道现在有用于优化的工具。使您的答案成为公认的答案。 您需要以管理员身份运行命令ember-cli-windows。否则它会失败,错误为Scripts cannot be executed on this system. To fix, please run the command below using PowerShell as Administrator and try again: 此脚本仅重新配置 Windows Defender 和索引。如果您已经关闭这些或使用其他 AV 或索引工具(如我的情况),这将无济于事。【参考方案3】:

请注意一件重要的事情...我在任何论坛中都没有发现...如果您正在使用笔记本电脑并且没有连接 AC,Windows 可能会以低性能模式运行以保持电池电量。这会导致 ember 构建项目慢 4 倍

【讨论】:

这适用于任何处理器密集型任务。【参考方案4】:

使用 ember-cli 1.13.13 和以管理员身份运行的命令提示符为我修复了它

【讨论】:

【参考方案5】:

除了上面提供的答案之外运行

ember s

在管理员模式下的 powershell 中。这将启用默认情况下在 Windows 中未启用的符号链接。拥有符号链接会创建一个更扁平的 node_modules 文件夹,从而加快运行时间。

(Source)

【讨论】:

【参考方案6】:

从内部版本 20262 开始,Windows 10 具有 WSL 2。 这是您机器上的 Linux,它为我们提供了与 在 Linux 上。

从 Microsoft 商店获取最后一个 Ubuntu。

由于速度慢,请勿使用/mnt/ 文件夹进行回购, 使用~ 文件夹。

在 Ubuntu 上连接终端并克隆您的存储库。

    cd ~
    git clone your-repo

安装node version manager和node

安装 ember-cli 并启动服务器。

    npm install -g ember-cli
    cd ~/your-repo
    npm i
    ember serve

在 VSCode 中安装插件 "Remote - WSL"、open 你的仓库并开始开发。

【讨论】:

【参考方案7】:

在 Windows 7 中,通过为项目的 /tmp 目录关闭关闭加密文件系统 (EFS),我得到了 50% 的改进。 (右键属性->高级->加密内容...)

对于在管理员模式下运行的 Ember CLI 的更高版本,如 here 所述以及 D-Go 在他的回答中建议的方法似乎是可行的方法,假设您的公司允许这样做。

如果您像我一样使用 GIT Bash 运行 Ember,您可能对如何将其设置为在管理员模式下自动运行感兴趣 here

【讨论】:

以上是关于为啥我的 ember-cli 构建时间在 Windows 上如此缓慢?的主要内容,如果未能解决你的问题,请参考以下文章

ember-cli 元配置/环境文件

将 Ember-CLI 与 Laravel 或其他后端框架一起使用

如何为特定浏览器导入脚本 Ember-CLi Broccoli

如何在 ember-cli 中导入 amd 模块?

如何在 ember-cli 插件组件中找到 npm 模块

如何调试在 phantomjs 中运行的 ember-cli 测试