我正在尝试用reasonML编写命令行工具。所以我在第一行插入了一个shebang(#! /usr/bin/env node
),但编译器无法编译它。如何在编译输出中添加shebang?
答案 0 :(得分:3)
我知道有两种方法可以做到这一点:
<强> 1。使用js-post-build
中的bsconfig.json
配置选项:
这是一个使用sed
将shebang插入生成的js文件顶部的示例:
"js-post-build": {
"cmd": "/usr/bin/sed -i '1 i\\#!/usr/bin/env node'"
}
这将仅对实际的文件执行。这方面的缺点是shebang不是有效的javascript,所以如果你以后需要解析它,例如捆绑,它可能会失败(例如汇总)。 BSB也会表现得有点小问题,但我没有遇到过这方面的严重问题,只是构建的一些控制台垃圾邮件引发了比它应该多几百倍的控制台垃圾邮件。
<强> 2。使用rollup
标题选项:
Webpack和其他捆绑包可能有类似的功能,但我只知道如何使用汇总来执行此操作。以下是rollup.config.js
配置示例:
export default {
input: `src/main.bs.js`,
output: {
file: `bin/main.js`,
format: 'cjs',
banner: '#!/usr/bin/env node'
}
}
这样做的缺点当然是你必须使用汇总或其他一些工具来增加你可能不需要的构建步骤。