diff --git a/README.md b/README.md index b63da15d..90224d37 100644 --- a/README.md +++ b/README.md @@ -54,22 +54,13 @@ postcss({ ### With Sass/Stylus/Less -First add relevant dependency: +Install corresponding dependency: -```bash -yarn add node-sass --dev -# Now you can import `.sass` and `.scss` files in your library -``` +- For `Sass` install `node-sass`: `yarn add node-sass --dev` +- For `Stylus` Install `stylus`: `yarn add stylus --dev` +- For `Less` Install `less`: `yarn add less --dev` -Then enable it in the plugin: - -```js -postcss({ - use: [ - ['sass', {/* optional sass options */}] - ] -}) -``` +That's it, you can now import `.styl` `.scss` `.sass` `.less` files in your library. ## Options @@ -187,7 +178,8 @@ Type: `object` ### use -Type: `name[]` `[name, options][]` +Type: `name[]` `[name, options][]`
+Default: `['sass', 'stylus', 'less']` Use a loader, currently built-in loaders are: @@ -201,7 +193,7 @@ They are executed from right to left. Type: `Loader[]` -An array of custom loaders. +An array of custom loaders, check out our [sass-loader](./src/sass-loader) as example. ```js interface Loader { diff --git a/package.json b/package.json index 2717c4b9..a28f2ecc 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,10 @@ "bili": "^1.0.0", "eslint-config-rem": "^4.0.0", "jest": "^22.0.4", + "less": "^2.7.3", "node-sass": "^4.7.2", "rollup": "^0.53.3", + "stylus": "^0.54.5", "sugarss": "^1.0.1", "xo": "^0.18.2" }, @@ -74,4 +76,4 @@ ] ] } -} \ No newline at end of file +} diff --git a/src/index.js b/src/index.js index d670d87f..5cca69de 100644 --- a/src/index.js +++ b/src/index.js @@ -40,7 +40,7 @@ export default (options = {}) => { exec: options.exec } } - let use = options.use || [] + let use = options.use || ['sass', 'stylus', 'less'] use.unshift(['postcss', postcssLoaderOptions]) use = use.reduce((res, rule) => { if (typeof rule === 'string') { diff --git a/src/less-loader.js b/src/less-loader.js new file mode 100644 index 00000000..aa53b411 --- /dev/null +++ b/src/less-loader.js @@ -0,0 +1,19 @@ +import pify from 'pify' +import { localRequire } from './utils' + +export default { + name: 'less', + test: /\.less$/, + async process({ code }) { + const less = localRequire('less') + + const { css, map } = await pify(less.render.bind(less))(code, { + sourceMap: this.sourceMap && {} + }) + + return { + code: css, + map + } + } +} diff --git a/src/loaders.js b/src/loaders.js index ed51a59e..d808a36a 100644 --- a/src/loaders.js +++ b/src/loaders.js @@ -1,6 +1,8 @@ import series from 'promise.series' import postcssLoader from './postcss-loader' import sassLoader from './sass-loader' +import stylusLoader from './stylus-loader' +import lessLoader from './less-loader' export default class Loaders { constructor(options = {}) { @@ -9,6 +11,8 @@ export default class Loaders { this.registerLoader(postcssLoader) this.registerLoader(sassLoader) + this.registerLoader(stylusLoader) + this.registerLoader(lessLoader) if (options.loaders) { options.loaders.forEach(loader => this.registerLoader(loader)) } diff --git a/src/stylus-loader.js b/src/stylus-loader.js new file mode 100644 index 00000000..0e12e317 --- /dev/null +++ b/src/stylus-loader.js @@ -0,0 +1,20 @@ +import pify from 'pify' +import { localRequire } from './utils' + +export default { + name: 'stylus', + test: /\.(styl|stylus)$/, + async process({ code }) { + const stylus = localRequire('stylus') + + const style = stylus(code) + .set('filename', this.id) + .set('sourcemap', this.sourceMap && {}) + + const css = await pify(style.render.bind(style))() + return { + code: css, + map: style.sourcemap + } + } +} diff --git a/test/__snapshots__/index.test.js.snap b/test/__snapshots__/index.test.js.snap index 4a48377d..5827fb5f 100644 --- a/test/__snapshots__/index.test.js.snap +++ b/test/__snapshots__/index.test.js.snap @@ -8,6 +8,19 @@ exports[`extract: css code 1`] = ` .bar { color: red; } + +body { + color: #f00; + background: #f00; +} + +#sidebar { + width: 30%; + background-color: #faa; } + +#header { + color: #6c94be; +} " `; @@ -27,7 +40,21 @@ exports[`extract::sourcemap:inline: css code 1`] = ` color: red; } -/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZml4dHVyZXMvZGlzdC9leHRyYWN0Ojpzb3VyY2VtYXA6aW5saW5lL2Zvby5jc3MiLCJ0ZXN0L2ZpeHR1cmVzL2Rpc3QvZXh0cmFjdDo6c291cmNlbWFwOmlubGluZS9iYXIuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVztDQUNaOztBQ0ZEO0VBQ0UsV0FBVztDQUNaIiwiZmlsZSI6InRlc3QvZml4dHVyZXMvZGlzdC9leHRyYWN0Ojpzb3VyY2VtYXA6aW5saW5lL2J1bmRsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJib2R5IHtcbiAgY29sb3I6IHJlZDtcbn1cbiIsIi5iYXIge1xuICBjb2xvcjogcmVkO1xufVxuIl19*/" +body { + color: #f00; + background: #f00; +} +/*# sourceMappingURL=test/fixtures/simple/style.css.map */ +#sidebar { + width: 30%; + background-color: #faa; } + +/*# sourceMappingURL=../../../inline */ +#header { + color: #6c94be; +} + +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZml4dHVyZXMvZGlzdC9leHRyYWN0Ojpzb3VyY2VtYXA6aW5saW5lL2Zvby5jc3MiLCJ0ZXN0L2ZpeHR1cmVzL2Rpc3QvZXh0cmFjdDo6c291cmNlbWFwOmlubGluZS9iYXIuY3NzIiwidGVzdC9maXh0dXJlcy9kaXN0L2V4dHJhY3Q6OnNvdXJjZW1hcDppbmxpbmUvdGVzdC9maXh0dXJlcy9zaW1wbGUvc3R5bGUuc3R5bCIsInRlc3QvZml4dHVyZXMvZGlzdC9leHRyYWN0Ojpzb3VyY2VtYXA6aW5saW5lL3N0eWxlLnN0eWwiLCJ0ZXN0L2ZpeHR1cmVzL2Rpc3QvZXh0cmFjdDo6c291cmNlbWFwOmlubGluZS90ZXN0L2ZpeHR1cmVzL3NpbXBsZS9zdHlsZS5zYXNzIiwidGVzdC9maXh0dXJlcy9kaXN0L2V4dHJhY3Q6OnNvdXJjZW1hcDppbmxpbmUvc3R5bGUuc2FzcyIsInRlc3QvZml4dHVyZXMvZGlzdC9leHRyYWN0Ojpzb3VyY2VtYXA6aW5saW5lL2lucHV0IiwidGVzdC9maXh0dXJlcy9kaXN0L2V4dHJhY3Q6OnNvdXJjZW1hcDppbmxpbmUvc3R5bGUubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFdBQVc7Q0FDWjs7QUNGRDtFQUNFLFdBQVc7Q0FDWjs7QUNGRDtFQUNFLFlBQUE7RUFDQSxpQkFBQTtDQ0NEO0FBQ0QsMERBQTBEO0FDSjFEO0VBQ0UsV0FBVTtFQUNWLHVCQUFzQixFQUFJOztBQ0U1Qix1Q0FBdUM7QUNEdkM7RUFDRSxlQUFBO0NDRkQiLCJmaWxlIjoidGVzdC9maXh0dXJlcy9kaXN0L2V4dHJhY3Q6OnNvdXJjZW1hcDppbmxpbmUvYnVuZGxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbImJvZHkge1xuICBjb2xvcjogcmVkO1xufVxuIiwiLmJhciB7XG4gIGNvbG9yOiByZWQ7XG59XG4iLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXX0=*/" `; exports[`extract::sourcemap:inline: js code 1`] = ` @@ -46,10 +73,23 @@ exports[`extract::sourcemap:true: css code 1`] = ` color: red; } +body { + color: #f00; + background: #f00; +} +/*# sourceMappingURL=test/fixtures/simple/style.css.map */ +#sidebar { + width: 30%; + background-color: #faa; } + +#header { + color: #6c94be; +} + /*# sourceMappingURL=bundle.css.map */" `; -exports[`extract::sourcemap:true: css map 1`] = `"{\\"version\\":3,\\"sources\\":[\\"test/fixtures/dist/extract::sourcemap:true/foo.css\\",\\"test/fixtures/dist/extract::sourcemap:true/bar.css\\"],\\"names\\":[],\\"mappings\\":\\"AAAA;EACE,WAAW;CACZ;;ACFD;EACE,WAAW;CACZ\\",\\"file\\":\\"test/fixtures/dist/extract::sourcemap:true/bundle.css\\",\\"sourcesContent\\":[\\"body {\\\\n color: red;\\\\n}\\\\n\\",\\".bar {\\\\n color: red;\\\\n}\\\\n\\"]}"`; +exports[`extract::sourcemap:true: css map 1`] = `"{\\"version\\":3,\\"sources\\":[\\"test/fixtures/dist/extract::sourcemap:true/foo.css\\",\\"test/fixtures/dist/extract::sourcemap:true/bar.css\\",\\"test/fixtures/dist/extract::sourcemap:true/test/fixtures/simple/style.styl\\",\\"test/fixtures/dist/extract::sourcemap:true/style.styl\\",\\"test/fixtures/dist/extract::sourcemap:true/style.sass\\",\\"test/fixtures/dist/extract::sourcemap:true/input\\",\\"test/fixtures/dist/extract::sourcemap:true/style.less\\"],\\"names\\":[],\\"mappings\\":\\"AAAA;EACE,WAAW;CACZ;;ACFD;EACE,WAAW;CACZ;;ACFD;EACE,YAAA;EACA,iBAAA;CCCD;AACD,0DAA0D;ACJ1D;EACE,WAAW;EACX,uBAAuB,EAAE;;ACC3B;EACE,eAAA;CCFD\\",\\"file\\":\\"test/fixtures/dist/extract::sourcemap:true/bundle.css\\",\\"sourcesContent\\":[\\"body {\\\\n color: red;\\\\n}\\\\n\\",\\".bar {\\\\n color: red;\\\\n}\\\\n\\",null,null,\\"#sidebar {\\\\n width: 30%;\\\\n background-color: #faa; }\\\\n\\",null,null]}"`; exports[`extract::sourcemap:true: js code 1`] = ` "'use strict'; @@ -105,13 +145,25 @@ __$$styleInject(css,{\\"insertAt\\":\\"top\\"}); var css$1 = \\".bar {\\\\n color: red;\\\\n}\\\\n\\"; __$$styleInject(css$1,{\\"insertAt\\":\\"top\\"}); +var css$2 = \\"body {\\\\n color: #f00;\\\\n background: #f00;\\\\n}\\\\n\\"; +__$$styleInject(css$2,{\\"insertAt\\":\\"top\\"}); + +var css$4 = \\"#sidebar {\\\\n width: 30%;\\\\n background-color: #faa; }\\\\n\\"; +__$$styleInject(css$4,{\\"insertAt\\":\\"top\\"}); + +var css$6 = \\"#header {\\\\n color: #6c94be;\\\\n}\\\\n\\"; +__$$styleInject(css$6,{\\"insertAt\\":\\"top\\"}); + console.log(css, css$1); " `; exports[`minimize:extract: css code 1`] = ` "body{color:red} -.bar{color:red}" +.bar{color:red} +body{color:red;background:red} +#sidebar{width:30%;background-color:#faa} +#header{color:#6c94be}" `; exports[`minimize:extract: js code 1`] = ` @@ -157,6 +209,15 @@ __$$styleInject(css); var css$1 = \\".bar{color:red}\\"; __$$styleInject(css$1); +var css$2 = \\"body{color:red;background:red}\\"; +__$$styleInject(css$2); + +var css$4 = \\"#sidebar{width:30%;background-color:#faa}\\"; +__$$styleInject(css$4); + +var css$6 = \\"#header{color:#6c94be}\\"; +__$$styleInject(css$6); + console.log(css, css$1); " `; @@ -475,6 +536,15 @@ __$$styleInject(css); var css$1 = \\".bar {\\\\n color: red;\\\\n}\\\\n\\"; __$$styleInject(css$1); +var css$2 = \\"body {\\\\n color: #f00;\\\\n background: #f00;\\\\n}\\\\n\\"; +__$$styleInject(css$2); + +var css$4 = \\"#sidebar {\\\\n width: 30%;\\\\n background-color: #faa; }\\\\n\\"; +__$$styleInject(css$4); + +var css$6 = \\"#header {\\\\n color: #6c94be;\\\\n}\\\\n\\"; +__$$styleInject(css$6); + console.log(css, css$1); " `; @@ -511,11 +581,6 @@ function __$$styleInject(css, ref) { var css = \\"body {\\\\n color: red;\\\\n}\\\\n\\"; __$$styleInject(css); - -var css$1 = \\".bar {\\\\n color: red;\\\\n}\\\\n\\"; -__$$styleInject(css$1); - -console.log(css, css$1); " `; @@ -555,6 +620,15 @@ __$$styleInject(css); var css$1 = \\".bar {\\\\n color: red;\\\\n}\\\\n\\\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJhci5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxXQUFXO0NBQ1oiLCJmaWxlIjoiYmFyLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5iYXIge1xuICBjb2xvcjogcmVkO1xufVxuIl19 */\\"; __$$styleInject(css$1); +var css$2 = \\"body {\\\\n color: #f00;\\\\n background: #f00;\\\\n}\\\\n/*# sourceMappingURL=test/fixtures/simple/style.css.map */\\\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZml4dHVyZXMvc2ltcGxlL3N0eWxlLnN0eWwiLCJzdHlsZS5zdHlsIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsWUFBQTtFQUNBLGlCQUFBO0NDQ0Q7QUFDRCwwREFBMEQiLCJmaWxlIjoic3R5bGUuc3R5bCJ9 */\\"; +__$$styleInject(css$2); + +var css$4 = \\"#sidebar {\\\\n width: 30%;\\\\n background-color: #faa; }\\\\n\\\\n/*# sourceMappingURL=../../../inline */\\\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZml4dHVyZXMvc2ltcGxlL3N0eWxlLnNhc3MiLCJzdHlsZS5zYXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVTtFQUNWLHVCQUFzQixFQUFJOztBQ0U1Qix1Q0FBdUMiLCJmaWxlIjoic3R5bGUuc2FzcyJ9 */\\"; +__$$styleInject(css$4); + +var css$6 = \\"#header {\\\\n color: #6c94be;\\\\n}\\\\n\\\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0Iiwic3R5bGUubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNFLGVBQUE7Q0NGRCIsImZpbGUiOiJzdHlsZS5sZXNzIn0= */\\"; +__$$styleInject(css$6); + console.log(css, css$1); " `; @@ -595,6 +669,15 @@ __$$styleInject(css); var css$1 = \\".bar {\\\\n color: red;\\\\n}\\\\n\\\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJhci5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxXQUFXO0NBQ1oiLCJmaWxlIjoiYmFyLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5iYXIge1xuICBjb2xvcjogcmVkO1xufVxuIl19 */\\"; __$$styleInject(css$1); +var css$2 = \\"body {\\\\n color: #f00;\\\\n background: #f00;\\\\n}\\\\n/*# sourceMappingURL=test/fixtures/simple/style.css.map */\\\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZml4dHVyZXMvc2ltcGxlL3N0eWxlLnN0eWwiLCJzdHlsZS5zdHlsIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsWUFBQTtFQUNBLGlCQUFBO0NDQ0Q7QUFDRCwwREFBMEQiLCJmaWxlIjoic3R5bGUuc3R5bCJ9 */\\"; +__$$styleInject(css$2); + +var css$4 = \\"#sidebar {\\\\n width: 30%;\\\\n background-color: #faa; }\\\\n\\\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLnNhc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxXQUFXO0VBQ1gsdUJBQXVCLEVBQUUiLCJmaWxlIjoic3R5bGUuc2FzcyIsInNvdXJjZXNDb250ZW50IjpbIiNzaWRlYmFyIHtcbiAgd2lkdGg6IDMwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhYTsgfVxuIl19 */\\"; +__$$styleInject(css$4); + +var css$6 = \\"#header {\\\\n color: #6c94be;\\\\n}\\\\n\\\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0Iiwic3R5bGUubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNFLGVBQUE7Q0NGRCIsImZpbGUiOiJzdHlsZS5sZXNzIn0= */\\"; +__$$styleInject(css$6); + console.log(css, css$1); " `; diff --git a/test/fixtures/simple/index.js b/test/fixtures/simple/index.js index cfc3c605..4527d4f2 100644 --- a/test/fixtures/simple/index.js +++ b/test/fixtures/simple/index.js @@ -1,4 +1,7 @@ import foo from './foo.css' import bar from './bar.css' +import './style.styl' +import './style.sass' +import './style.less' console.log(foo, bar) diff --git a/test/fixtures/simple/style.less b/test/fixtures/simple/style.less new file mode 100644 index 00000000..5f3c9f00 --- /dev/null +++ b/test/fixtures/simple/style.less @@ -0,0 +1,6 @@ +@nice-blue: #5B83AD; +@light-blue: @nice-blue + #111; + +#header { + color: @light-blue; +} diff --git a/test/fixtures/simple/style.sass b/test/fixtures/simple/style.sass new file mode 100644 index 00000000..8a4cec5e --- /dev/null +++ b/test/fixtures/simple/style.sass @@ -0,0 +1,3 @@ +#sidebar + width: 30% + background-color: #faa diff --git a/test/fixtures/simple/style.styl b/test/fixtures/simple/style.styl new file mode 100644 index 00000000..6fe038bd --- /dev/null +++ b/test/fixtures/simple/style.styl @@ -0,0 +1,3 @@ +body + color: red + background: @color diff --git a/test/fixtures/skip-loader/index.js b/test/fixtures/skip-loader/index.js new file mode 100644 index 00000000..cab743ad --- /dev/null +++ b/test/fixtures/skip-loader/index.js @@ -0,0 +1 @@ +import './style.css' diff --git a/test/fixtures/skip-loader/style.css b/test/fixtures/skip-loader/style.css new file mode 100644 index 00000000..60f1eab9 --- /dev/null +++ b/test/fixtures/skip-loader/style.css @@ -0,0 +1,3 @@ +body { + color: red; +} diff --git a/test/index.test.js b/test/index.test.js index 0cad8c9c..4e1b2409 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -181,22 +181,14 @@ snapshot({ snapshot({ title: 'sass', - input: 'sass/index.js', - options: { - use: [ - 'sass' - ] - } + input: 'sass/index.js' }) snapshot({ title: 'sass:sourcemap', input: 'sass/index.js', options: { - sourceMap: true, - use: [ - 'sass' - ] + sourceMap: true } }) @@ -209,16 +201,13 @@ snapshot({ title: 'sass:modules', input: 'sass-modules/index.js', options: { - modules: true, - use: [ - 'sass' - ] + modules: true } }) snapshot({ title: 'skip-loader', - input: 'simple/index.js', + input: 'skip-loader/index.js', options: { use: ['loader'], loaders: [ diff --git a/yarn.lock b/yarn.lock index 8b04b017..6cb63fd2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -194,6 +194,10 @@ arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -1423,6 +1427,10 @@ css-modules-loader-core@^1.1.0: postcss-modules-scope "1.1.0" postcss-modules-values "1.3.0" +css-parse@1.7.x: + version "1.7.0" + resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" + css-selector-tokenizer@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" @@ -1507,15 +1515,15 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -debug@^2.1.1, debug@^2.2.0, debug@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" +debug@*, debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" -debug@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" +debug@^2.1.1, debug@^2.2.0, debug@^2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" dependencies: ms "2.0.0" @@ -1671,6 +1679,12 @@ enhance-visitors@^1.0.0: dependencies: lodash "^4.13.1" +errno@^0.1.1: + version "0.1.6" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.6.tgz#c386ce8a6283f14fc09563b71560908c9bf53026" + dependencies: + prr "~1.0.1" + error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" @@ -2306,6 +2320,17 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob@7.0.x: + version "7.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" @@ -2550,6 +2575,10 @@ ignore@^3.3.5: version "3.3.7" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" @@ -3367,6 +3396,19 @@ left-pad@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee" +less@^2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/less/-/less-2.7.3.tgz#cc1260f51c900a9ec0d91fb6998139e02507b63b" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.2.11" + mkdirp "^0.5.0" + promise "^7.1.1" + request "2.81.0" + source-map "^0.5.3" + leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" @@ -3605,6 +3647,10 @@ mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.7: dependencies: mime-db "~1.30.0" +mime@^1.2.11: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" @@ -3634,7 +3680,7 @@ minimost@^1.0.0: camelcase-keys "^4.0.0" minimist "^1.2.0" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -4403,10 +4449,20 @@ promise.series@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + proto-props@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/proto-props/-/proto-props-0.2.1.tgz#5e01dc2675a0de9abfa76e799dfa334d6f483f4b" +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -4969,6 +5025,10 @@ sass-graph@^2.2.4: scss-tokenizer "^0.2.3" yargs "^7.0.0" +sax@0.5.x: + version "0.5.8" + resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" + sax@^1.2.1, sax@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -5062,6 +5122,12 @@ source-map-support@^0.5.0: dependencies: source-map "^0.6.0" +source-map@0.1.x: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + source-map@^0.4.2, source-map@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" @@ -5214,6 +5280,17 @@ style-inject@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.2.0.tgz#a13fba17a11fe9f91d6bfc3732df7692501199cb" +stylus@^0.54.5: + version "0.54.5" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" + dependencies: + css-parse "1.7.x" + debug "*" + glob "7.0.x" + mkdirp "0.5.x" + sax "0.5.x" + source-map "0.1.x" + sugarss@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-1.0.1.tgz#be826d9003e0f247735f92365dc3fd7f1bae9e44"