有没有办法在没有Sencha CMD的情况下缩小ExtJS应用程序?

时间:2015-04-10 15:18:14

标签: maven extjs extjs4 minify extjs4.2

我有一个使用ExtJS 4.2.1开发的现有ExtJS应用程序。 我通过Maven插件minify-maven-plugin使用Closure minifier。 生成的缩小JS文件(没有合并)工作正常。 但是,生成的合并缩小文件会抛出未定义的错误,因为该定义稍后会出现在合并文件中。 我的问题是,有没有办法可以弄清楚我必须提供插件的顺序? (我不想使用Sencha Cmd)

app文件夹遵循结构

app / common,app / controller,app / model,app / proxy,app / store,app / utils,app / view

目前,这是我在Maven POM文件中定义构建过程的方式

<plugins>
        <plugin>
            <groupId>com.samaxes.maven</groupId>
            <artifactId>minify-maven-plugin</artifactId>
            <version>1.7.4</version>
            <executions>
                <execution>
                    <id>default-minify</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>minify</goal>
                    </goals>
                    <inherited>false</inherited>
                    <configuration>
                        <charset>UTF-8</charset>
                        <!--  <skipMerge>true</skipMerge> -->
                        <webappSourceDir>${basedir}/src/main</webappSourceDir>
                        <jsSourceDir>js/app</jsSourceDir>
                        <jsTargetDir>js/app</jsTargetDir>
                        <jsEngine>CLOSURE</jsEngine>
                        <closureLanguage>ECMASCRIPT5</closureLanguage>
                        <closureAngularPass>true</closureAngularPass>
                        <nosuffix>true</nosuffix>
                        <webappTargetDir>${project.build.directory}</webappTargetDir>
                        <jsSourceIncludes>
                            <jsSourceInclude>**/*.js</jsSourceInclude>
                        </jsSourceIncludes>
                    </configuration>
                </execution>
            </executions>
        </plugin>

2 个答案:

答案 0 :(得分:2)

为什么不使用Sencha Cmd?它完全符合您的要求!

如果您知道可以在没有Sencha应用程序结构的情况下使用Sencha Cmd,那么它可能会有所帮助。如果您只想合并文件,请使用concatenate cmd。

如果你真的不想使用Sencha Cmd,那么你必须照顾所有的延伸,要求,混合等等......我不会推荐这个!

例如,使用带有手动路径的Sencha Cmd并排除extjs类

sencha compile --classpath=myApp/src,extjs/src -debug=false exclude -all and include -namespace MyApp.* and concat bundle.js

extjs / src路径是你的extjs类的路径

答案 1 :(得分:0)

由于您的问题是关于缩小文件的顺序,请提供以下信息:

我们有类似的要求,我无法使用Sencha cmd来缩小文件,因此我自己创建了jsb文件[我知道不建议这样做:(]。

我做的是,在jsb文件下创建 [请注意:文件序列非常重要]

{
"projectName": "ProductName",
"builds": [
/** This file is for production purpose **/
    {
        "name": "ProductName - Production",
        "target": "all-app.js",
        "compress": true,
        "files": [
        /** utils **/

            {
                "path": "app/util/",
                "name": "util.js"
            }
        /** models **/
            {
                "path": "app/model/",
                "name": "MyModel.js"
            },
        /** stores **/
            {
                "path": "app/store/",
                "name": "MyStore.js"
            },

        /** custom components  **/

            {
                "path": "resources/ux/form/",
                "name": "MySearchField.js"
            },
        /** views **/
            {
                "path": "app/view/admin/",
                "name": "MyView.js"
            },
        /** controllers **/
         {
                "path": "app/controller/",
                "name": "Window.js"
         },
        /** app.js **/

         {
                "path": "",
                "name": "app.js"
         }
        ]
    },
    /** This file is for debug purpose **/
    {
        "name": "ProductName - debug",
        "target": "all-app-debug.js",
        "compress": false,
        "files": [
        /** utils **/

            {
                "path": "app/util/",
                "name": "util.js"
            }
        /** models **/
            {
                "path": "app/model/",
                "name": "MyModel.js"
            },
        /** stores **/
            {
                "path": "app/store/",
                "name": "MyStore.js"
            },

        /** custom components  **/

            {
                "path": "resources/ux/form/",
                "name": "MySearchField.js"
            },
        /** views **/
            {
                "path": "app/view/admin/",
                "name": "MyView.js"
            },
        /** controllers **/
         {
                "path": "app/controller/",
                "name": "Window.js"
         },
        /** app.js **/

         {
                "path": "",
                "name": "app.js"
         }
        ]
    }
],
"resources" : []

}

如果您使用上面的顺序创建一个缩小的文件,它也适用于您的情况。

希望这有帮助。 谢谢!