1 | 'use strict';
|
2 |
|
3 | var path = require('path');
|
4 | var pipe = require('multipipe');
|
5 | var less = require('gulp-less');
|
6 | var gulpif = require('gulp-if');
|
7 | var coffee = require('gulp-coffee');
|
8 | var atpl = require('gulp-atpl');
|
9 | var reactify = require('gulp-reactify');
|
10 | var babel = require('gulp-babel');
|
11 | var cssParser = require('./parser/css');
|
12 | var css2jsParser = require('./parser/css2js');
|
13 | var jsParser = require('./parser/js');
|
14 | var tplParser = require('./parser/tpl');
|
15 | var jsonParser = require('./parser/json');
|
16 | var handlebarsParser = require('./parser/handlebars');
|
17 | var standalonify = require('./parser/standalonify');
|
18 | var util = require('./util');
|
19 |
|
20 | module.exports = function transport(file, opt, cb) {
|
21 | var pkg = opt.pkg;
|
22 | var useCss2jsParser = util.isCSSFile(file.path) &&
|
23 | /\.js$/.test(file.url.pathname);
|
24 | var useStandalone = function(file) {
|
25 | return util.isStandalone(file);
|
26 | };
|
27 | var es6 = file.pkg.origin.spm['6to5'] || file.pkg.origin.spm['babel'];
|
28 | var stream = pipe(
|
29 | gulpif(/\.less$/, less({ paths: [path.dirname(file.path)] })),
|
30 | gulpif(/\.css$/, cssParser({pkg: pkg})),
|
31 | gulpif(useCss2jsParser, css2jsParser()),
|
32 | gulpif(/\.coffee$/, coffee({bare: true})),
|
33 | gulpif(/\.atpl/, atpl()),
|
34 | gulpif(/\.js$/, pipe(
|
35 | reactify(),
|
36 | gulpif(es6, babel(es6)),
|
37 | jsParser({pkg: pkg, ignore: opt.ignore})
|
38 | )),
|
39 | gulpif(/\.tpl$/, tplParser()),
|
40 | gulpif(/\.json$/, jsonParser()),
|
41 | gulpif(/\.handlebars$/, handlebarsParser({pkg: pkg})),
|
42 | gulpif(useStandalone, standalonify({url:file.url.pathname,base:opt.base}))
|
43 | ).once('data', function(file) {
|
44 | cb(null, file);
|
45 | });
|
46 | stream.write(file);
|
47 | stream.end();
|
48 | };
|