A Rollup.js plugin to remove and optionally extract shebang.
As of Rollup v3 shebang will be stripped by rollup itself, but you might still need this plugin if you need to capture the shebang in order to add it back later.
As of Rollup v4 shebang will be stripped out and added back into the output file (check it out here), making this plugin almost unnecessary.
npm i rollup-plugin-strip-shebang
// example.js
#!/usr/bin/env node
console.log("Hi!");
// rollup.config.js
import { stripShebang } from "rollup-plugin-strip-shebang";
export default {
input: "example.js",
output: {
file: "bin/cli.js",
format: "cjs"
},
plugins: [
stripShebang()
]
};
- Target file filtering (see include / exclude)
- Capture stripped shebang (see capture option)
- Sourcemap support (see sourcemap option)
minimatch pattern to be used as filter, see createFilter
documentation.
syntax
include: Array<string | RegExp> | string | RegExp | null;
exclude: Array<string | RegExp> | string | RegExp | null;
You can pass a capture function
or object
to get the stripped shebang in case you need it later.
syntax
capture: (shebang: string) => void;
example
let shebang;
...
plugins: [
strip({
capture(capturedShebang) {
shebang = capturedShebang;
},
}),
]
...
console.log(shebang);
syntax
capture: Object;
example
let capture = {};
...
plugins: [
strip({
capture,
}),
]
...
console.log(capture.shebang);
You can pass sourcemap: false
to speed things up a bit if you don't need source maps. Anything other than false
will default to true
, including null
and undefined
.
syntax
sourcemap: boolean = true;
example
...
output: {
file: "bin/lib.js",
sourcemap: false,
},
plugins: [
strip({
sourcemap: false,
}),
]
...
⚠️ Note that you will get a warning if you set rollup to generate source maps and set this tofalse
.
MIT © 2019-2024 Manuel Fernández