コード例 #1
0
 var promise = new Promise(function(resolve, reject) {
   builder.styles(nodes)
     .use('styles', builder.plugins.css())
     .end(function(err, string) {
       (err ? reject(err) : resolve(string));
     });
 });
コード例 #2
0
ファイル: index.js プロジェクト: 89berner/app
  }, function (err, tree) {
    if (err) console.log(err), process.exit(1);

    mkdir('public');

    builder.scripts(tree)
      .use('scripts', builder.plugins.js())
      .use('json', builder.plugins.json())
      .use('templates', jade({
        string: false,
        runtime: true
      }))
      .use('templates', builder.plugins.string())
      .end(function (err, js) {
        if (err) throw err;
        write('public/app.js', builder.scripts.require + jade.runtime + js);
      });

    builder.styles(tree)
      .use('styles', builder.plugins.css())
      .use('styles', stylus())
      .use('styles', builder.plugins.urlRewriter(''))
      .end(function (err, string) {
        if (err) throw err;
        fs.writeFileSync('public/app.css', string);
      });

    builder.files(tree, {destination: 'public'})
      .use('images', builder.plugins.copy())
      .use('files', builder.plugins.copy())
      .end();

    if (next) return next();
  })
コード例 #3
0
ファイル: styles.js プロジェクト: MotiurRahman/testGitPor
exports.styles = function (done) {
  var options = this.options;
  var build = Build.styles(this.tree, options);
  this.stylePlugins(build, options);
  build.end(function (err, css) {
    if (err) return done(err);
    if (!css) return done(null, '');
    done(null, css);
  });
}
コード例 #4
0
ファイル: index.js プロジェクト: Docworld/app
    function buildStyles(done) {
      builder.styles(tree)
        .use('styles', builder.plugins.css())
        .use('styles', stylus())
        .use('styles', builder.plugins.urlRewriter(''))
        .end(function (err, css) {
          if (err) return log('Found error building styles: %s', err), done(err);

          return log('Styles built successfully'), done(null, css);
        });
    }
コード例 #5
0
ファイル: builder.js プロジェクト: Retsly/builder
Builder.prototype.styles = function (tree, done) {
  var path = join(this.out, this.opts.path) + '.css'
  var start = Date.now()
  var opts = this.opts
  Component
    .styles(tree, opts)
    .use('styles', stylus(opts))
    .use('styles', plugins.urlRewriter(opts.prefix || ''))
    .end(function (err, css) {
      write(path, css)
      debug('built css in %dms (%s)', Date.now() - start, bytes(css.length))
      done()
    })
}
コード例 #6
0
  resolve(options.root, resolverOptions, function (err, tree) {
    if (err) return deferScripts.reject(err);
    // only include `.js` files from components' `.scripts` field
    builder.scripts(tree, options)
      .use('templates', builder.plugins.string(options))
      .use('json', builder.plugins.json(options))
      .use('scripts', builder.plugins.js())
      .end(function (err, output) {
        if (err) return deferScripts.reject(err);
        var entryPoints = Object.keys(tree.locals);
        if (entryPoints.length > 1) {
          return deferScripts.reject(new Error('multiple entry points implemented yet'));
          // consider using https://github.com/componentjs/bundler.js
        }
        var bootComponent = tree.locals[entryPoints[0]];
        var settingsModule = '\nrequire.define("tarifa.json", '+JSON.stringify(currentSettings)+');\n';
        var autoRequire = '\nrequire("' + bootComponent.canonical + '");';
        output = builder.scripts.require + settingsModule + output + autoRequire;
        fs.writeFileSync(path.join(WWW, 'app.js'), output);
        deferScripts.resolve();
      });

    // only include `.css` files from components' `.styles` field
    builder.styles(tree)
      .use('styles', 
        builder.plugins.css(), 
        builder.plugins.urlRewriter(options.prefix || ''),
        autoprefix(options)
      )
      .end(function (err, string) {
        if (err) return deferStyles.reject(err);
        fs.writeFileSync(path.join(WWW, 'app.css'), string);
        deferStyles.resolve();
      });

    // only copy `images` to the build folder
    builder.files(tree, options)
      .use('images', builder.plugins.copy())
      .use('fonts', builder.plugins.copy())
      .use('page', copyPages(options))
      .end(deferAssets.resolve()); // callback optional
  });
