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

How do I set default options for traceur.compile and traceur.require?

提问人:Fabrício Matté 提问时间:7/8/2014 最后编辑:Fabrício Matté 更新时间:7/17/2014 访问量:1101

问:

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

例如,以下代码的工作原理:

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

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

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

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

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

例如,考虑以下代码示例:

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

还有这段代码:

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

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

使用 Node 0.10.29 和 Traceur 0.0.49。


这是我想要实现的目标的完整示例。

引导程序 .js (入口点):

var traceur = require('traceur');
traceur.options.experimental = true;
traceur.require.makeDefault();
require('./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.optionstraceur.optionstraceur.compiletraceur.require


将 Traceur 与 Node.js 一起使用 Wiki 页面没有提到任何有关编译选项的内容。编译选项页面没有提到 Node.js 中的 Traceur API,实际上,我在 Node.js 中找不到任何关于 Traceur API 的文档。

节点 .js ecmascript-6 跟踪器

评论


答:

3赞 johnjbarton 7/17/2014 #1

法布里西奥·马特 ;-)添加了对为 makeDefault() 提供默认选项的支持,请参阅 https://github.com/google/traceur-compiler/blob/master/src/node/require.js#L58

该选项的一个单独错误已于今天(16JUL14)修复。experimental

评论

0赞 Fabrício Matté 7/17/2014
谢谢你提醒我这个问题并发布答案,我最近很忙,几乎忘记了这个问题。顺便说一句,欢迎来到 Stack Overflow。=]