├── .editorconfig ├── .gitattributes ├── .gitignore ├── .jshintrc ├── .npmignore ├── .travis.yml ├── LICENSE.txt ├── README.md ├── csscomb.jpg ├── index.js ├── package-lock.json ├── package.json └── test.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs 2 | # http://editorconfig.org 3 | 4 | root = true 5 | 6 | [*] 7 | 8 | # change these settings to your own preference 9 | indent_style = space 10 | indent_size = 2 11 | 12 | # we recommend you to keep these unchanged 13 | end_of_line = lf 14 | charset = utf-8 15 | trim_trailing_whitespace = true 16 | insert_final_newline = true 17 | 18 | [*.md] 19 | trim_trailing_whitespace = false 20 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # These attributes affect how the contents stored in the repository are copied 2 | # to the working tree files when commands such as git checkout and git merge run. 3 | # http://git-scm.com/docs/gitattributes 4 | 5 | * text=auto -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Git uses this file to determine which files and directories to ignore 2 | # https://help.github.com/articles/ignoring-files 3 | 4 | # Node.js 5 | node_modules 6 | npm-debug.log 7 | tmp 8 | 9 | # NPM 10 | *.tgz 11 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "esnext": true, 4 | "bitwise": true, 5 | "camelcase": true, 6 | "curly": true, 7 | "immed": true, 8 | "newcap": true, 9 | "noarg": true, 10 | "undef": true, 11 | "unused": "vars", 12 | "strict": true, 13 | "indent": 2 14 | } 15 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | *.tgz 2 | .idea 3 | .editorconfig 4 | .gitattributes 5 | .jshintrc 6 | .npmignore 7 | .travis.yml 8 | test.js 9 | csscomb.jpg -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '0.10' -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Konstantin Tarkus (@koistya) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [gulp](http://gulpjs.com)-csscomb   [![Build Status](http://img.shields.io/travis/koistya/gulp-csscomb/master.svg?style=flat)](http://travis-ci.org/koistya/gulp-csscomb) [![Dependency Status](https://david-dm.org/koistya/gulp-csscomb.svg?style=flat)](https://david-dm.org/koistya/gulp-csscomb) [![Tips](http://img.shields.io/gratipay/koistya.svg?style=flat)](https://gratipay.com/koistya) 2 | 3 | [](http://csscomb.com) 4 | 5 | > Format CSS coding style with [CSScomb](http://csscomb.com). 6 | 7 | *If you have any difficulties with the output of this plugin, please use the 8 | [CSScomb tracker](https://github.com/csscomb/csscomb.js/issues).* 9 | 10 | --- 11 | 12 |

🔥 Want to strengthen your core JavaScript skills and master ES6?
I would personally recommend this awesome ES6 course by Wes Bos.

