鉴于以下内容:
require('babel-core').transform('3').code
有没有办法让它返回3
(表达式)而不是3;
(声明)?
我试过了:
(3)
,但也转换为3;
。minified: true
,声称会删除尾随的分号但实际上似乎没有做任何事情。现在我正在使用.replace(/;$/, '')
,正常工作但似乎很荒谬且容易出错。
答案 0 :(得分:4)
@loganfsmyth在BabelJS.slack - parserOpts.allowReturnOutsideFunction
上提供了缺失的链接。这是我提出的代码:
const babel = require('babel-core');
let script = 'return ((selector, callback) => Array.prototype.map.call(document.querySelectorAll(selector), callback))("#main table a.companylist",a => a.innerText)';
let transform = babel.transform(script, {
ast: false,
code: true,
comments: false,
compact: true,
minified: true,
presets: [
['env', {
targets: {
browsers: ['> 1%', 'last 2 Firefox versions', 'last 2 Chrome versions', 'last 2 Edge versions', 'last 2 Safari versions', 'Firefox ESR', 'IE >= 8'],
}
}]
],
parserOpts: {
allowReturnOutsideFunction: true,
}
});
let code = `return function(){${transform.code}}()`;
输出:
return function(){"use strict";return function(selector,callback){return Array.prototype.map.call(document.querySelectorAll(selector),callback)}("#main table a.companylist",function(a){return a.innerText});}()
我的输入脚本看起来有点滑稽,因为我是如何生成它的,但你可以看到它将这些箭头表达式转换为常规函数,整个事情仍然是一个表达式。
N.B。您可能希望将最后一行修改为类似
的内容let code = `(function(){${transform.code}})()`;
取决于您的需求。我需要我return
编辑。