我可以使用sencha cmd来缩小/压缩吗?

时间:2020-06-04 14:06:42

标签: extjs sencha-touch sencha-cmd

我们有一个ExtJS现代应用程序。我们想使用cmd将代码最小化/压缩到单个.js文件中-有效地执行非Ext应用程序对其他粉碎器(如uglifyjs或terser)的处理。

我相信我们可以使用以下编译命令来实现此目标:

sencha -sdk ext-7.1.0.46 compile -cl=myclassfolder -inp=ES6 concat outfile.js

但是,它抱怨找不到像这样的错误的Ext类:

[ERR] Failed to resolve dependency Ext.data.Model for file myapp.model.mymodel
[ERR] Unknown definition for dependency : Ext.data.Model

这似乎是扩展Ext.data.Model的基本任务,它不是我们想要的,并且感觉很像我只需要正确引用extJS类结构即可,但无法弄清楚命令行来实现它(我有点假设sdk参考会解决这个问题)。

这可能吗?

1 个答案:

答案 0 :(得分:0)

确定,以帮助那些面临相同问题并希望压缩/缩小其ExtJS,但又无需创建完整的sencha应用程序的人。

该命令非常简单,答案是在-cl(或-classpath)参数中包含依赖的js文件的路径,然后排除Ext命名空间:

sencha -sdk stack/Sencha/ext-7.2.0 compile -cl=ext-modern-all.js,packages/ux/modern/ux.js,myclassfolder -inp=ES6 exclude -namespace Ext and concat outfile.js

然后,您可以使用terser或首选的缩小工具来缩小/粉碎输出(或在上面添加compress命令以允许cmd也缩小)。这是将ExtJS代码构建到多个可管理的extjs“模块”中的一种合理方法,这些模块可以在需要时(或在安全允许的情况下)加载,而不是cmd的“大爆炸”方法。

这将产生一个正确排序的js文件,唯一的问题是它包含Ext microloader代码,默认情况下会添加该代码。我没有设法使编译器不包含微型加载器,但是您可以通过在ext-all.js文件的加载与新创建的文件之间定义自己的微型加载器来有效地禁用它,方法是使用另一个文件或内联命令脚本标签:

Ext.Microloader = {
    run: function(){}
};

我知道使用ExtJS的人不多,希望这能在某个时候对某人有所帮助,在最坏的情况下,它允许对ExtJS构建过程进行更多控制。

相关问题