als-remove-js-comments
Version:
A utility for removing JavaScript comments, supporting both single-line and multi-line comments with proper handling of string literals.
116 lines (83 loc) • 2.89 kB
Markdown
# als-remove-js-comments
`als-remove-js-comments` is a simple and efficient utility for removing comments from JavaScript code. It supports both single-line (`//`) and multi-line (`/* */`) comments, while properly handling string literals to avoid removing comments inside strings.
Works in NodeJs and browser.
Supports jsx comments too `{/**/}`.
## Installation
You can install the library via npm:
```bash
npm install als-remove-js-comments
```
## Usage
```js
const removeComments = require('als-remove-js-comments');
const code = `
const a = 5; // This is a comment
const str = "This is a string with // inside";
/* This is a multi-line
comment */
const b = 10;
`;
const result = removeComments(code);
console.log(result);
// Output:
// const a = 5;
// const str = "This is a string with // inside";
// const b = 10;
```
In browser:
```html
<script src="/node_modules/als-remove-js-comments/remove-comments.js"></script>
<script>
removeComments('some text // with comments')
</script>
```
## API
### `removeComments(code: string): string`
Removes all single-line and multi-line comments from the given JavaScript code.
#### Parameters:
- `code` (`string`): The input JavaScript code.
#### Returns:
- `string`: The JavaScript code without comments.
## Examples
### Example 1: Removing Single-Line Comments
```js
const input = `const a = 5; // This is a comment\nconst b = 10; // Another comment`;
const output = removeComments(input);
console.log(output);
// Output: "const a = 5; \nconst b = 10; "
```
### Example 2: Removing Multi-Line Comments
```js
const input = `const a = 5; /* This is a\nmulti-line comment */\nconst b = 10;`;
const output = removeComments(input);
console.log(output);
// Output: "const a = 5; \nconst b = 10;"
```
### Example 3: Handling String Literals
```js
const input = `const str = "This is a string with // inside";`;
const output = removeComments(input);
console.log(output);
// Output: "const str = \"This is a string with // inside\";"
```
### Example 4: Handling Comments on Separate Lines
```js
const input = `// This is a single-line comment\nconst a = 5;`;
const output = removeComments(input);
console.log(output);
// Output: "\nconst a = 5;"
```
### Example 5: Handling Escaped Quotes
```js
const input = `const str = "This string contains an escaped quote: \\" and a // comment";`;
const output = removeComments(input);
console.log(output);
// Output: "const str = \"This string contains an escaped quote: \\" and a // comment\";"
```
## Tests
The library includes a set of tests to ensure correct behavior with various edge cases. You can run the tests using:
```bash
node test.js
```
## License
This project is licensed under the MIT License. See the `LICENSE` file for details.