web版本打包的时候可以选择某些文件不打包吗?

web版本打包的时候可以选择某些文件不打包吗?
因为我加了一些其他网站的API,打包之前运行一切正常,打包之后就报错不能运行了。
急求解决方案。。。

你是用什么工具打包的呢?怎么打包

cocos compile -p web -m release 用这个命令压缩代码啊

这个命令只会打包你有写在project.json的文件,你哪些文件不需要,就从project.json里面移除。

其次,打包之后是有做代码高级混淆的,如果代码写的不严谨,也是可能出错的。

比如,你正常进行函数定义,但是调用函数调用的地方用的是字符串的调用方式,混淆的时候,函数名可被混淆,字符串不可被混淆,之间的调用就会被断开。

已经找到哪里出错了,谢谢,但是不知道要怎么解决
问题是这样的
有一个js文件是从其他地址加载过来的 在index里面这样加的

<script type="text/javascript" src="http://cdn.gameplayer.io/api/js/game.js"></script>

然后在 用的地方就直接用了

GameAPI.loadAPI ()

打包之后就报错了 找不到这个GameAPI。
一般情况下从其他地方加载过来的文件要怎么使用呢?

所有调用到他的API不混淆,因为是动态加载的,你无法预先拿到对方的文件进行同步混淆。

你可以在你的代码中,在第一次使用GameAPI之前,添加下面的代码:

/** @expose */
window.GameAPI

```


就可以保证GameAPI不被混淆,关于高级混淆的其他细节可以参考Google官方文档:https://developers.google.com/closure/compiler/docs/api-tutorial3

另外,我们也支持高级混淆的source map,可以

cocos compile -p web -m release --source-map

来开启,这样更方便调试

版主的方法 GameAPI没有被混淆,但是它里面的方法.loadAPI()被混淆了,如何让GameAPI里面的方法也不被混淆呢?
给的连接我这里开不了。。

这样全部压缩到一起的策略有点不好,没办法利用公共的CDN缓存了
比如我有多个web项目都用到cocos2d-js,他们发布之后,相互之间没法用公共的缓存

最好是压缩成两个文件, cocos2d-js-3.0-rc1.min.js 和 game.min.js

http://blog.zhaojie.me/2011/04/compress-javascript-with-google-closure-compiler-in-advance-mode.html
另外 closure 激进的优化方案几乎 100% 会压坏代码,所以还是不适合使用,楼上的api被混淆就属于其中的一种情况

还是没有搞定啊,到底要怎么解决才好呢?去压缩完的代码里面找到相应的代码再改回来??

那就每个需要不混淆的函数api,都需要添加这个注释,你可以全部列出来,标注上去。

比如说 我要让里面的loadAPI()方法也不被混淆
那我就要再加一句 window.GameAPI.loadAPI;
是这样写的吗? 貌似不行啊

可以了 每句前面都要加 /** @expose */

我这里就是函数名的调用方式吧,this.schedule(this.addApple,1.4);
我打包完以后,提示我 cant find property “prush”,如果是这样的话,那我要怎么样在schedule中调用函数呢?

cocos compile -p web -m release --source-map

这个source-map必须要jdk 1.7,1.6的java好歹给个提示,琢磨半天,翻源码才找到问题所在。

advanced编译打包有点难,各种问题,simple编译倒是可以,但simple混淆不够。不知道默认advanced编译,在编码时要注意哪些东西?

var s = {name : ‘value’};

这个name千万不要加引号,否则colsure compiler一准压坏。谢谢林顺提供的把build.xml里debug改成true的调试方法。

求教 怎样调试 生成的game.min.js 文件

cocos compile -p web -m release
项目目录下 用这个命令打包 会生成一个public文件夹 里面就是了