我有一个使用ExtJS 4.2.1开发的现有ExtJS应用程序。 我通过Maven插件minify-maven-plugin使用Closure minifier。 生成的缩小JS文件(没有合并)工作正常。 但是,生成的合并缩小文件会抛出未定义的错误,因为该定义稍后会出现在合并文件中。 我的问题是,有没有办法可以弄清楚我必须提供插件的顺序? (我不想使用Sencha Cmd)
app文件夹遵循结构
目前,这是我在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>
答案 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" : []
}
如果您使用上面的顺序创建一个缩小的文件,它也适用于您的情况。
希望这有帮助。 谢谢!