指示 Sencha SDK 工具捆绑 app.json 中指定的其他 js 文件
Posted
技术标签:
【中文标题】指示 Sencha SDK 工具捆绑 app.json 中指定的其他 js 文件【英文标题】:Instruct Sencha SDK tools to bundle other js files specified in app.json 【发布时间】:2013-01-24 18:00:55 【问题描述】:我的app.json
文件包含一个 Sencha touch 2 应用程序。
"js": [
"path": "sdk/sencha-touch.js"
,
"path": "js/mootools-1.2.5-core.js", // I want these files to be bundled too
"path": "js/mootools-1.2.5.1-more.js", // <----------+
"path": "js/soundmanager2-nodebug-jsmin.js", // <----+
... // <----+ and there are more.
...
"path": "app.js",
"bundle": true, /* Indicates that all class dependencies are concatenated into this file when build */
"update": "delta"
,
现在我看到当我调用sencha app build production
时,它会将所有煎茶类编译成一个巨大的app.js
文件。但是我所有的其他类都只是压缩到构建目录。它们没有串联。如何将它们包含在 app.js
中?
常见问题解答
你的 json 文件写得对吧?
A.是的,app.json
的编写没有任何语法错误。该项目在调用 sencha app build production
【问题讨论】:
【参考方案1】:查看源代码并与Cmd背后的开发人员交谈后,目前看来是不可能的。
但是,由于构建文件是用 javascript 编写的,理论上,修改它并将此功能添加到 Cmd 中并不需要太多。
您可以在以下位置找到 Sencha Touch 构建文件:
CMD-ROOT/plugins/touch/current/app-build.js
其中CMD-ROOT
是sencha
命令的位置 - 您可以使用which sencha
找到它。
在我的系统(OSX)上,路径是:
/Users/Robert/bin/Sencha/Cmd/3.0.0.250/plugins/touch/current/app-build.js
希望对你有所帮助。
更新
看起来,在与另一个 Cmd 开发人员交谈后,这实际上是可能的。要实现它,您需要采取 2 个步骤:
1) 将skipFrameworkFile
属性添加到您要捆绑的每个JS 资源中。这告诉编译器在构建应用时不要复制资源。
"path": "resources/js/jquery.js",
"skipFrameworkFile": true
,
"path": "resources/js/jquery2.js",
"skipFrameworkFile": true
2) 要求 app.js 文件中的每个文件都使用 @require
标记。这告诉编译器将您的每个文件包含到您的 app.js 文件中。
//@require resources/js/jquery.js
//@require resources/js/jquery2.js
【讨论】:
感谢您的意见。事实上,我现在使用 sencha 作为传统模式。我通过sencha create jsb
创建了依赖树。然后在调用sencha build
之前添加所有依赖项。这很好用。但由于它已被弃用,我不能依赖它。
更新。再次与开发人员交谈,并提出了一个适合您的解决方法。如果有,请告诉我。
我试过了。但没有运气。我仍然看到它通过网络请求“mootools.js”和其他请求。此外,app.js 文件大小根本不会增加。看看我的精简版app.js 和app.json
奇怪,因为我已经测试过它并且它有效。你正在运行什么版本的 Cmd?我正在运行Sencha Cmd v3.0.0.250
我在新的 Sencha Cmd 3.0 中检查了它。有用!!我现在正在将整个项目转换为最新的 ST2【参考方案2】:
对于 SenchaCmd 3.2,rdougan 的解决方案对我不起作用。但是,而不是使用:
'skipFrameworkFile: true
我用过
'x-bootstrap': true
(通过查看 SenchaCmd 源代码)并且成功了!
其他步骤同rdougan的
希望这会有所帮助。干杯
【讨论】:
是的skipFrameworkFile
选项对我也不起作用thanx!以上是关于指示 Sencha SDK 工具捆绑 app.json 中指定的其他 js 文件的主要内容,如果未能解决你的问题,请参考以下文章
无法调用未定义 app.js:1 sencha 嵌套的方法“子字符串”