0

使用官方的traceur 模块,是否可以为compile和设置默认选项require

例如,此代码有效:

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

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

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

Traceur 将抛出错误,因为该blockBinding选项未启用。有什么方法可以更改默认选项,以便在不总是传递选项对象的情况下编译文件?

除了应用 DRY 原则之外,我主要关心的是获得traceur.require使用自定义选项编译文件的函数——据我所见,traceur.require甚至traceur.require.makeDefault()不接受options参数。

例如,考虑这个代码示例:

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

而这段代码:

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

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

使用节点 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 页面没有提到任何关于编译选项的内容。编译选项页面没有提到 Node.js 中的Traceur API,事实上,我找不到任何关于 Node.js 中的 Traceur API 的文档。

4

1 回答 1

3

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

experimental2014 年 7 月 16 日,今天修复了该选项的一个单独错误。

于 2014-07-17T00:39:18.287 回答