diff --git a/lib/builder/builder.js b/lib/builder/builder.js index eb891f9858..8db1a6dc73 100644 --- a/lib/builder/builder.js +++ b/lib/builder/builder.js @@ -15,6 +15,9 @@ import Debug from 'debug' import Glob from 'glob' import clientWebpackConfig from './webpack/client.config.js' import serverWebpackConfig from './webpack/server.config.js' +import autoprefixer from 'autoprefixer' +import vueLoaderConfig from './webpack/vue-loader.config' +import styleLoader from './webpack/style-loader' const debug = Debug('nuxt:build') debug.color = 2 // Force green color @@ -48,6 +51,28 @@ export default class Builder extends Tapable { // Helper to resolve build paths this.relativeToBuild = (...args) => relativeTo(this.options.buildDir, ...args) + // Enable autoprefixer if both autoprefixer postcss are enabled + if (this.options.build.autoprefixer && this.options.build.postcss) { + const plugin = autoprefixer(this.options.build.autoprefixer) + const plugins = this.options.build.postcss.plugins || this.options.build.postcss + if (Array.isArray(plugins)) { + plugins.push(plugin) + } + } + + // Bind styleLoader and vueLoader + this.styleLoader = styleLoader.bind(this) + this.vueLoader = vueLoaderConfig.bind(this) + + // Babel options + this.babelOptions = _.defaults(this.options.build.babel, { + presets: [ + require.resolve('babel-preset-vue-app') + ], + babelrc: false, + cacheDirectory: !!this.options.dev + }) + this._buildStatus = STATUS.INITIAL } diff --git a/lib/builder/webpack/base.config.js b/lib/builder/webpack/base.config.js index c715f59922..5463848080 100644 --- a/lib/builder/webpack/base.config.js +++ b/lib/builder/webpack/base.config.js @@ -1,11 +1,8 @@ import ExtractTextPlugin from 'extract-text-webpack-plugin' -import { defaults, cloneDeep } from 'lodash' +import { cloneDeep } from 'lodash' import { join, resolve } from 'path' import webpack from 'webpack' import { isUrl, urlJoin } from 'utils' -import autoprefixer from 'autoprefixer' -import vueLoaderConfig from './vue-loader.config' -import { styleLoader, extractStyles } from './helpers' /* |-------------------------------------------------------------------------- @@ -18,11 +15,6 @@ import { styleLoader, extractStyles } from './helpers' export default function webpackBaseConfig ({ isClient, isServer }) { const nodeModulesDir = join(__dirname, '..', 'node_modules') - // Enable autoprefixer if both autoprefixer postcss are enabled - if (this.options.build.autoprefixer && Array.isArray(this.options.build.postcss)) { - this.options.build.postcss.push(autoprefixer(this.options.build.autoprefixer)) - } - const config = { devtool: this.options.dev ? 'cheap-module-source-map' : 'nosources-source-map', entry: { @@ -66,32 +58,28 @@ export default function webpackBaseConfig ({ isClient, isServer }) { ] }, module: { - noParse: /es6-promise\.js$/, // avoid webpack shimming process + noParse: /es6-promise\.js$/, // Avoid webpack shimming process rules: [ { test: /\.vue$/, loader: 'vue-loader', - query: vueLoaderConfig.call(this, { isClient, isServer }) + options: this.vueLoader({ isClient, isServer }) }, { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/, - query: defaults(this.options.build.babel, { - presets: [require.resolve('babel-preset-vue-app')], - babelrc: false, - cacheDirectory: !!this.options.dev - }) + options: Object.assign({}, this.babelOptions) }, - { test: /\.css$/, use: styleLoader.call(this, 'css') }, - { test: /\.less$/, use: styleLoader.call(this, 'less', 'less-loader') }, - { test: /\.sass$/, use: styleLoader.call(this, 'sass', 'sass-loader?indentedSyntax&sourceMap') }, - { test: /\.scss$/, use: styleLoader.call(this, 'sass', 'sass-loader?sourceMap') }, - { test: /\.styl(us)?$/, use: styleLoader.call(this, 'stylus', 'stylus-loader') }, + { test: /\.css$/, use: this.styleLoader('css') }, + { test: /\.less$/, use: this.styleLoader('less', 'less-loader') }, + { test: /\.sass$/, use: this.styleLoader('sass', 'sass-loader?indentedSyntax') }, + { test: /\.scss$/, use: this.styleLoader('scss', 'sass-loader') }, + { test: /\.styl(us)?$/, use: this.styleLoader('stylus', 'stylus-loader') }, { test: /\.(png|jpe?g|gif|svg)$/, loader: 'url-loader', - query: { + options: { limit: 1000, // 1KO name: 'img/[name].[hash:7].[ext]' } @@ -99,15 +87,15 @@ export default function webpackBaseConfig ({ isClient, isServer }) { { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, loader: 'url-loader', - query: { + options: { limit: 1000, // 1 KO name: 'fonts/[name].[hash:7].[ext]' } }, { test: /\.(webm|mp4)$/, - loader: 'file', - query: { + loader: 'file-loader', + options: { name: 'videos/[name].[hash:7].[ext]' } } @@ -117,10 +105,10 @@ export default function webpackBaseConfig ({ isClient, isServer }) { } // CSS extraction - if (extractStyles.call(this)) { - config.plugins.push( - new ExtractTextPlugin({ filename: this.options.build.filenames.css }) - ) + if (this.options.build.extractCSS) { + config.plugins.push(new ExtractTextPlugin({ + filename: this.options.build.filenames.css + })) } // Workaround for hiding Warnings about plugins without a default export (#1179) diff --git a/lib/builder/webpack/helpers.js b/lib/builder/webpack/helpers.js deleted file mode 100755 index 7b4cb01b4f..0000000000 --- a/lib/builder/webpack/helpers.js +++ /dev/null @@ -1,40 +0,0 @@ -import ExtractTextPlugin from 'extract-text-webpack-plugin' -import { join } from 'path' - -export function extractStyles () { - return !this.options.dev && this.options.build.extractCSS -} - -export function styleLoader (ext, loaders = []) { - // https://github.com/webpack-contrib/css-loader - const cssLoader = { - loader: 'css-loader', - options: { - minimize: true, - sourceMap: true, - // https://github.com/webpack/loader-utils#root-relative-urls - root: '~', - alias: { - '/static': join(this.options.srcDir, 'static'), - '/assets': join(this.options.srcDir, 'assets') - } - } - } - - // https://github.com/vuejs/vue-style-loader - const vueStyleLoader = { - loader: 'vue-style-loader', - options: { - sourceMap: true - } - } - - if (extractStyles.call(this)) { - return ExtractTextPlugin.extract({ - use: [cssLoader].concat(loaders), - fallback: vueStyleLoader - }) - } - - return [vueStyleLoader, cssLoader].concat(loaders) -} diff --git a/lib/builder/webpack/style-loader.js b/lib/builder/webpack/style-loader.js new file mode 100755 index 0000000000..0ba2f13380 --- /dev/null +++ b/lib/builder/webpack/style-loader.js @@ -0,0 +1,86 @@ +import ExtractTextPlugin from 'extract-text-webpack-plugin' +import { join } from 'path' + +export default function styleLoader (ext, loaders = [], isVueLoader = false) { + // Normalize loaders + loaders = (Array.isArray(loaders) ? loaders : [loaders]).map(loader => { + if (typeof loader === 'string') { + return { + loader, + options: { + // Source map is REQUIRED for urlLoader + sourceMap: true + } + } + } + return loader + }) + + // https://github.com/postcss/postcss-loader + let postcssLoader + if (!isVueLoader && this.options.build.postcss) { + postcssLoader = { + loader: 'postcss-loader', + options: { + sourceMap: this.options.build.cssSourceMap + } + } + if (Array.isArray(this.options.build.postcss)) { + // If array is provided set it as plugins + postcssLoader.options.plugins = this.options.build.postcss + } else if (typeof this.options.build.postcss.path === 'string') { + // If config object detected + postcssLoader.options.config = this.options.build.postcss + } else { + // Just let postcss-loader resolve it's config + } + } + + // https://github.com/webpack-contrib/css-loader + const cssLoader = { + loader: 'css-loader', + options: { + minimize: true, + importLoaders: 1, + sourceMap: this.options.build.cssSourceMap, + root: '~', // https://github.com/webpack/loader-utils#root-relative-urls + alias: { + '/static': join(this.options.srcDir, 'static'), + '/assets': join(this.options.srcDir, 'assets') + } + } + } + + // https://github.com/vuejs/vue-style-loader + const vueStyleLoader = { + loader: 'vue-style-loader', + options: { + sourceMap: this.options.build.cssSourceMap + } + } + + // https://github.com/bholloway/resolve-url-loader + const urlLoader = { + loader: 'resolve-url-loader' + } + + if (this.options.build.extractCSS && !isVueLoader && !this.options.dev) { + return ExtractTextPlugin.extract({ + fallback: vueStyleLoader, + use: [ + cssLoader, + postcssLoader, + urlLoader, + ...loaders + ].filter(l => l) + }) + } + + return [ + vueStyleLoader, + cssLoader, + postcssLoader, + urlLoader, + ...loaders + ].filter(l => l) +} diff --git a/lib/builder/webpack/vue-loader.config.js b/lib/builder/webpack/vue-loader.config.js index 385fa49425..f52ff46cec 100644 --- a/lib/builder/webpack/vue-loader.config.js +++ b/lib/builder/webpack/vue-loader.config.js @@ -1,31 +1,26 @@ -import { defaults } from 'lodash' -import { extractStyles, styleLoader } from './helpers' - -export default function ({ isClient }) { - let babelOptions = JSON.stringify(defaults(this.options.build.babel, { - presets: [require.resolve('babel-preset-vue-app')], - babelrc: false, - cacheDirectory: !!this.options.dev - })) - - // https://github.com/vuejs/vue-loader/blob/master/docs/en/configurations +export default function vueLoader ({ isClient }) { + // https://vue-loader.vuejs.org/en const config = { postcss: this.options.build.postcss, + extractCSS: this.options.build.extractCSS, + cssSourceMap: this.options.build.cssSourceMap, + preserveWhitespace: false, loaders: { - 'js': 'babel-loader?' + babelOptions, - 'css': styleLoader.call(this, 'css'), - 'less': styleLoader.call(this, 'less', 'less-loader'), - 'sass': styleLoader.call(this, 'sass', 'sass-loader?indentedSyntax&sourceMap'), - 'scss': styleLoader.call(this, 'sass', 'sass-loader?sourceMap'), - 'stylus': styleLoader.call(this, 'stylus', 'stylus-loader'), - 'styl': styleLoader.call(this, 'stylus', 'stylus-loader') + 'js': { + loader: 'babel-loader', + options: Object.assign({}, this.babelOptions) + }, + // Note: do not nest the `postcss` option under `loaders` + 'css': this.styleLoader('css', [], true), + 'less': this.styleLoader('less', 'less-loader', true), + 'scss': this.styleLoader('scss', 'sass-loader', true), + 'sass': this.styleLoader('sass', 'sass-loader?indentedSyntax', true), + 'stylus': this.styleLoader('stylus', 'stylus-loader', true), + 'styl': this.styleLoader('stylus', 'stylus-loader', true) }, template: { - // for pug, see https://github.com/vuejs/vue-loader/issues/55 - doctype: 'html' - }, - preserveWhitespace: false, - extractCSS: extractStyles.call(this) + doctype: 'html' // For pug, see https://github.com/vuejs/vue-loader/issues/55 + } } // Return the config diff --git a/lib/common/options.js b/lib/common/options.js index 633c631637..96d6b69e33 100755 --- a/lib/common/options.js +++ b/lib/common/options.js @@ -48,6 +48,14 @@ export default function Options (_options) { options.store = true } + // Prefer postcss.config.js if no explicit option was provided and it exists + if (Array.isArray(options.build.postcss) && options.build.postcss.length === 0) { + if (existsSync(join(options.srcDir, 'postcss.config.js') || + existsSync(join(options.rootDir, 'postcss.config.js')))) { + options.build.postcss = true + } + } + // Debug errors if (options.debug === undefined) { options.debug = options.dev @@ -104,6 +112,7 @@ Options.defaults = { build: { analyze: false, extractCSS: false, + cssSourceMap: true, ssr: undefined, publicPath: '/_nuxt/', filenames: { diff --git a/package.json b/package.json index 0283b5e2f4..b9dc68cbae 100644 --- a/package.json +++ b/package.json @@ -97,8 +97,10 @@ "minimist": "^1.2.0", "opencollective": "^1.0.3", "pify": "^3.0.0", + "postcss-loader": "^2.0.6", "pretty-error": "^2.1.1", "progress-bar-webpack-plugin": "^1.10.0", + "resolve-url-loader": "^2.1.0", "serialize-javascript": "^1.4.0", "serve-static": "^1.12.4", "server-destroy": "^1.0.1", diff --git a/yarn.lock b/yarn.lock index 4def7564c9..842a4ba37c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -101,6 +101,18 @@ acorn@^5.0.0, acorn@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75" +adjust-sourcemap-loader@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz#412d92404eb61e4113635012cba53a33d008e0e2" + dependencies: + assert "^1.3.0" + camelcase "^1.2.1" + loader-utils "^1.0.2" + lodash.assign "^4.0.1" + lodash.defaults "^3.1.2" + object-path "^0.9.2" + regex-parser "^2.2.1" + ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" @@ -287,7 +299,7 @@ assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" -assert@^1.1.1: +assert@^1.1.1, assert@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" dependencies: @@ -311,6 +323,10 @@ asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" +atob@~1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" + auto-bind@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.1.0.tgz#93b864dc7ee01a326281775d5c75ca0a751e5961" @@ -1348,7 +1364,7 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase@^1.0.2: +camelcase@^1.0.2, camelcase@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" @@ -1718,7 +1734,11 @@ content-type@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" -convert-source-map@^1.1.0, convert-source-map@^1.2.0, convert-source-map@^1.3.0: +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + +convert-source-map@^1.1.0, convert-source-map@^1.1.1, convert-source-map@^1.2.0, convert-source-map@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" @@ -1898,6 +1918,15 @@ css-what@2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" +css@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc" + dependencies: + inherits "^2.0.1" + source-map "^0.1.38" + source-map-resolve "^0.3.0" + urix "^0.1.0" + cssesc@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" @@ -3787,7 +3816,7 @@ loader-utils@^0.2.15, loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" -loader-utils@^1.0.2, loader-utils@^1.1.0: +loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" dependencies: @@ -3802,10 +3831,53 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._bindcallback@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + +lodash._createassigner@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" + dependencies: + lodash._bindcallback "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash.restparam "^3.0.0" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" +lodash.assign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" + dependencies: + lodash._baseassign "^3.0.0" + lodash._createassigner "^3.0.0" + lodash.keys "^3.0.0" + +lodash.assign@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -3826,6 +3898,17 @@ lodash.debounce@^4.0.3: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" +lodash.defaults@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" + dependencies: + lodash.assign "^3.0.0" + lodash.restparam "^3.0.0" + +lodash.defaults@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + lodash.difference@^4.3.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" @@ -3838,6 +3921,14 @@ lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" @@ -3846,6 +3937,14 @@ lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -3854,6 +3953,10 @@ lodash.merge@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -4314,6 +4417,10 @@ object-keys@^1.0.10, object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" +object-path@^0.9.2: + version "0.9.2" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" + object.assign@^4.0.1: version "4.0.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" @@ -4708,7 +4815,7 @@ postcss-filter-plugins@^2.0.0: postcss "^5.0.4" uniqid "^4.0.0" -postcss-load-config@^1.1.0: +postcss-load-config@^1.1.0, postcss-load-config@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a" dependencies: @@ -4731,6 +4838,15 @@ postcss-load-plugins@^2.3.0: cosmiconfig "^2.1.1" object-assign "^4.1.0" +postcss-loader@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.6.tgz#8c7e0055a3df1889abc6bad52dd45b2f41bbc6fc" + dependencies: + loader-utils "^1.1.0" + postcss "^6.0.2" + postcss-load-config "^1.2.0" + schema-utils "^0.3.0" + postcss-merge-idents@^2.1.5: version "2.1.7" resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" @@ -4916,6 +5032,14 @@ postcss@^6.0.1, postcss@^6.0.6: source-map "^0.5.6" supports-color "^4.2.0" +postcss@^6.0.2: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.9.tgz#54819766784a51c65b1ec4d54c2f93765438c35a" + dependencies: + chalk "^2.1.0" + source-map "^0.5.6" + supports-color "^4.2.1" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -5175,6 +5299,10 @@ regex-cache@^0.4.2: is-equal-shallow "^0.1.3" is-primitive "^2.0.0" +regex-parser@^2.2.1: + version "2.2.7" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.7.tgz#bd090e09181849acc45457e765f7be2a63f50ef1" + regexpu-core@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" @@ -5338,6 +5466,24 @@ resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" +resolve-url-loader@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-2.1.0.tgz#27c95cc16a4353923fdbdc2dbaf5eef22232c477" + dependencies: + adjust-sourcemap-loader "^1.1.0" + camelcase "^4.0.0" + convert-source-map "^1.1.1" + loader-utils "^1.0.0" + lodash.defaults "^4.0.0" + rework "^1.0.1" + rework-visit "^1.0.0" + source-map "^0.5.6" + urix "^0.1.0" + +resolve-url@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -5355,6 +5501,17 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +rework-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + +rework@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" @@ -5600,16 +5757,35 @@ source-list-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" +source-map-resolve@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761" + dependencies: + atob "~1.1.0" + resolve-url "~0.2.1" + source-map-url "~0.3.0" + urix "~0.1.0" + source-map-support@^0.4.0, source-map-support@^0.4.15, source-map-support@^0.4.2: version "0.4.15" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" dependencies: source-map "^0.5.6" +source-map-url@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" + source-map@0.5.6, source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" +source-map@^0.1.38: + 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.4: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" @@ -6107,6 +6283,10 @@ upper-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" +urix@^0.1.0, urix@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + url-loader@^0.5.9: version "0.5.9" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.9.tgz#cc8fea82c7b906e7777019250869e569e995c295"