UNPKG

gulp-strip-comments

Version:
148 lines (95 loc) 5.77 kB
# [gulp](http://gulpjs.com)-strip-comments [![Coverage Status](https://coveralls.io/repos/RnbWd/gulp-strip-comments/badge.svg?branch=master&service=github)](https://coveralls.io/github/RnbWd/gulp-strip-comments?branch=master) [![downloads](https://img.shields.io/npm/dt/gulp-strip-comments.svg?style=flat-square)](https://www.npmjs.com/package/gulp-strip-comments) [![decomment](https://img.shields.io/badge/decomment-v0.9.5-blue.svg?style=flat-square)](https://github.com/vitaly-t/decomment) > [decomment](https://github.com/vitaly-t/decomment) - removes comments from JSON, JavaScript, CSS, HTML, etc. [![NPM](https://nodei.co/npm/gulp-strip-comments.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/gulp-strip-comments/) ## Features - Removes both single and multi-line comments from JSON, JavaScript and CSS/Text - Automatically recognizes HTML and removes all `<!-- comments -->` from it - Does not change layout / formatting of the original document - Removes lines that have only comments on them - Compatible with CSS3, JSON5 and ECMAScript 6 The library does not support mixed content - HTML with JavaScript or CSS in it. Once the input code is recognized as HTML, only the HTML comments will be removed from it. ## Performance For JSON and JavaScript this library uses [esprima] to guarantee correct processing for regular expressions. As an example, it can process [AngularJS 1.5 Core](https://code.angularjs.org/1.5.0/angular.js) in under 100ms, which is 1.1MB ~ 30,000 lines of JavaScript. ## Install ```sh $ npm install --save-dev gulp-strip-comments ``` ## Usage ```js var gulp = require("gulp"); var strip = require("gulp-strip-comments"); gulp.task("default", function () { return gulp.src("template.js").pipe(strip()).pipe(gulp.dest("dist")); }); ``` ## API See [decomment](https://github.com/vitaly-t/decomment#api) for examples and more information. ``` let strip = require('gulp-strip-comments') // == decomment ``` ### [strip(options)](https://github.com/vitaly-t/decomment#decommentcode-options--string) This method first checks if the code starts with `<`, as an HTML, and if so, all `<!-- comment -->` entries are removed, according to the `options`. When the `code` is not recognized as HTML, it is assumed to be either JSON or JavaScript. It is then parsed through [esprima] for ECMAScript 6 compliance, and to extract details about regular expressions. If [esprima] fails to validate the code, it will throw a parsing error. When successful, this method will remove `//` and `/**/` comments according to the `options` (see below). ##### options.safe ⇒ Boolean - `false (default)` - remove all multi-line comments - `true` - keep special multi-line comments that begin with: - `<!--[if` - for conditional comments in HTML - `/*!` - for everything else (other than HTML) ##### options.ignore ⇒ RegExp | [RegExp,...] Takes either a single or an array of regular expressions to match against. All matching blocks are then skipped, as well as any comment-like content inside them. Examples: - CSS may contain Base64-encoded strings with comment-like symbols: ```css src: url(data:font/woff;base64,d09GRg//ABAAAAAAZ); ``` You can isolate all `url(*)` blocks by using: ```js { ignore: /url\([\w\s:\/=\-\+;,]*\)/g; } ``` - If you want to isolate jsDoc blocks (start with `/**`, followed by a line break, end with `*/`), you can use the following: ```js { ignore: /\/\*\*\s*\n([^\*]|(\*(?!\/)))*\*\//g; } ``` ##### options.space ⇒ Boolean - `false (default)` - remove comment blocks entirely - `true` - replace comment blocks with white spaces where needed, in order to preserve the original line + column position of every code element. NOTE: When this option is enabled, option `trim` is ignored. ##### options.trim ⇒ Boolean - `false (default)` - do not trim comments - `true` - remove empty lines that follow removed full-line comments NOTE: This option has no effect when option `space` is enabled. ##### options.tolerant ⇒ Boolean - `false (default)` - perform strict JavaScript parsing (parser throws on invalid JavaScript) - `true` - pass `tolerant` flag to [esprima] parser (the parser _may_ choose to continue parsing and produce a syntax tree). Usefull for parsing Angular/TypeScript code, for example. ### [strip.text(options)](https://github.com/vitaly-t/decomment#decommenttexttext-options--string) Unlike the default **strip** method, it instructs the library that `text` is not a JSON, JavaScript or HTML, rather a plain text that needs no parsing or validation, only to remove `//` and `/**/` comments from it according to the `options`. This method is good for any text file that uses syntax `//` and `/**/` for comments, such as: `.CSS`, `.CPP`, `.H`, etc. Please note that while the same rules apply for the text blocks (`''`, `""` and \`\`), you should not use this method for JSON or JavaScript, as it can break your regular expressions. ### [strip.html(options)](https://github.com/vitaly-t/decomment#decommenthtmlhtml-options--string) Unlike the default **strip** method, it instructs the library not to parse or validate the input in any way, rather assume it to be HTML, and remove all `<!-- comment -->` entries from it according to the `options`. ### [strip.getEOL()](https://github.com/vitaly-t/decomment#decommentgeteoltext--string) Returns End-of-Line string used within the `text`, based on the occurrence frequency: - `\n` - for Unix-encoded text - `\r\n` - for Windows-encoded text When impossible to conclude (the same or 0 occurrence), it returns the default End-of-Line for the current OS. --- [![licence](https://img.shields.io/npm/l/gulp-strip-comments.svg?style=flat-square)](https://opensource.org/licenses/MIT)