fex-team / fis3

FIS3
http://fis.baidu.com
BSD 2-Clause "Simplified" License
2.79k stars 693 forks source link

合并资源同时进行压缩 #402

Open JackyCai9527 opened 8 years ago

JackyCai9527 commented 8 years ago

我想在合并js或css资源时将文件内容压缩, 比如有a.js,b.js合并到c.js,其中a和b都是未压缩版并且希望操作后还是保持不压缩,如何得到c是a和b的合并且压缩版本 请问该如何写配置文件

oxUnd commented 8 years ago
a.js
b.js
c.js

其中 c.js 内容

__inline('a.js');
__inline('b.js');

然后配置

fis.match('{a,b}.js', {
   optimizer: null
});

fis.match('c.js', {
  optimizer: fis.plugin('uglify-js')
});

DONE

JackyCai9527 commented 8 years ago

@xiangshouding 用了上面提供的方法写配置文件

fis.match('/Template/Gyyw001CblrAllInOne.js', {
  //optimizer: fis.plugin('uglify-js'),
  release: '../src/main/java/org/e3/web/pages/jbyw/gyyw001/js/Gyyw001CblrAllInOne.min.js'
});

Gyyw001CblrAllInOne.js'中内容

__inline('../../src/main/java/org/e3/web/pages/jbyw/gyyw110/js/RkkSelectView.js');
__inline('../../src/main/java/org/e3/web/pages/jbyw/gyyw001/js/Dw_ndjm_cjsqxx.js');
__inline('../../src/main/java/org/e3/web/pages/jbyw/gyyw001/js/Gyyw001Cblr.js');
__inline('../../src/main/java/org/e3/web/pages/jbyw/gyyw001/js/Gyyw001InputSelection.js');
__inline('../../src/main/java/org/e3/web/pages/jbyw/gyyw001/js/Gyyw001Verify.js');
__inline('../../src/main/java/org/e3/web/pages/jbyw/gyyw001/js/Gyyw001Refresh.js');
__inline('../../src/main/java/org/e3/web/pages/jbyw/gyyw001/js/gyyw001script.js');
__inline('../../src/main/java/org/e3/web/pages/jbyw/gyyw041/js/HandworkCharge.js');
__inline('../../src/main/java/org/e3/web/pages/jbyw/gyyw111/js/AsyncCjhc.js');
__inline('../../src/main/java/org/e3/web/pages/script/StaticFields.js');
__inline('../../src/main/java/org/e3/web/pages/script/common.js');
__inline('../../src/main/java/org/e3/web/pages/script/gyyw_common.js');
__inline('../../src/main/java/org/e3/web/pages/script/readPhoto.js');
__inline('../../src/main/java/org/e3/web/components/jbyw/nodeshandle/js/NodesHandlescript.js');

然后控制台报错 image

可是实际上所有内容都已经合并到了Gyyw001CblrAllInOne.min.js中,请问这该如何着手排除错误

2betop commented 8 years ago

你的哪个配置把这个文件 NodesHandlescript.js 的 release 属性设成了 false 了,把那个干掉,就没有这个报错了。

JackyCai9527 commented 8 years ago

把配置文件改成

fis.match('/Template/Gyyw001CblrAllInOne.js', {
  //optimizer: fis.plugin('uglify-js'),
  //release: '../src/main/java/org/e3/web/pages/jbyw/gyyw001/js/Gyyw001CblrAllInOne.min.js'
});

是能够把报错解决,可是如此一来合并的内容会将Gyyw001CblrAllInOne.js内容改变,即是原来的__inline('...')全都会被覆盖掉,那我下次再想执行合并的话又得重新写一遍内容嵌入的逻辑了,这并不能优雅的解决问题吖