示例#1
0
	return through.obj(function (file, enc, cb) {
		if (file.isNull()) {
			this.push(file);
			return cb();
		}

		if (file.isStream()) {
			this.emit('error', new gutil.PluginError('gulp-traceur', 'Streaming not supported'));
			return cb();
		}

		var ret;

		var fileOptions = objectAssign({}, options);
		fileOptions.filename = file.relative;
		fileOptions.moduleName = gutil.replaceExtension(file.relative, '');

		if (file.sourceMap) {
			fileOptions.sourceMaps = true;
		}

		try {
			ret = traceur.compile(file.contents.toString(), fileOptions);

			if (ret.js) {
				file.contents = new Buffer(ret.js);
			}

			if (ret.generatedSourceMap && file.sourceMap) {
				applySourceMap(file, ret.generatedSourceMap);
			}
		} catch (err) {
			this.emit('error', new gutil.PluginError('gulp-traceur', err, {
				fileName: file.path
			}));
		}

		if (ret.errors.length > 0) {
			this.emit('error', new gutil.PluginError('gulp-traceur', '\n' + ret.errors.join('\n'), {
				fileName: file.path,
				showStack: false
			}));
		}

		this.push(file);
		cb();
	});
示例#2
0
	return through.obj(function (file, enc, cb) {
		if (file.isNull()) {
			this.push(file);
			return cb();
		}

		if (file.isStream()) {
			this.emit('error', new gutil.PluginError('gulp-traceur', 'Streaming not supported'));
			return cb();
		}

		var ret;

		options = options || {};
		options.filename = path.basename(file.path);

		try {
			ret = traceur.compile(file.contents.toString(), options);

			if (ret.js) {
				if (ret.sourceMap) {
					ret.js += '\n//# sourceMappingURL=' + options.filename + '.map';
				}

				file.contents = new Buffer(ret.js);
			}

			if (ret.sourceMap) {
				this.push(new gutil.File({
					cwd: file.cwd,
					base: file.base,
					path: file.path + '.map',
					contents: new Buffer(ret.sourceMap)
				}));
			}
		} catch (err) {
			this.emit('error', new gutil.PluginError('gulp-traceur', err));
		}

		if (ret.errors.length > 0) {
			this.emit('error', new gutil.PluginError('gulp-traceur', '\n' + ret.errors.join('\n')));
		}

		this.push(file);
		cb();
	});
示例#3
0
  manifest.forEach(function(file) {
    var distPath = path.join(distRoot, file);
    mkdirp.sync(path.dirname(distPath));

    var originalFile = path.join(root, file);
    var originalSource = fs.readFileSync(originalFile, "utf8");
    var originalFilePath = path.relative(distRoot, originalFile);

    var sourceMapGenerator = new traceur.outputgeneration.SourceMapGenerator({
      file: originalFile,
    });

    var compileOpts = config.options || {};
    compileOpts.sourceMaps = "inline";

    var compiledSource = traceur.compile(originalSource, compileOpts, originalFilePath);
    fs.writeFileSync(distPath, compiledSource, "utf8");
  });
示例#4
0
function transform (dir, contents) {
  var imports = [];

  contents = contents.replace(IMPORT_RE, function (match, obj, includePath) {
    if (!MODULE_LOCATIONS[includePath]) {
      imports.push(match);
      return '';
    }
    var inlineFilePath = path.join(dir, MODULE_LOCATIONS[includePath]);
    console.log(dir, inlineFilePath);
    if (inlineFilePath.substr(-3) !== '.js') {
      inlineFilePath += '.js';
    }
    return 'var ' + obj + '=' + inlineModule(inlineFilePath) + ';';
  });

  var services = imports.map(getParts).map(serviceify);
  contents = traceur.compile(contents, TRACEUR_OPTS);
  return detraceurify(unwrapify(contents, services));
}
示例#5
0
 return Promise.all(treeNames.map(function(name) {
   var load = tree[name];
   if (load.metadata.build == false) {
     return;
   }
   else if (load.metadata.format == 'es6') {
     var result = traceur.compile(load.source, {
       moduleName: load.name,
       modules: 'instantiate'
     });
     concatOutput.push(result.js);
   }
   else if (load.metadata.format == 'register') {
     return registerCompiler.compile(load, loader).then(function(result) {
       concatOutput.push(result.source);
     });
   }
   else if (load.metadata.format == 'amd') {
     return amdCompiler.compile(load, loader).then(function(result) {
       concatOutput.push(result.source);
     });
   }
   else if (load.metadata.format == 'cjs') {
     return cjsCompiler.compile(load, loader).then(function(result) {
       concatOutput.push(result.source);
     });
   }
   else if (load.metadata.format == 'global') {
     return globalCompiler.compile(load, loader).then(function(result) {
       concatOutput.push(result.source);
     });
   }
   else {
     throw "unknown format " + load.metadata.format;
   }
 }))
示例#6
0
var traceur = require("traceur");
var fs = require("fs");

var INFILE = './templateStrings.js';
var OUTFILE = './tc/templateStrings.js';

var result = traceur.compile(fs.readFileSync(INFILE, { encoding: "utf8" }), {
    filename: INFILE,
    modules: "inline"
});

if (result.errors && result.errors.length > 0) {
    console.log(result);
}
console.log(traceur.RUNTIME_PATH);

fs.writeFileSync(OUTFILE, fs.readFileSync(traceur.RUNTIME_PATH, { encoding: "utf8" }) + "\n\n" + result.js, { encoding: "utf8" });
示例#7
0
文件: index.js 项目: aitoroses/6to5
 compile: function (code, filename) {
   return traceur.compile(code, {
     modules: "commonjs",
     experimental: true
   });
 }
 { name: 'traceur',          fn: function() { return traceur.compile(input, { }); } },
示例#9
0
文件: index.js 项目: elf-mouse/es6
/* Node.js环境的用法 */
var config = {
  input: 'calc.js',
  output: 'output.js'
};

var traceur = require('traceur');
var fs = require('fs');

// 将ES6脚本转为字符串
var contents = fs.readFileSync(config.input).toString();

var result = traceur.compile(contents, {
  filename: config.input,
  sourceMap: true,
  // 其他设置
  modules: 'commonjs'
});

if (result.error) {
  throw result.error;
}

// result对象的js属性就是转换后的ES5代码
fs.writeFileSync(config.output, result.js);
// sourceMap属性对应map文件
fs.writeFileSync(config.output + '.map', result.sourceMap);
示例#10
0
var traceur = require('traceur');
var fs = require('fs');


var contents = fs.readFileSync('calc.js').toString();

var result = traceur.compile(contents, {
    filename: 'calc.js',
    sourceMap: true,
    modules: 'commonjs'
});

if (result.error) {
    throw result.error;
}

fs.writeFileSync('out.js', result.js);
fs.writeFileSync('out.js.map', result.sourceMap);