在使用ReasonML和Bucklescript时,是否可以配置Bucklescript,这样就不会生成export语句?我更希望生成的代码可以像在浏览器中一样使用,即与ES5 (或ES6)兼容。
编辑:好的,在尝试更多工具链的同时,我意识到仅仅关闭export是不够的。见下面的例子:
function foo(x, y) {
return x + y | 0;
}
var Test = /* module */[
/* foo */foo
];
exports.Test = Test;如果删除exports,则此代码将污染全局命名空间,并且从ES5兼容性的角度被简单地破坏。
编辑2:阅读巴克斯宾的博客,这似乎是不可能的:
一个OCaml模块编译成一个JavaScript模块(AMDJS、CommonJS或Google模块),没有名称损坏。
来源。
发布于 2017-10-23 23:54:17
BuckleScript可以以多种不同的模块格式输出模块,然后可以使用绑定器(如webpack或rollup )将模块与它们的依赖关系捆绑在一起。输出实际上并不打算作为独立的单元使用,因为在任何情况下,您所能做的都是相当有限的,因为标准库和运行时库是独立的模块。甚至像乘法这样琐碎的事情也会涉及到运行时库。
您可以将BuckleScript配置为输出es6模块,只要浏览器支持,这些模块就可以直接在浏览器中运行。但这仍然需要手动从bs平台安装中提取标准和运行时库。
模块格式是通过package-specs属性在bsconfig.json中配置的。
{
...
"packages-specs": ["es6-global"] /* Or "es6" */
}尽管如此,您实际上可以通过将[@@@bs.config { no_export }]放在文件的顶部来关闭导出。但由于上述原因,这是没有记录的,因为它在实践中的应用非常有限。
https://stackoverflow.com/questions/46899274
复制相似问题