为什么我的ember-cli在windows上构建时间如此之慢?

时间:2014-07-07 13:54:59

标签: windows ember-cli

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

Build successful - 13126ms.

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

这与在linux盒子上不到1秒的同一项目构建形成鲜明对比。

7 个答案:

答案 0 :(得分:32)

有两个罪魁祸首:

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

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

    修复方法是:

    这应该让你的构建时间缩短到几秒钟。对于Broccoli处理构建过程,Windows的其他速度改进是 being investigated continuing to be investigated

    管理未使用的凉亭文件

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

    我写了一个脚本clean-ember-cli.js,删除了除了ember-cli dependancies之外的所有内容,以及Brocfile.js中导入的所有内容。我回到大约5秒的构建时间。

    更新

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

答案 1 :(得分:15)

来自ember-cli的

Official recommendation以提高其在Windows上的性能

使用以下命令

在节点上安装ember-cli-windows

npm install -g ember-cli-windows

在项目根文件夹

上运行以下命令

ember-cli-windows

答案 2 :(得分:2)

介意一件重要的事情......我在任何论坛都没有发现......如果你正在使用笔记本电脑并且你没有连接AC,那么Windows可能会以低性能模式运行以保持电量。这导致ember build proyects慢4倍

答案 3 :(得分:1)

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

答案 4 :(得分:1)

除了上面提供的答案

ember s
管理模式下的powershell中的

。这将启用在Windows中默认未启用的符号链接。使用符号链接可创建更平坦的node_modules文件夹,从而缩短运行时间。

Source

答案 5 :(得分:1)

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

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

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

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

    cd ~
    git clone your-repo

安装 node version managernode

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

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

在 VSCode 安装插件 "Remote - WSL" 中,open 您的存储库并开始开发。

答案 6 :(得分:-1)

在Windows 7中,通过为项目的/tmp目录转换 off 加密文件系统(EFS),我获得了50%的提升。 (右键单击属性 - >高级 - >加密内容...)

对于以管理员模式运行的Ember CLI的更高版本here并且D-Go在他的回答中提出建议似乎是要走的路,假设你的公司允许这样做。

如果像我这样你使用GIT Bash来运行Ember,你可能会对如何设置它以自动在管理模式下运行感兴趣here