コード例 #7
0
ファイル: bundle.js プロジェクト: spotlet/spin-ui
  Object.keys(bundles).forEach(function (name) {
    build.styles(bundles[name])
    .use('styles', build.plugins.css())
    .end(function (err, string) {
      if (err) throw err;
      if (string) {
        fs.writeFileSync(path.join(opts.build, name +'.css'), string);
      }
    });

    build.scripts(bundles[name])
    .use('scripts', build.plugins.js())
    .use('templates', function (file, next) {
      file.read(function (err, buf) {
        if (err) { return next(err); }
        switch (file.extension) {
          case 'jade':
            buf = jade.render(String(buf));
          break;
        }
        file.define = true;
        file.string = JSON.stringify(buf);
        next();
      });
    })
    .build(function (err, js) {
      var file = null;
      if (err) { throw err; }
      else if (!js) { return; }
      // require code
      if (name === json.locals[0] && js) {
        //js = build.scripts.require + js;
        js = build.scripts.umd('./component/boot', 'spin', js);
      }

      file = path.join(opts.build, name + '.js');
      fwrite(file, js, 'utf8');
    });
  });
コード例 #8
0
  /**
   * Build styles
   * @param   {object}  tree
   * @param   {object}  options
   */
  function buildStyles(tree, options) {
    builder.styles(tree, options)
      .use('styles', builder.plugins.css())
      .use('styles', builder.plugins.urlRewriter())
      .end(function (err, output) {
        if (err) return done(err);

        //check there were styles
        if (typeof output !== 'string') {
          done();
          return;
        }

        //create the file inside the build directory
        createFileInDirectoryAndWrite(buildStyle, output, function(err) {
          if (err) return done(err);
          done();
        });

      })
    ;
  }
コード例 #9
0
        return function* bundleBuilder() {

          // root folder for bundle
          var bundleRoot = path.join(options.build, name);

          // build scripts
          var file;
          var js = yield builder.scripts(bundles[name])
            .use('scripts', plugins.js({parse: options.parseJs === true}))
            .use('json', plugins.json())
            .use('templates', plugins.string())
            .end();

          // add require implementation to main bundle
          if (name === json.locals[0])
            js = builder.scripts.require + js;
          
          // uglify maybe
          if (js && js.length > 0 && options.uglifyjs) {
            js = UglifyJS.minify(js, options.uglifyjs).code;
          }

          // write or remove target file
          file = path.join(bundleRoot, 'script.js');
          if (!js) {
            if (fs.existsSync(file)) fs.unlinkSync(file)
          } else {
            yield cofs.writeFile(file, js, 'utf8');
          }

          // build styles
          var css = yield builder.styles(bundles[name])
            .use('styles', plugins.urlRewriter(options.prefix || ''))
            .end();

          if (css && css.length > 0) {
            // autoprefix maybe
            if (autoprefix) {
              css = autoprefix.process(css).css;
            }
            // minify maybe
            if (cleancss) {
              css = cleancss.minify(css);
            }
          }

          // write or remove target file
          file = path.join(bundleRoot, 'styles.css');
          if (!css) {
            if (fs.existsSync(file)) fs.unlinkSync(file)
          } else {
            yield cofs.writeFile(file, css, 'utf8');
          }

          // build files
          yield builder.files(bundles[name], { destination: bundleRoot })
            .use('images', options.copyFiles ? plugins.copy() : plugins.symlink())
            .use('fonts',  options.copyFiles ? plugins.copy() : plugins.symlink())
            .use('files',  options.copyFiles ? plugins.copy() : plugins.symlink())
            .end();
        }