class PublishTask extends BalmTask {
  constructor(input = '', output = '', renameOptions = {}) {
    super('publish'); // Just for production

    this.input = input
      ? path.join(config.target.base, input)
      : [`${config.target.static}/**/*`, `!${config.target.base}/*.*`];
    this.output = output
      ? path.join(config.assets.root, output)
      : config.assets.static;
    this.renameOptions = renameOptions;
  }

  get fn() {
    return () => {
      return src(this.input)
        .pipe($.rename(this.renameOptions))
        .pipe(dest(this.output));
    };
  }
}

export default PublishTask;

@@ -214,16 +214,27 @@
      : %5B
+%0A          
 %60$%7Bconfi
@@ -256,16 +256,26 @@
 %7D/**/*%60,
+%0A         
  %60!$%7Bcon
@@ -295,16 +295,72 @@
 se%7D/*.*%60
+,%0A          %60$%7Bconfig.target.base%7D/favicon.ico%60%0A        
 %5D;%0A    t
@@ -555,24 +555,60 @@
 c(this.input
+, %7B%0A        allowEmpty: true%0A      %7D
 )%0A        .p

update publish for favicon.ico