Time slots app prototype
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.6 KiB

# strip-literal
[![NPM version](https://img.shields.io/npm/v/strip-literal?color=a1b858&label=)](https://www.npmjs.com/package/strip-literal)
Strip comments and string literals from JavaScript code. Powered by [acorn](https://github.com/acornjs/acorn)'s tokenizer.
## Usage
<!-- eslint-disable no-template-curly-in-string -->
```ts
import { stripLiteral } from 'strip-literal'
stripLiteral('const foo = `//foo ${bar}`') // 'const foo = ` ${bar}`'
```
Comments, string literals will be replaced by spaces with the same length to keep the source map untouched.
## Functions
### `stripLiteralAcorn`
Strip literal using [Acorn](https://github.com/acornjs/acorn)'s tokenizer.
Will throw error if the input is not valid JavaScript.
[Source](./src/acorn.ts)
### `stripLiteralRegex`
Strip literal using RegExp.
This will be faster and can work on non-JavaScript input. But will have some caveats on distinguish strings and comments.
[Source](./src/regex.ts)
### `stripLiteral`
Strip literal from code.
Try to use `stripLiteralAcorn` first, and fallback to `stripLiteralRegex` if Acorn fails.
[Source](./src/index.ts)
### `createIsLiteralPositionAcorn`
Returns a function that returns whether the position is in a literal using [Acorn](https://github.com/acornjs/acorn)'s tokenizer.
Will throw error if the input is not valid JavaScript.
[Source](./src/acorn.ts)
## Sponsors
<p align="center">
<a href="https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg">
<img src='https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg'/>
</a>
</p>
## License
[MIT](./LICENSE) License © 2022 [Anthony Fu](https://github.com/antfu)