Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/samvv/shebang2-loader

An alternative Webpack loader for Unix-style shebangs (usually #!/usr/bin/env node)
https://github.com/samvv/shebang2-loader

Last synced: about 1 month ago
JSON representation

An alternative Webpack loader for Unix-style shebangs (usually #!/usr/bin/env node)

Awesome Lists containing this project

README

        

# shebang2-loader

This is an alternative Webpack loader for Unix-style shebangs (usually `#!/usr/bin/env node`). It is meant to replace the
[shebang-loader](https://npmjs.com/package/shebang-loader), which appears to be unmaintained and does not have proper
support for source maps.

## Usage

1. Make this package available to Webpack:

```
npm i -D shebang2-loader
```
or
```
yarn add -D shebang2-loader
```

2. Configure the loader in your `webpack.config.js`.

```js
module: {
rules: [
// ...
{ test: /example\/index.js$/, loader: "shebang2-loader" },
]
}
```

**Make sure to place `shebang2-loader` as the last rule in the list of rules, so that Webpack will process it first.**

Here's a full example using Webpack's [BannerPlugin](https://webpack.js.org/plugins/banner-plugin/) to re-generate the
shebang for a CLI application.

```js
const webpack = require("webpack");
const path = require("path");

module.exports = {
target: 'node',
mode: 'development',
entry: './main.js',
output: {
filename: 'dist.js',
path: path.resolve(__dirname),
},
plugins: [
new webpack.BannerPlugin({ banner: '#!/usr/bin/env node', raw: true }),
],
devtool: 'source-map',
module: {
rules: [
{ test: /\.m?js$/, exclude: /node_modules/, loader: 'babel-loader' },
{ test: /example\/index.js$/, loader: "shebang2-loader" },
]
}
};
```

3. Run Webpack as you'd usually do.

```
webpack --watch --config webpack.config.js
```

## License

This software is licensed under the MIT license.