13 | 14 | --- 15 | 16 | 17 | ## Installation 18 | 19 | ```sh 20 | npm install gulp-csscomb --save-dev 21 | ``` 22 | 23 | ## Example 1 24 | 25 | ```js 26 | var gulp = require('gulp'); 27 | var csscomb = require('gulp-csscomb'); 28 | 29 | gulp.task('styles', function() { 30 | return gulp.src('src/styles/main.css') 31 | .pipe(csscomb()) 32 | .pipe(gulp.dest('./build/css')); 33 | }); 34 | ``` 35 | 36 | ## Example 2 37 | 38 | ```js 39 | var gulp = require('gulp'); 40 | var $ = require('gulp-load-plugins')(); 41 | 42 | gulp.task('styles', function() { 43 | return gulp.src('src/styles/bootstrap.less') 44 | .pipe($.less({strictMath: true})) 45 | .pipe($.autoprefixer([ 46 | 'Android 2.3', 47 | 'Android >= 4', 48 | 'Chrome >= 20', 49 | 'Firefox >= 24', // Firefox 24 is the latest ESR 50 | 'Explorer >= 8', 51 | 'iOS >= 6', 52 | 'Opera >= 12', 53 | 'Safari >= 6'])) 54 | .pipe($.csscomb()) 55 | .pipe(gulp.dest('./build/css')); 56 | }); 57 | ``` 58 | 59 | If there is `.csscomb.json` file present in the same folder as the source file(s), 60 | or in the project root folder, `gulp-csscomb` will read config settings from it 61 | instead of default config. 62 | 63 | You can also specify a pre-defined configuration. Ex.: `csscomb('zen')` 64 | 65 | ## License 66 | 67 | The MIT License (MIT) © Konstantin Tarkus ([@koistya](https://twitter.com/koistya)) 68 | -------------------------------------------------------------------------------- /csscomb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/koistya/gulp-csscomb/eab7b9c191a4a8bf991df3e4d248ce4738d15606/csscomb.jpg -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * gulp-csscomb | https://github.com/koistya/gulp-csscomb 3 | * Copyright (c) Konstantin Tarkus (@koistya). See LICENSE.txt 4 | */ 5 | 6 | 'use strict'; 7 | 8 | var Comb = require('csscomb'); 9 | var fs = require('fs'); 10 | var path = require('path'); 11 | var through = require('through2'); 12 | var PluginError = require('plugin-error'); 13 | var fancyLog = require('fancy-log'); 14 | var colors = require('ansi-colors'); 15 | 16 | // Constants 17 | var PLUGIN_NAME = 'gulp-csscomb'; 18 | var SUPPORTED_EXTENSIONS = ['.css', '.sass', '.scss', '.less']; 19 | 20 | // Plugin level function (dealing with files) 21 | function Plugin(configPath, options) { 22 | 23 | if (arguments.length == 1 && typeof configPath === 'object') { 24 | options = configPath; 25 | configPath = options.configPath; 26 | } else if (arguments.length == 2 && typeof options === 'boolean') { 27 | options = { verbose: options }; // for backward compatibility 28 | } 29 | 30 | options = options || {}; 31 | configPath = configPath || null; 32 | 33 | var verbose = options.verbose || false; 34 | //var lint = options.lint || false; // TODO: Report about found issues in style sheets 35 | 36 | // Create a stream through which each file will pass 37 | var stream = through.obj(function(file, enc, cb) { 38 | 39 | if (file.isNull()) { 40 | // Do nothing 41 | } else if (file.isStream()) { 42 | this.emit('error', new PluginError(PLUGIN_NAME, 'Streams are not supported!')); 43 | return cb(); 44 | } else if (file.isBuffer() && SUPPORTED_EXTENSIONS.indexOf(path.extname(file.path)) !== -1) { 45 | 46 | if (verbose) { 47 | fancyLog(PLUGIN_NAME, 'Processing ' + colors.magenta(file.path)); 48 | } 49 | 50 | if (configPath && !fs.existsSync(configPath)) { 51 | this.emit('error', new PluginError(PLUGIN_NAME, 'Configuration file not found: ' + colors.magenta(configPath))); 52 | return cb(); 53 | } 54 | 55 | configPath = Comb.getCustomConfigPath(configPath || path.join(path.dirname(file.path), '.csscomb.json')); 56 | var config = Comb.getCustomConfig(configPath); 57 | 58 | if (verbose) { 59 | fancyLog(PLUGIN_NAME, 'Using configuration file ' + colors.magenta(configPath)); 60 | } 61 | 62 | var comb = new Comb(config || 'csscomb'); 63 | var syntax = options.syntax || file.path.split('.').pop(); 64 | 65 | try { 66 | var output = comb.processString( 67 | file.contents.toString('utf8'), { 68 | syntax: syntax, 69 | filename: file.path 70 | }); 71 | file.contents = new Buffer(output); 72 | } catch (err) { 73 | this.emit('error', new PluginError(PLUGIN_NAME, file.path + '\n' + err)); 74 | } 75 | } 76 | 77 | // make sure the file goes through the next gulp plugin 78 | this.push(file); 79 | // tell the stream engine that we are done with this file 80 | return cb(); 81 | }); 82 | 83 | // Return the file stream 84 | return stream; 85 | } 86 | 87 | // Export the plugin main function 88 | module.exports = Plugin; 89 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gulp-csscomb", 3 | "version": "3.1.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "ansi-colors": { 8 | "version": "1.1.0", 9 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", 10 | "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", 11 | "requires": { 12 | "ansi-wrap": "^0.1.0" 13 | } 14 | }, 15 | "ansi-cyan": { 16 | "version": "0.1.1", 17 | "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", 18 | "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", 19 | "requires": { 20 | "ansi-wrap": "0.1.0" 21 | } 22 | }, 23 | "ansi-gray": { 24 | "version": "0.1.1", 25 | "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", 26 | "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", 27 | "requires": { 28 | "ansi-wrap": "0.1.0" 29 | } 30 | }, 31 | "ansi-red": { 32 | "version": "0.1.1", 33 | "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", 34 | "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", 35 | "requires": { 36 | "ansi-wrap": "0.1.0" 37 | } 38 | }, 39 | "ansi-wrap": { 40 | "version": "0.1.0", 41 | "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", 42 | "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" 43 | }, 44 | "arr-diff": { 45 | "version": "1.1.0", 46 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", 47 | "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", 48 | "requires": { 49 | "arr-flatten": "^1.0.1", 50 | "array-slice": "^0.2.3" 51 | } 52 | }, 53 | "arr-flatten": { 54 | "version": "1.1.0", 55 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 56 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" 57 | }, 58 | "arr-union": { 59 | "version": "2.1.0", 60 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", 61 | "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=" 62 | }, 63 | "array-slice": { 64 | "version": "0.2.3", 65 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", 66 | "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=" 67 | }, 68 | "balanced-match": { 69 | "version": "1.0.0", 70 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 71 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 72 | "dev": true 73 | }, 74 | "brace-expansion": { 75 | "version": "1.1.11", 76 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 77 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 78 | "dev": true, 79 | "requires": { 80 | "balanced-match": "^1.0.0", 81 | "concat-map": "0.0.1" 82 | } 83 | }, 84 | "browser-stdout": { 85 | "version": "1.3.0", 86 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", 87 | "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", 88 | "dev": true 89 | }, 90 | "cli": { 91 | "version": "1.0.1", 92 | "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", 93 | "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", 94 | "dev": true, 95 | "requires": { 96 | "exit": "0.1.2", 97 | "glob": "^7.1.1" 98 | }, 99 | "dependencies": { 100 | "glob": { 101 | "version": "7.1.6", 102 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 103 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 104 | "dev": true, 105 | "requires": { 106 | "fs.realpath": "^1.0.0", 107 | "inflight": "^1.0.4", 108 | "inherits": "2", 109 | "minimatch": "^3.0.4", 110 | "once": "^1.3.0", 111 | "path-is-absolute": "^1.0.0" 112 | } 113 | }, 114 | "minimatch": { 115 | "version": "3.0.4", 116 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 117 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 118 | "dev": true, 119 | "requires": { 120 | "brace-expansion": "^1.1.7" 121 | } 122 | } 123 | } 124 | }, 125 | "clone": { 126 | "version": "2.1.2", 127 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", 128 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", 129 | "dev": true 130 | }, 131 | "clone-buffer": { 132 | "version": "1.0.0", 133 | "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", 134 | "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", 135 | "dev": true 136 | }, 137 | "clone-stats": { 138 | "version": "1.0.0", 139 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", 140 | "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", 141 | "dev": true 142 | }, 143 | "cloneable-readable": { 144 | "version": "1.1.3", 145 | "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", 146 | "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", 147 | "dev": true, 148 | "requires": { 149 | "inherits": "^2.0.1", 150 | "process-nextick-args": "^2.0.0", 151 | "readable-stream": "^2.3.5" 152 | } 153 | }, 154 | "color-support": { 155 | "version": "1.1.3", 156 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 157 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" 158 | }, 159 | "commander": { 160 | "version": "2.0.0", 161 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", 162 | "integrity": "sha1-0bhvkB+LZL2UG96tr5JFMDk76Sg=" 163 | }, 164 | "concat-map": { 165 | "version": "0.0.1", 166 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 167 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 168 | "dev": true 169 | }, 170 | "console-browserify": { 171 | "version": "1.1.0", 172 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 173 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", 174 | "dev": true, 175 | "requires": { 176 | "date-now": "^0.1.4" 177 | } 178 | }, 179 | "core-util-is": { 180 | "version": "1.0.2", 181 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 182 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 183 | }, 184 | "csscomb": { 185 | "version": "3.1.8", 186 | "resolved": "https://registry.npmjs.org/csscomb/-/csscomb-3.1.8.tgz", 187 | "integrity": "sha1-qKc4iE9Am6817JRhr8UuHHW9I6I=", 188 | "requires": { 189 | "commander": "2.0.0", 190 | "csscomb-core": "3.0.0-3.1", 191 | "gonzales-pe": "3.0.0-28", 192 | "vow": "0.4.4" 193 | } 194 | }, 195 | "csscomb-core": { 196 | "version": "3.0.0-3.1", 197 | "resolved": "https://registry.npmjs.org/csscomb-core/-/csscomb-core-3.0.0-3.1.tgz", 198 | "integrity": "sha1-tBHI18/g3z8v4d+E0b1kpvAEbGg=", 199 | "requires": { 200 | "gonzales-pe": "3.0.0-28", 201 | "minimatch": "0.2.12", 202 | "vow": "0.4.4", 203 | "vow-fs": "0.3.2" 204 | } 205 | }, 206 | "date-now": { 207 | "version": "0.1.4", 208 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", 209 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", 210 | "dev": true 211 | }, 212 | "debug": { 213 | "version": "2.6.8", 214 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 215 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 216 | "dev": true, 217 | "requires": { 218 | "ms": "2.0.0" 219 | } 220 | }, 221 | "diff": { 222 | "version": "3.2.0", 223 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", 224 | "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", 225 | "dev": true 226 | }, 227 | "dom-serializer": { 228 | "version": "0.2.2", 229 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", 230 | "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", 231 | "dev": true, 232 | "requires": { 233 | "domelementtype": "^2.0.1", 234 | "entities": "^2.0.0" 235 | }, 236 | "dependencies": { 237 | "domelementtype": { 238 | "version": "2.0.1", 239 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", 240 | "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", 241 | "dev": true 242 | }, 243 | "entities": { 244 | "version": "2.0.0", 245 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", 246 | "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", 247 | "dev": true 248 | } 249 | } 250 | }, 251 | "domelementtype": { 252 | "version": "1.3.1", 253 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 254 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", 255 | "dev": true 256 | }, 257 | "domhandler": { 258 | "version": "2.3.0", 259 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", 260 | "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", 261 | "dev": true, 262 | "requires": { 263 | "domelementtype": "1" 264 | } 265 | }, 266 | "domutils": { 267 | "version": "1.5.1", 268 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", 269 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 270 | "dev": true, 271 | "requires": { 272 | "dom-serializer": "0", 273 | "domelementtype": "1" 274 | } 275 | }, 276 | "entities": { 277 | "version": "1.0.0", 278 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", 279 | "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", 280 | "dev": true 281 | }, 282 | "escape-string-regexp": { 283 | "version": "1.0.5", 284 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 285 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 286 | "dev": true 287 | }, 288 | "exit": { 289 | "version": "0.1.2", 290 | "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", 291 | "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", 292 | "dev": true 293 | }, 294 | "extend-shallow": { 295 | "version": "1.1.4", 296 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", 297 | "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", 298 | "requires": { 299 | "kind-of": "^1.1.0" 300 | } 301 | }, 302 | "fancy-log": { 303 | "version": "1.3.3", 304 | "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", 305 | "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", 306 | "requires": { 307 | "ansi-gray": "^0.1.1", 308 | "color-support": "^1.1.3", 309 | "parse-node-version": "^1.0.0", 310 | "time-stamp": "^1.0.0" 311 | } 312 | }, 313 | "fs.realpath": { 314 | "version": "1.0.0", 315 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 316 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 317 | "dev": true 318 | }, 319 | "glob": { 320 | "version": "3.2.8", 321 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.8.tgz", 322 | "integrity": "sha1-VQb0MRchvMYYx9jboUQYh1AwcHM=", 323 | "requires": { 324 | "inherits": "2", 325 | "minimatch": "~0.2.11" 326 | } 327 | }, 328 | "gonzales-pe": { 329 | "version": "3.0.0-28", 330 | "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-3.0.0-28.tgz", 331 | "integrity": "sha1-3VC0HdFbaCooxA5fD/IAeQGsYr0=" 332 | }, 333 | "graceful-readlink": { 334 | "version": "1.0.1", 335 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", 336 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", 337 | "dev": true 338 | }, 339 | "growl": { 340 | "version": "1.9.2", 341 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", 342 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", 343 | "dev": true 344 | }, 345 | "has-flag": { 346 | "version": "1.0.0", 347 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 348 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", 349 | "dev": true 350 | }, 351 | "he": { 352 | "version": "1.1.1", 353 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", 354 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", 355 | "dev": true 356 | }, 357 | "htmlparser2": { 358 | "version": "3.8.3", 359 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", 360 | "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", 361 | "dev": true, 362 | "requires": { 363 | "domelementtype": "1", 364 | "domhandler": "2.3", 365 | "domutils": "1.5", 366 | "entities": "1.0", 367 | "readable-stream": "1.1" 368 | }, 369 | "dependencies": { 370 | "isarray": { 371 | "version": "0.0.1", 372 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 373 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 374 | "dev": true 375 | }, 376 | "readable-stream": { 377 | "version": "1.1.14", 378 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 379 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 380 | "dev": true, 381 | "requires": { 382 | "core-util-is": "~1.0.0", 383 | "inherits": "~2.0.1", 384 | "isarray": "0.0.1", 385 | "string_decoder": "~0.10.x" 386 | } 387 | }, 388 | "string_decoder": { 389 | "version": "0.10.31", 390 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 391 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 392 | "dev": true 393 | } 394 | } 395 | }, 396 | "inflight": { 397 | "version": "1.0.6", 398 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 399 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 400 | "dev": true, 401 | "requires": { 402 | "once": "^1.3.0", 403 | "wrappy": "1" 404 | } 405 | }, 406 | "inherits": { 407 | "version": "2.0.4", 408 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 409 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 410 | }, 411 | "isarray": { 412 | "version": "1.0.0", 413 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 414 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 415 | }, 416 | "jshint": { 417 | "version": "2.10.3", 418 | "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.10.3.tgz", 419 | "integrity": "sha512-d8AoXcNNYzmm7cdmulQ3dQApbrPYArtVBO6n4xOICe4QsXGNHCAKDcFORzqP52LhK61KX0VhY39yYzCsNq+bxQ==", 420 | "dev": true, 421 | "requires": { 422 | "cli": "~1.0.0", 423 | "console-browserify": "1.1.x", 424 | "exit": "0.1.x", 425 | "htmlparser2": "3.8.x", 426 | "lodash": "~4.17.11", 427 | "minimatch": "~3.0.2", 428 | "shelljs": "0.3.x", 429 | "strip-json-comments": "1.0.x" 430 | }, 431 | "dependencies": { 432 | "minimatch": { 433 | "version": "3.0.4", 434 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 435 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 436 | "dev": true, 437 | "requires": { 438 | "brace-expansion": "^1.1.7" 439 | } 440 | } 441 | } 442 | }, 443 | "json3": { 444 | "version": "3.3.2", 445 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", 446 | "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", 447 | "dev": true 448 | }, 449 | "kind-of": { 450 | "version": "1.1.0", 451 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", 452 | "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=" 453 | }, 454 | "lodash": { 455 | "version": "4.17.15", 456 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 457 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", 458 | "dev": true 459 | }, 460 | "lodash._baseassign": { 461 | "version": "3.2.0", 462 | "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", 463 | "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", 464 | "dev": true, 465 | "requires": { 466 | "lodash._basecopy": "^3.0.0", 467 | "lodash.keys": "^3.0.0" 468 | } 469 | }, 470 | "lodash._basecopy": { 471 | "version": "3.0.1", 472 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", 473 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", 474 | "dev": true 475 | }, 476 | "lodash._basecreate": { 477 | "version": "3.0.3", 478 | "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", 479 | "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", 480 | "dev": true 481 | }, 482 | "lodash._getnative": { 483 | "version": "3.9.1", 484 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", 485 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", 486 | "dev": true 487 | }, 488 | "lodash._isiterateecall": { 489 | "version": "3.0.9", 490 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", 491 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", 492 | "dev": true 493 | }, 494 | "lodash.create": { 495 | "version": "3.1.1", 496 | "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", 497 | "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", 498 | "dev": true, 499 | "requires": { 500 | "lodash._baseassign": "^3.0.0", 501 | "lodash._basecreate": "^3.0.0", 502 | "lodash._isiterateecall": "^3.0.0" 503 | } 504 | }, 505 | "lodash.isarguments": { 506 | "version": "3.1.0", 507 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 508 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", 509 | "dev": true 510 | }, 511 | "lodash.isarray": { 512 | "version": "3.0.4", 513 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", 514 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", 515 | "dev": true 516 | }, 517 | "lodash.keys": { 518 | "version": "3.1.2", 519 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", 520 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", 521 | "dev": true, 522 | "requires": { 523 | "lodash._getnative": "^3.0.0", 524 | "lodash.isarguments": "^3.0.0", 525 | "lodash.isarray": "^3.0.0" 526 | } 527 | }, 528 | "lru-cache": { 529 | "version": "2.7.3", 530 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", 531 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" 532 | }, 533 | "minimatch": { 534 | "version": "0.2.12", 535 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.12.tgz", 536 | "integrity": "sha1-6oKgEqxmLH3fqhRPHBR+aUb12vs=", 537 | "requires": { 538 | "lru-cache": "2", 539 | "sigmund": "~1.0.0" 540 | } 541 | }, 542 | "minimist": { 543 | "version": "0.0.8", 544 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 545 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 546 | "dev": true 547 | }, 548 | "mkdirp": { 549 | "version": "0.5.1", 550 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 551 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 552 | "dev": true, 553 | "requires": { 554 | "minimist": "0.0.8" 555 | } 556 | }, 557 | "mocha": { 558 | "version": "3.5.3", 559 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", 560 | "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", 561 | "dev": true, 562 | "requires": { 563 | "browser-stdout": "1.3.0", 564 | "commander": "2.9.0", 565 | "debug": "2.6.8", 566 | "diff": "3.2.0", 567 | "escape-string-regexp": "1.0.5", 568 | "glob": "7.1.1", 569 | "growl": "1.9.2", 570 | "he": "1.1.1", 571 | "json3": "3.3.2", 572 | "lodash.create": "3.1.1", 573 | "mkdirp": "0.5.1", 574 | "supports-color": "3.1.2" 575 | }, 576 | "dependencies": { 577 | "commander": { 578 | "version": "2.9.0", 579 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", 580 | "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", 581 | "dev": true, 582 | "requires": { 583 | "graceful-readlink": ">= 1.0.0" 584 | } 585 | }, 586 | "glob": { 587 | "version": "7.1.1", 588 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", 589 | "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", 590 | "dev": true, 591 | "requires": { 592 | "fs.realpath": "^1.0.0", 593 | "inflight": "^1.0.4", 594 | "inherits": "2", 595 | "minimatch": "^3.0.2", 596 | "once": "^1.3.0", 597 | "path-is-absolute": "^1.0.0" 598 | } 599 | }, 600 | "minimatch": { 601 | "version": "3.0.4", 602 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 603 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 604 | "dev": true, 605 | "requires": { 606 | "brace-expansion": "^1.1.7" 607 | } 608 | } 609 | } 610 | }, 611 | "ms": { 612 | "version": "2.0.0", 613 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 614 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 615 | "dev": true 616 | }, 617 | "node-uuid": { 618 | "version": "1.4.0", 619 | "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.0.tgz", 620 | "integrity": "sha1-B/myM3Vy/2J1x3Xh1IUT86RdemU=" 621 | }, 622 | "once": { 623 | "version": "1.4.0", 624 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 625 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 626 | "dev": true, 627 | "requires": { 628 | "wrappy": "1" 629 | } 630 | }, 631 | "parse-node-version": { 632 | "version": "1.0.1", 633 | "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", 634 | "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" 635 | }, 636 | "path-is-absolute": { 637 | "version": "1.0.1", 638 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 639 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 640 | "dev": true 641 | }, 642 | "plugin-error": { 643 | "version": "0.1.2", 644 | "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", 645 | "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", 646 | "requires": { 647 | "ansi-cyan": "^0.1.1", 648 | "ansi-red": "^0.1.1", 649 | "arr-diff": "^1.0.1", 650 | "arr-union": "^2.0.1", 651 | "extend-shallow": "^1.1.2" 652 | } 653 | }, 654 | "process-nextick-args": { 655 | "version": "2.0.1", 656 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 657 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 658 | }, 659 | "readable-stream": { 660 | "version": "2.3.6", 661 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 662 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 663 | "requires": { 664 | "core-util-is": "~1.0.0", 665 | "inherits": "~2.0.3", 666 | "isarray": "~1.0.0", 667 | "process-nextick-args": "~2.0.0", 668 | "safe-buffer": "~5.1.1", 669 | "string_decoder": "~1.1.1", 670 | "util-deprecate": "~1.0.1" 671 | } 672 | }, 673 | "remove-trailing-separator": { 674 | "version": "1.1.0", 675 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 676 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 677 | "dev": true 678 | }, 679 | "replace-ext": { 680 | "version": "1.0.0", 681 | "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", 682 | "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", 683 | "dev": true 684 | }, 685 | "safe-buffer": { 686 | "version": "5.1.2", 687 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 688 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 689 | }, 690 | "shelljs": { 691 | "version": "0.3.0", 692 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", 693 | "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", 694 | "dev": true 695 | }, 696 | "sigmund": { 697 | "version": "1.0.1", 698 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 699 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" 700 | }, 701 | "string_decoder": { 702 | "version": "1.1.1", 703 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 704 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 705 | "requires": { 706 | "safe-buffer": "~5.1.0" 707 | } 708 | }, 709 | "strip-json-comments": { 710 | "version": "1.0.4", 711 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", 712 | "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", 713 | "dev": true 714 | }, 715 | "supports-color": { 716 | "version": "3.1.2", 717 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", 718 | "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", 719 | "dev": true, 720 | "requires": { 721 | "has-flag": "^1.0.0" 722 | } 723 | }, 724 | "through2": { 725 | "version": "2.0.5", 726 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 727 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 728 | "requires": { 729 | "readable-stream": "~2.3.6", 730 | "xtend": "~4.0.1" 731 | } 732 | }, 733 | "time-stamp": { 734 | "version": "1.1.0", 735 | "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", 736 | "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" 737 | }, 738 | "util-deprecate": { 739 | "version": "1.0.2", 740 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 741 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 742 | }, 743 | "vinyl": { 744 | "version": "2.2.0", 745 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", 746 | "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", 747 | "dev": true, 748 | "requires": { 749 | "clone": "^2.1.1", 750 | "clone-buffer": "^1.0.0", 751 | "clone-stats": "^1.0.0", 752 | "cloneable-readable": "^1.0.0", 753 | "remove-trailing-separator": "^1.0.1", 754 | "replace-ext": "^1.0.0" 755 | } 756 | }, 757 | "vow": { 758 | "version": "0.4.4", 759 | "resolved": "https://registry.npmjs.org/vow/-/vow-0.4.4.tgz", 760 | "integrity": "sha1-yf5GCRKdf1qmIVCOvmS1HJW8e5g=" 761 | }, 762 | "vow-fs": { 763 | "version": "0.3.2", 764 | "resolved": "https://registry.npmjs.org/vow-fs/-/vow-fs-0.3.2.tgz", 765 | "integrity": "sha1-6isDTYXh24wnfrLpqG0cFfXTjno=", 766 | "requires": { 767 | "glob": "3.2.8", 768 | "node-uuid": "1.4.0", 769 | "vow": "0.4.4", 770 | "vow-queue": "0.3.1" 771 | } 772 | }, 773 | "vow-queue": { 774 | "version": "0.3.1", 775 | "resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.3.1.tgz", 776 | "integrity": "sha1-WYxRoVsKgabV/AX0dhzrRi3h6Gg=", 777 | "requires": { 778 | "vow": "~0.4.0" 779 | } 780 | }, 781 | "wrappy": { 782 | "version": "1.0.2", 783 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 784 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 785 | "dev": true 786 | }, 787 | "xtend": { 788 | "version": "4.0.2", 789 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 790 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 791 | } 792 | } 793 | } 794 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gulp-csscomb", 3 | "description": "CSScomb is a coding style formatter for CSS.", 4 | "version": "3.1.0", 5 | "homepage": "http://github.com/koistya/gulp-csscomb", 6 | "repository": { 7 | "type": "git", 8 | "url": "http://github.com/koistya/gulp-csscomb.git" 9 | }, 10 | "bugs": { 11 | "url": "https://github.com/koistya/gulp-csscomb/issues" 12 | }, 13 | "author": "Konstantin Tarkus (@koistya)", 14 | "license": "MIT", 15 | "keywords": [ 16 | "gulpplugin", 17 | "css", 18 | "csscomb", 19 | "lint", 20 | "linter", 21 | "preprocessor" 22 | ], 23 | "main": "./index.js", 24 | "files": [ 25 | "index.js" 26 | ], 27 | "dependencies": { 28 | "ansi-colors": "^1.0.1", 29 | "csscomb": "^3.1.7", 30 | "fancy-log": "^1.3.2", 31 | "plugin-error": "^0.1.2", 32 | "through2": "^2.0.1" 33 | }, 34 | "devDependencies": { 35 | "jshint": "^2.9.3", 36 | "mocha": "^3.0.2", 37 | "vinyl": "^2.1.0" 38 | }, 39 | "engines": { 40 | "node": ">= 0.9.0" 41 | }, 42 | "scripts": { 43 | "test": "jshint index.js test.js && mocha" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * gulp-csscomb | https://github.com/koistya/gulp-csscomb 3 | * Copyright (c) Konstantin Tarkus (@koistya). See LICENSE.txt 4 | */ 5 | 6 | /* global describe, it */ 7 | 8 | 'use strict'; 9 | 10 | var assert = require('assert'); 11 | var Vinyl = require('vinyl'); 12 | var csscomb = require('./index'); 13 | 14 | var cssinput = 'h1 { color: yellow; } \n h1 { font-size: 2em; }'; 15 | var cssoutput = 'h1\n{\n color: yellow;\n}\nh1\n{\n font-size: 2em;\n}\n'; 16 | 17 | describe('gulp-csscomb', function() { 18 | it('should format CSS coding style', function (cb) { 19 | 20 | var stream = csscomb(); 21 | 22 | stream.once('data', function(file) { 23 | 24 | // make sure it came out the same way it went in 25 | assert(file.isStream); 26 | 27 | // check the contents 28 | assert.equal(String(file.contents), cssoutput); 29 | 30 | cb(); 31 | }); 32 | 33 | stream.write(new Vinyl({ 34 | path: 'style.css', 35 | contents: new Buffer(cssinput) 36 | })); 37 | }); 38 | }); 39 | --------------------------------------------------------------------------------