comment-stripper
Version:
Webpack loader that strips comments which can be used on its own too
117 lines (90 loc) • 2.91 kB
Markdown
# Comment stripping loader for webpack
`comment-stripper` is a _webpack_ loader that strips away all or some of the comments while processing the source files.
## Getting started
More than likely, you have your project configured and building correctly and you are here just to clean up your bundles. If that is not the case, _"God save the Queen, man"_.
### Installation
```
yarn add comment-stripper --dev
```
or
```
npm install comment-stripper --save-dev
```
### Configuration
Simply add `comment-stripper` to your loaders in `webpack.config.js`:
```js
module.exports = {
// ...
module: {
rules: [
{
test: /\.scss$/,
use: ['css-loader', 'comment-stripper', 'sass-loader']
}
]
}
};
```
#### Options
By default, `comment-stripper` removes all unimportant comments and hoists the protected ones, dropping duplicates, to the top of the output. This behavior can be modified:
```js
module.exports = {
// ...
module: {
rules: [
{
test: /\.scss$/,
use: [
'css-loader',
{
loader: 'comment-stripper',
options: {
safe: true
}
},
'sass-loader',
]
}
]
}
};
```
##### safe
| Type | Default |
|-----------|---------|
| `boolean` | `true` |
When `true`, unimportant comments are removed and one copy of the protected ones, identified by an exclamation mark following the opening (e.g. `/*!` and `//!`), is hoisted to the top of the output.
Setting it `false` will result in removal of all comments, important and unimportant.
##### keepProtected
| Type | Default |
|-----------|---------|
| `boolean` | `false` |
When `true`, the `safe` option is overridden so unimportant comments are removed and all protected comments are left in place.
When `false`, the behavior is driven by the `safe` option.
##### language
| Type | Default |
|----------|--------------|
| `string` | `javascript` |
A value of `js`, `ts`, `javascript`, `typescript`, `sass`, or `less` strips blocks of `/* */` comments and single-line `// ...` comments.
A value of `css` strips blocks of `/* */` comments; CSS doesn't support single-line `// ...` comments.
A value of `html` or `xml` strips blocks of `<!-- -->` comments.
##### line
| Type | Default |
|-----------|---------|
| `boolean` | `true` |
When `false`, single-line `// ...` comments would NOT be stripped away.
##### block
| Type | Default |
|-----------|---------|
| `boolean` | `true` |
When `false`, blocks of `/* */` and `<!-- -->` comments would NOT be stripped away.
### API
`comment-stripper` can also be used on its own to strip out comments.
```js
const { strip } = require('comment-stripper');
const output = strip(
'const foo = "bar";// this is a comment\n /* me too */',
{ safe: true }
);
// Do something with output
```