我将我的grunt项目迁移到ember-cli,我发现从文件修改到liveload完成的时间很长,大约10分钟。
在我安装了ember-cli-windows,ember-cli-windows-addon之后,没有获得明显的提示。 以下是安装ember-cli-windows,ember-cli-windows-addon之后的一个示例输出:
file changed routes\services.js
Build successful - 382781ms.
Slowest Trees | Total
----------------------------------------------+---------------------
Babel | 82175ms
Concat: Vendor | 75980ms
Funnel: App JS Files | 57393ms
JSHint app- QUnit | 49491ms
ES6: App Tree | 41827ms
Slowest Trees (cumulative) | Total (avg)
----------------------------------------------+---------------------
Babel (2) | 82394ms (41197 ms)
Concat: Vendor (1) | 75980ms
Funnel: App JS Files (1) | 57393ms
JSHint app- QUnit (1) | 49491ms
ES6: App Tree (1) | 41827ms
相比之下,在文件修改后的grunt项目中,构建过程可以在2~3秒内完成。
我用的是Windows 7。
你问
为什么ember-cli这么慢
它本身并非缓慢,它是Broccoli。 原因包括:
Broccoli在Windows下复制文件而不是符号链接。 要避免这种情况,请在具有管理员权限的命令提示符下运行构建。
西兰花是磁盘密集型的。 要解决这个问题,请购买SSD。
西兰花是处理器密集型的。 要解决此问题,请获得更快的机器(最好是非Windows)。
Broccoli在tmp
创建大量临时文件,这会降低性能。 要解决这个问题,请不时清理tmp
。
众所周知,西兰花本身就很慢。 您可以在西兰花网站上找到相关问题。 要解决这个问题,请等待西兰花人解决性能问题,这是他们的路线图。 已经进行了大量改进,因此升级到最新版本的所有内容。
西兰花一遍又一遍地重建所有东西,包括没有改变的东西。 要解决此问题,请手动调整构建过程以排除某些内容并根据需要手动执行。 举例来说,假设您是通过凉亭带来一个200KB的外部JS包, app.import
“在您的荷兰国际集团它Brocfile.js
。 作为临时解决方案,并查看它是否有所作为,从Broccoli世界中删除该文件并将其直接加载到index.html
。 这同样适用于大型CSS文件。
西兰花将在默认安装中运行babel。 巴别塔并不那么慢,但确实需要时间。 要解决此问题,如果您不使用ES6语法,请删除babel依赖项。
您的病毒扫描程序可能正在尝试扫描Broccoli创建的数千个文件。 ember-cli-windows
仅针对Defender处理此问题。 如果您使用的是其他防病毒软件包,要解决此问题,请将您的开发目录添加到要跳过的位置列表中。
作为参考,我有一个小型的Ember项目,我在带有SSD的快速机器上安装了Windows主机的Ubuntu Virtual Box VM,并且构建需要2-3秒。
您可能还想考虑在ember-cli列表中询问此问题。 您还可以选择一个不会在不成熟且低效的构建系统中烘焙的不同框架。
对于Windows用户,需要正确启用符号链接。 因为我们在微软的朋友实际上是ember和ember-cli的活跃用户。 他们提供了一个完全相同的插件。
有关详细信息,请参阅: http : //ember-cli.com/user-guide/#windows 。 对于所有用户,请参阅: https : //github.com/ember-cli/ember-cli/blob/master/PERF_GUIDE.md
[更新]
在过去的6个月中,几项大的性能改进已经落地,有些正在看到一到两个数量级的改进(显然这取决于某些因素......)
随着时间的推移,计划进行更多的性能改进,一个特别重要的是解除依赖符号链接或复制的需求。 哪个应该使我们的windows对应物(以及那些驱动器较慢的那些)非常高兴。
对于目前感觉他们看不到最佳性能的人,请允许我推荐这本指南: https : //github.com/ember-cli/ember-cli/blob/master/PERF_GUIDE.md
许多最近的改进都是以向后兼容的方式完成的,但确实需要升级依赖项,确保升级相关的依赖项,并使用该指南来跟踪任何剩余的问题并报告它们。
Windows子系统Linux现在似乎也运行良好!
解决Windows中性能问题的最佳解决方案是在虚拟机中运行Ubuntu(或任何你想要的linux),并在其中运行ember, 使用NFS与主机共享文件夹 。
我有完全相同的问题,我现在得到亚秒建设时间。 尝试了在这里和互联网上找到的所有解决方案,但没有运气。 当我迁移到Ubuntu VM时,我获得了10倍的性能。