summaryrefslogtreecommitdiff
path: root/node_modules/doiuse/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/doiuse/README.md')
-rw-r--r--node_modules/doiuse/README.md172
1 files changed, 172 insertions, 0 deletions
diff --git a/node_modules/doiuse/README.md b/node_modules/doiuse/README.md
new file mode 100644
index 00000000..0964c18c
--- /dev/null
+++ b/node_modules/doiuse/README.md
@@ -0,0 +1,172 @@
+[![Build Status](https://travis-ci.org/anandthakker/doiuse.svg?branch=master)](https://travis-ci.org/anandthakker/doiuse)
+[![Release Notes](https://release-notes.com/badges/v2.svg)](https://release-notes.com/@open-source-community/anandthakker-doiuse)
+
+# doiuse
+
+Lint CSS for browser support against [Can I use](http://caniuse.com) database.
+
+## Install
+
+```sh
+npm install -g doiuse
+```
+
+## Usage Examples
+
+### Command Line
+
+```bash
+doiuse --browsers "ie >= 9, > 1%, last 2 versions" main.css
+# or
+cat main.css | doiuse --browsers "ie >= 9, > 1%, last 2 versions"
+```
+
+**Sample output:**
+```
+/projects/website/main.css:5:3: CSS3 Box-sizing not supported by: IE (8,9,10,11), Chrome (36,37,38), Safari (8,7.1), Opera (24,25), iOS Safari (8,7.1,8.1), Android Browser (4.1,4.4,4.4.4), IE Mobile (10,11)
+/projects/website/main.css:6:3: CSS3 Box-sizing not supported by: IE (8,9,10,11), Chrome (36,37,38), Safari (8,7.1), Opera (24,25), iOS Safari (8,7.1,8.1), Android Browser (4.1,4.4,4.4.4), IE Mobile (10,11)
+/projects/website/main.css:8:3: CSS user-select: none not supported by: IE (8,9)
+/projects/website/main.css:9:3: CSS user-select: none not supported by: IE (8,9)
+/projects/website/main.css:10:3: CSS user-select: none not supported by: IE (8,9)
+/projects/website/main.css:11:3: CSS user-select: none not supported by: IE (8,9)
+/projects/website/main.css:12:3: CSS user-select: none not supported by: IE (8,9)
+/projects/website/main.css:13:3: Pointer events not supported by: IE (8,9,10), Firefox (32,33), Chrome (36,37,38), Safari (8,7.1), Opera (24,25), iOS Safari (8,7.1,8.1), Android Browser (4.1,4.4,4.4.4), IE Mobile (10)
+/projects/website/main.css:14:3: Pointer events not supported by: IE (8,9,10), Firefox (32,33), Chrome (36,37,38), Safari (8,7.1), Opera (24,25), iOS Safari (8,7.1,8.1), Android Browser (4.1,4.4,4.4.4), IE Mobile (10)
+/projects/website/main.css:32:3: CSS3 Transforms not supported by: IE (8)
+```
+
+Use `--json` to get output as (newline-delimited) JSON objects.
+
+### JS
+
+```javascript
+import postcss from 'postcss';
+import DoIUse from 'doiuse/lib/DoIUse.js';
+
+postcss(new DoIUse({
+ browsers:['ie >= 6', '> 1%'],
+ ignore: ['rem'], // an optional array of features to ignore
+ ignoreFiles: ['**/normalize.css'], // an optional array of file globs to match against original source file path, to ignore
+ onFeatureUsage: (usageInfo) => {
+ console.log(usageInfo.message);
+ }
+})).process("a { background-size: cover; }")
+```
+
+CommonJS syntax is still supported if using `var doiuse = require('doiuse')`.
+
+### Gulp (CommonJS)
+
+```javascript
+var gulp = require('gulp')
+var postcss = require('postcss')
+var doiuse = require('doiuse')
+
+gulp.src(src, { cwd: process.cwd() })
+.pipe(gulp.postcss([
+ doiuse({
+ browsers: [
+ 'ie >= 8',
+ '> 1%'
+ ],
+ ignore: ['rem'], // an optional array of features to ignore
+ ignoreFiles: ['**/normalize.css'], // an optional array of file globs to match against original source file path, to ignore
+ onFeatureUsage: function (usageInfo) {
+ console.log(usageInfo.message)
+ }
+ })
+]))
+```
+
+## How it works
+
+In particular, the approach to detecting features usage is currently quite naive.
+
+<a name="features-list"></a>Refer to the data in [/data/features.js](data/features.js).
+
+- If a feature in that dataset only specifies `properties`, we just use those
+ properties for regex/substring matches against the properties used in the input CSS.
+- If a feature also specifies `values`, then we also require that the associated
+ value matches one of those values.
+
+## API Details
+
+### As a transform stream
+
+```javascript
+var doiuse = require('doiuse/stream');
+
+process.stdin
+ .pipe(doiuse({ browsers: ['ie >= 8', '> 1%'], ignore: ['rem'] }))
+ .on('data', function (usageInfo) {
+ console.log(JSON.stringify(usageInfo))
+ })
+```
+
+Yields `UsageInfo` objects as described below.
+
+### As a postcss plugin
+
+`postcss(new DoIUse(opts)).process(css)`, where `opts` is:
+```javascript
+{
+ browsers: ['ie >= 8', '> 1%'], // an autoprefixer-like array of browsers.
+ ignore: ['rem'], // an optional array of features to ignore
+ ignoreFiles: ['**/normalize.css'], // an optional array of file globs to match against original source file path, to ignore
+ onFeatureUsage: function(usageInfo) { } // a callback for usages of features not supported by the selected browsers
+}
+```
+
+And `usageInfo` looks like this:
+
+```javascript
+{
+ message: '<input source>: line <l>, col <c> - CSS3 Gradients not supported by: IE (8)',
+ feature: 'css-gradients', // slug identifying a caniuse-db feature
+ featureData: {
+ title: 'CSS Gradients',
+ missing: "IE (8)", // string of browsers missing support for this feature.
+ missingData: {
+ // map of browser -> version -> (lack of)support code
+ ie: { '8': 'n' }
+ },
+ caniuseData: { // data from caniuse-db/features-json/[feature].json }
+ },
+ usage: {} //the postcss node where that feature is being used.
+}
+```
+
+Called once for each usage of each css feature not supported by the selected browsers.
+
+### Ignoring file-specific rules
+
+For disabling some checks you can use just-in-place comments
+
+##### `/* doiuse-disable */`
+
+Disables checks of _all [features](#features-list)_
+
+##### `/* doiuse-disable feature */`
+
+Disables checks of _specified [feature(s)](#features-list)_ (can be comma separated list)
+
+##### `/* doiuse-enable */`
+
+Re-enables checks of _all [features](#features-list)_
+
+##### `/* doiuse-enable feature */`
+
+Enables checks of _specified [feature(s)](#features-list)_ (can be comma separated list)
+ - for following lines in file
+
+## [Contributing](CONTRIBUTING.md)
+
+doiuse is an [OPEN Open Source](http://openopensource.org/) Project.
+
+This means that individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project.
+
+## License
+
+MIT
+
+**NOTE:** Many of the files in test/cases are from autoprefixer-core, Copyright 2013 Andrey Sitnik <andrey@sitnik.ru>. Please see https://github.com/postcss/autoprefixer-core.