指示Sencha SDK工具捆绑app.json中指定的其他js文件

时间:2013-01-24 18:00:55

标签: javascript extjs sencha-touch-2

Sencha touch 2应用程序的app.json文件包含。

"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它将所有的sencha类编译成一个巨大的app.js文件。但是我的所有其他类都被压缩为构建目录。它们没有连接在一起。如何将它们包含在app.js中?

F.A.Q。

  1. 您的json文件写得正确,对吧?

    一个。是的,编写app.json时没有任何语法错误。该项目在调用sencha app build production

  2. 时成功构建

2 个答案:

答案 0 :(得分:16)

在查看源代码并与 Cmd 后面的开发人员交谈后,似乎目前无法实现。

但是,因为构建文件是用JavaScript编写的,理论上修改它并将此功能添加到Cmd中并不需要太多。

您可以在以下位置找到Sencha Touch构建文件:

CMD-ROOT/plugins/touch/current/app-build.js

其中CMD-ROOTsencha命令的位置 - 您可以使用which sencha找到该位置。

在我的系统(OSX)上,路径为:

/Users/Robert/bin/Sencha/Cmd/3.0.0.250/plugins/touch/current/app-build.js

希望这对你有所帮助。

<强>更新

看来,在与另一位Cmd开发人员交谈之后,这实际上是可行的。要实现这一目标,您需要采取以下两个步骤:

1)将skipFrameworkFile属性添加到要捆绑的每个JS资源中。这告诉编译器在构建应用程序时不要复制资源。

{
    "path": "resources/js/jquery.js",
    "skipFrameworkFile": true
},

    "path": "resources/js/jquery2.js",
    "skipFrameworkFile": true
}

2)使用@require标记要求 app.js 文件中的每个文件。这告诉编译器将每个文件都包含在app.js文件中。

//@require resources/js/jquery.js
//@require resources/js/jquery2.js

答案 1 :(得分:4)

对于SenchaCmd 3.2,rdougan的解决方案对我不起作用。但是,而不是使用:

'skipFrameworkFile: true

我用过

'x-bootstrap': true

(通过查看SenchaCmd源代码)并且它有效!

其他步骤与rdougan的

相同

希望这会有所帮助。干杯