【问题标题】:Shebang support in reasonMLreasonML 中的 Shebang 支持
【发布时间】:2018-03-19 03:31:43
【问题描述】:
我正在尝试在 reasonML 中编写命令行工具。所以我在第一行插入了一个shebang(#! /usr/bin/env node),但是编译器编译失败。如何在编译后的输出中添加 shebang?
【问题讨论】:
标签:
shebang
reason
bucklescript
【解决方案1】:
我知道有两种方法可以做到这一点:
1.使用bsconfig.json 中的js-post-build 配置选项:
这是一个使用sed在生成的js文件顶部插入shebang的例子:
"js-post-build": {
"cmd": "/usr/bin/sed -i '1 i\\#!/usr/bin/env node'"
}
Documentation
这将仅在实际的文件上执行。这样做的缺点是 shebang 不是有效的 javascript,因此如果您需要稍后解析它,例如捆绑,它可能会失败(例如汇总)。 BSB 也会出现一些故障,但我对此没有严重问题,只是构建中的一些控制台垃圾邮件触发了它应该触发的几百倍。
2。使用rollups 横幅选项:
Webpack 和其他打包工具可能有类似的功能,但我只知道如何通过汇总来做到这一点。这是rollup.config.js 配置示例:
export default {
input: `src/main.bs.js`,
output: {
file: `bin/main.js`,
format: 'cjs',
banner: '#!/usr/bin/env node'
}
}
Documentation
当然,这样做的缺点是您必须使用汇总或其他一些工具来添加您可能不需要的构建步骤。