为啥我的 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 操作。
解决办法是:
excludenode.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 与 Laravel 或其他后端框架一起使用