如何为traceur.compile和traceur.require设置默认选项?

时间:2014-07-08 05:17:07

标签: node.js ecmascript-6 traceur

使用官方traceur module,是否可以设置compilerequire的默认选项?

例如,此代码有效:

var traceur = require('traceur');
console.log(
    traceur.compile('{ let x = 1; }', { experimental:true }).js
);

现在,如果我删除traceur.compile的第二个参数(选项对象):

console.log(
    traceur.compile('{ let x = 1; }').js
);

由于未启用blockBinding选项,Traceur将抛出错误。有没有办法更改默认选项,以便在不总是传递选项对象的情况下编译文件?

除了应用DRY原则之外,我主要担心的是获得traceur.require函数来编译带有自定义选项的文件 - 据我所知,traceur.requiretraceur.require.makeDefault()甚至没有采用options论证。

例如,考虑此代码示例:

require('traceur').require('./index');

这段代码:

require('traceur').require.makeDefault();
require('./index');

有没有办法在启用experimental选项的情况下编译所需的文件? 最好通过改变默认选项,因为我看不到任何其他可行的方式。

使用Node 0.10.29和Traceur 0.0.49。


以下是我想要实现的完整范例。

bootstrap.js(切入点):

var traceur = require('traceur');
traceur.options.experimental = true;
traceur.require.makeDefault();
require('./index');

index.js:

import {x} from './lib';

// using a block binding in order to check
// whether this file was compiled with experimental features enabled
{
    let y = x;
    console.log(y);
}

lib.js:

export var x = (() => { 
    if (true) {
        // should be compiled with experimental features enabled too
        let x = 1;
        return x;
    }
})();

预期的控制台输出:1

traceur.options.experimental=true用作设置器,可在traceur.options对象中启用实验性功能,但遗憾的是traceur.options似乎不会影响traceur.compiletraceur.require我可以看到。


Using Traceur with Node.js Wiki页面没有提及有关编译选项的任何内容。 Options for Compiling页面未提及Node.js中的Traceur API,事实上,我在Node.js中找不到有关Traceur API的任何文档。

1 个答案:

答案 0 :(得分:3)

FabrícioMatté;-)添加了对makeDefault()的默认选项的支持,请参阅 https://github.com/google/traceur-compiler/blob/master/src/node/require.js#L58

选项experimental的单独错误已于今天,16日至14日修复。