From 64801ecaa85d01b01b8bba31a73acc0fc8e6dc1e Mon Sep 17 00:00:00 2001 From: EGOIST <0x142857@gmail.com> Date: Thu, 25 Jan 2018 13:41:41 +0800 Subject: [PATCH] switch to conpack --- a.gif | Bin 0 -> 117420 bytes package.json | 9 +- packages/babel-preset-poi/package.json | 3 +- .../test/__snapshots__/test.js.snap | 26 ++ .../test/snapshots/test.js.md | 36 -- .../test/snapshots/test.js.snap | Bin 280 -> 0 bytes packages/babel-preset-poi/test/test.js | 7 +- packages/poi-preset-babel-minify/index.js | 3 +- packages/poi-preset-buble/lib/index.js | 53 ++- packages/poi-preset-bundle-report/index.js | 3 +- packages/poi-preset-coffee/index.js | 36 +- packages/poi-preset-elm/index.js | 32 +- packages/poi-preset-eslint/index.js | 18 +- packages/poi-preset-karma/index.js | 43 ++- packages/poi-preset-offline/index.js | 31 +- packages/poi-preset-react/index.js | 32 +- packages/poi-preset-riot/index.js | 12 +- packages/poi-preset-storybook/README.md | 9 +- packages/poi-preset-storybook/lib/index.js | 28 +- packages/poi-preset-svelte/index.js | 45 ++- packages/poi-preset-sw-precache/index.js | 11 +- .../poi-preset-transform-test-files/index.js | 4 +- packages/poi-preset-typescript/index.js | 36 +- packages/poi-preset-webpackmonitor/index.js | 9 +- packages/poi/lib/create-config.js | 325 ++++++++---------- packages/poi/lib/index.js | 2 +- packages/poi/lib/webpack-utils.js | 9 +- packages/poi/lib/webpack/css-loaders.js | 43 +-- packages/poi/lib/webpack/transform-js.js | 36 +- packages/poi/lib/webpack/transform-vue.js | 19 +- packages/poi/package.json | 9 +- packages/poi/test/config.test.js | 15 +- yarn.lock | 312 ++++++++++++++++- 33 files changed, 763 insertions(+), 493 deletions(-) create mode 100644 a.gif create mode 100644 packages/babel-preset-poi/test/__snapshots__/test.js.snap delete mode 100644 packages/babel-preset-poi/test/snapshots/test.js.md delete mode 100644 packages/babel-preset-poi/test/snapshots/test.js.snap diff --git a/a.gif b/a.gif new file mode 100644 index 0000000000000000000000000000000000000000..4820c2a5c1391758539d3cf013650e1e45ee0702 GIT binary patch literal 117420 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 class properties - - `"use strict";␊ - ␊ - let Foo = class Foo {␊ - constructor() {␊ - this.state = 1;␊ - }␊ - ␊ - };` - -## decorators legacy - -> decorators legacy - - `"use strict";␊ - ␊ - var _class;␊ - ␊ - let Foo = bound(_class = class Foo {}) || _class;` - -## object reset spread - -> object reset spread - - `"use strict";␊ - ␊ - const a = Object.assign({}, foo);` diff --git a/packages/babel-preset-poi/test/snapshots/test.js.snap b/packages/babel-preset-poi/test/snapshots/test.js.snap deleted file mode 100644 index fe0e0e62f25df59eef9bdb082327e35c5111f484..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280 zcmV+z0q6cfRzVN{CmW``c405#SZ4V3(K;!Ghm2s+nLxZ| z#ph0O(T`5P3!0vPoa%mn5iI%>h?yAJ!TK3l7=#!NluC { + test(title, () => { const { code } = babel.transform(input, { presets: [require.resolve('..')] }) - t.snapshot(code, title) + expect(code).toMatchSnapshot(title) }) } diff --git a/packages/poi-preset-babel-minify/index.js b/packages/poi-preset-babel-minify/index.js index 3a315094..e8e1872c 100644 --- a/packages/poi-preset-babel-minify/index.js +++ b/packages/poi-preset-babel-minify/index.js @@ -6,8 +6,7 @@ module.exports = (pluginOptions, overrides) => { // do not use if `minimize` is off if (config.plugins.has('minimize')) { - config.plugin('minimize') - .use(BabelMinifyPlugin, [pluginOptions, overrides]) + config.plugins.update('minimize', BabelMinifyPlugin, [pluginOptions, overrides]) } }) } diff --git a/packages/poi-preset-buble/lib/index.js b/packages/poi-preset-buble/lib/index.js index f3d3ba36..10df633c 100644 --- a/packages/poi-preset-buble/lib/index.js +++ b/packages/poi-preset-buble/lib/index.js @@ -22,43 +22,40 @@ module.exports = ({ }, bubleOptions) for (const rule of ['js', 'es']) { - const thisRule = config.module.rule(rule) + const thisRule = config.rules.get(rule) // Remove babel-loader first - thisRule.uses - .delete('babel-loader') - .end() + thisRule.loaders.remove('babel-loader') // Maybe add nodent-loader if (asyncAwait) { - thisRule - .use('nodent') - .loader(require.resolve('./nodent-loader')) + thisRule.loaders.add('nodent-loader', { + loader: require.resolve('./nodent-loader') + }) } // Add buble-loader - thisRule - .use('buble-loader') - .loader(require.resolve('./buble-loader')) - .options(bubleOptions) + thisRule.loaders.add('buble-loader', { + loader: require.resolve('./buble-loader'), + options: bubleOptions + }) } - config.module.rule('vue') - .use('vue-loader') - .tap(vueOptions => { - vueOptions.loaders.js = { - loader: require.resolve('./buble-loader'), - options: bubleOptions - } - if (asyncAwait) { - vueOptions.loaders.js = [ - { - loader: require.resolve('./nodent-loader') - }, - vueOptions.loaders.js - ] - } - return vueOptions - }) + const vueRule = config.rules.get('vue') + vueRule.loaders.update('vue-loader', vueOptions => { + vueOptions.loaders.js = { + loader: require.resolve('./buble-loader'), + options: bubleOptions + } + if (asyncAwait) { + vueOptions.loaders.js = [ + { + loader: require.resolve('./nodent-loader') + }, + vueOptions.loaders.js + ] + } + return vueOptions + }) }) } } diff --git a/packages/poi-preset-bundle-report/index.js b/packages/poi-preset-bundle-report/index.js index 6eee8c29..5f6526ac 100644 --- a/packages/poi-preset-bundle-report/index.js +++ b/packages/poi-preset-bundle-report/index.js @@ -10,8 +10,7 @@ module.exports = pluginOptions => { poi.extendWebpack('production', config => { if (poi.argv.bundleReport) { config - .plugin('bundle-report') - .use(BundleAnalyzerPlugin, [pluginOptions]) + .plugins.add('bundle-report', BundleAnalyzerPlugin, [pluginOptions]) } }) } diff --git a/packages/poi-preset-coffee/index.js b/packages/poi-preset-coffee/index.js index 57d1c089..b72b309c 100644 --- a/packages/poi-preset-coffee/index.js +++ b/packages/poi-preset-coffee/index.js @@ -10,13 +10,11 @@ module.exports = ({ loaderOptions } = {}) => { poi.extendWebpack(config => { let babelOptions - if (config.module.rule('js').uses.has('babel-loader')) { + const jsRule = config.rules.get('js') + if (jsRule.loaders.has('babel-loader')) { babelOptions = Object.assign( {}, - config.module.rule('js') - .use('babel-loader') - .store - .get('options') + jsRule.loaders.get('babel-loader').options.options ) // Delete unnecessary loader-specific options delete babelOptions.cacheDirectory @@ -28,21 +26,21 @@ module.exports = ({ loaderOptions } = {}) => { transpile: babelOptions }, loaderOptions) - config.module.rule('coffee') - .test(/\.coffee$/) - .use('coffee-loader') - .loader('better-coffee-loader') - .options(coffeeOptions) + config.rules.add('coffee', { + test: /\.coffee$/ + }).loaders.add('coffee-loader', { + loader: 'better-coffee-loader', + options: coffeeOptions + }) - config.module.rule('vue') - .use('vue-loader') - .tap(vueOptions => { - vueOptions.loaders.coffee = vueOptions.loaders.coffeescript = [{ - loader: 'better-coffee-loader', - options: coffeeOptions - }] - return vueOptions - }) + config.rules.get('vue') + .loaders.update('vue-loader', vueOptions => { + vueOptions.loaders.coffee = vueOptions.loaders.coffeescript = [{ + loader: 'better-coffee-loader', + options: coffeeOptions + }] + return vueOptions + }) }) } } diff --git a/packages/poi-preset-elm/index.js b/packages/poi-preset-elm/index.js index cbadd85d..453ee3a9 100644 --- a/packages/poi-preset-elm/index.js +++ b/packages/poi-preset-elm/index.js @@ -11,21 +11,23 @@ module.exports = (options = {}) => { }, options.loaderOptions) poi.extendWebpack(config => { - config.module - .rule('elm') - .test(/\.elm$/) - .exclude - .add(/elm-stuff/) - .add(/node_modules/) - .end() - .use('elm-hot') - .loader('elm-hot-loader') - .end() - .use('elm-webpack') - .loader('elm-webpack-loader') - .options(loaderOptions) - .end() - .end() + const elmRule = config.rules + .add('elm', { + test: /\.elm$/, + exclude: [ + /elm-stuff/, + /node_modules/ + ] + }) + + elmRule.loaders.add('elm-hot-loader', { + loader: 'elm-hot-loader' + }) + + elmRule.loaders.add('elm-webpack', { + loader: 'elm-webpack-loader', + options: loaderOptions + }) }) } } diff --git a/packages/poi-preset-eslint/index.js b/packages/poi-preset-eslint/index.js index eb0988fc..59a4b040 100644 --- a/packages/poi-preset-eslint/index.js +++ b/packages/poi-preset-eslint/index.js @@ -20,15 +20,15 @@ module.exports = function ({ } = {}) { return poi => { poi.extendWebpack(mode, config => { - config.module.rule('eslint') - .test(/\.(js|jsx|vue)$/) - .exclude - .add(/node_modules/) - .end() - .pre() - .use('eslint-loader') - .loader('eslint-loader') - .options(loaderOptions) + const eslintRule = config.rules.add('eslint', { + test: /\.(js|jsx|vue)$/, + exclude: [/node_modules/], + enforce: 'pre' + }) + eslintRule.loaders.add('eslint-loader', { + loader: 'eslint-loader', + options: loaderOptions + }) }) } } diff --git a/packages/poi-preset-karma/index.js b/packages/poi-preset-karma/index.js index 205840a7..e342fe19 100644 --- a/packages/poi-preset-karma/index.js +++ b/packages/poi-preset-karma/index.js @@ -28,33 +28,32 @@ module.exports = (options = {}) => { poi.extendWebpack('test', config => { const coverage = inferValue('coverage') - isTypeScript = config.module.rules.has('typescript') + isTypeScript = config.rules.has('typescript') if (coverage) { /* for general usage */ - config.module.rule('istanbul-instrumenter-loader') - .test(/\.(jsx?)$/) - .exclude - .add(/(node_modules|\.test\.jsx?)/) - .end() - .pre() - .use('istanbul-instrumenter-loader') - .loader('istanbul-instrumenter-loader') - .options({ - esModules: true - }) + const istanbulinstrumenterRule = config.rules.add('istanbul-instrumenter', { + test: /\.(jsx?)$/, + exclude: [/(node_modules|\.test\.jsx?)/], + enforce: 'pre' + }) + istanbulinstrumenterRule.loaders.add('istanbul-instrumenter-loader', { + loader: 'istanbul-instrumenter-loader', + options: { + esModules: true + } + }) /* for vue (assumes vue-loader) */ - config.module.rule('vue') - .use('vue-loader') - .tap(vueOptions => { - const instrumenterLoader = 'istanbul-instrumenter-loader?esModules=true' - vueOptions.preLoaders = (vueOptions.preLoaders || {}) - vueOptions.preLoaders.js = typeof vueOptions.preLoaders.js === 'string' ? - `${vueOptions.preLoaders.js}!${instrumenterLoader}` : - instrumenterLoader - return vueOptions - }) + const vueRule = config.rules.get('vue') + vueRule.loaders.update('vue-loader', vueOptions => { + const instrumenterLoader = 'istanbul-instrumenter-loader?esModules=true' + vueOptions.preLoaders = (vueOptions.preLoaders || {}) + vueOptions.preLoaders.js = typeof vueOptions.preLoaders.js === 'string' ? + `${vueOptions.preLoaders.js}!${instrumenterLoader}` : + instrumenterLoader + return vueOptions + }) } }) diff --git a/packages/poi-preset-offline/index.js b/packages/poi-preset-offline/index.js index 0e28a4f0..0a34b668 100644 --- a/packages/poi-preset-offline/index.js +++ b/packages/poi-preset-offline/index.js @@ -37,28 +37,29 @@ module.exports = ({ poi.extendWebpack('production', config => { pwa = path.resolve(poi.options.cwd, pwa) - if (config.entryPoints.has(entry)) { - config.entry(entry).prepend(pwa) + if (config.get(['entry', entry])) { + config.prepend(['entry', entry], pwa) } else { throw new Error(`Entry "${entry}" was not found.`) } // Our default pwa entry is written in ES2015 // So we need to include in babel transformation process - config.module.rule('js') - .include.add(pwa) + config.rules.update('js', options => { + options.include.push(pwa) + return options + }) - config.plugin('offline') - .use(OfflinePlugin, [Object.assign({ - ServiceWorker: { - events: true, - navigateFallbackURL: '/' - }, - AppCache: { - events: true, - FALLBACK: { '/': '/' } - } - }, pluginOptions)]) + config.plugins.add('offline', OfflinePlugin, [Object.assign({ + ServiceWorker: { + events: true, + navigateFallbackURL: '/' + }, + AppCache: { + events: true, + FALLBACK: { '/': '/' } + } + }, pluginOptions)]) }) } } diff --git a/packages/poi-preset-react/index.js b/packages/poi-preset-react/index.js index fc6fccd3..fb7d46e2 100644 --- a/packages/poi-preset-react/index.js +++ b/packages/poi-preset-react/index.js @@ -2,25 +2,25 @@ module.exports = () => { return poi => { poi.extendWebpack(config => { // Add react plugins to babel config - config.module.rule('js') - .use('babel-loader') - .tap(options => { - // When `babelrc` is not false, directly return user's babel options - if (options.babelrc !== false) return options + const jsRule = config.rules.get('js') - return { - presets: [ - [options.presets[0][0], { jsx: 'react' }] - ], - plugins: [ - require.resolve('react-hot-loader/babel') - ] - } - }) + jsRule.loaders.update('babel-loader', options => { + // When `babelrc` is not false, directly return user's babel options + if (options.babelrc !== false) return options + + return { + presets: [ + [options.presets[0][0], { jsx: 'react' }] + ], + plugins: [ + require.resolve('react-hot-loader/babel') + ] + } + }) // Add entry - if (config.entryPoints.has('client')) { - config.entry('client').prepend(require.resolve('react-hot-loader/patch')) + if (config.get('entry.client')) { + config.prepend('entry.client', require.resolve('react-hot-loader/patch')) } else { throw new Error('Currently only `client` entry is supported') } diff --git a/packages/poi-preset-riot/index.js b/packages/poi-preset-riot/index.js index 57e4d720..a80878c9 100644 --- a/packages/poi-preset-riot/index.js +++ b/packages/poi-preset-riot/index.js @@ -2,10 +2,12 @@ module.exports = ({ loaderOptions } = {}) => poi => { poi.extendWebpack(config => { - config.module.rule('riot') - .test(/\.tag$/) - .use('riot-tag-loader') - .loader('riot-tag-loader') - .options(loaderOptions) + const riotRule = config.rules.add('riot', { + test: /\.tag$/ + }) + riotRule.loaders.add('riot-tag-loader', { + loader: 'riot-tag-loader', + options: loaderOptions + }) }) } diff --git a/packages/poi-preset-storybook/README.md b/packages/poi-preset-storybook/README.md index 0abd5b19..d366dbc3 100644 --- a/packages/poi-preset-storybook/README.md +++ b/packages/poi-preset-storybook/README.md @@ -92,10 +92,11 @@ You can import `.md` files and they will be parsed by `markdown-loader` using `m // poi.config.js module.exports = { extendWebpack(config) { - config.module.rule('markdown') - .use('markdown') - .loader('markdown-it-loader') // Use markdown-it instead - .options(/* maybe some options */) + const markdownRule = config.rules.get('markdown') + // Use markdown-it instead + markdownRule.replace('markdown-loader', 'markdown-it-loader', { + /* maybe some options */ + }) } } ``` diff --git a/packages/poi-preset-storybook/lib/index.js b/packages/poi-preset-storybook/lib/index.js index 95b50f3f..a0bb5785 100644 --- a/packages/poi-preset-storybook/lib/index.js +++ b/packages/poi-preset-storybook/lib/index.js @@ -29,19 +29,19 @@ module.exports = ({ } poi.extendWebpack(config => { - const entry = [...config.entry('client').store] - config.entryPoints.delete('client') + const entry = config.get('entry.client') + config.delete('entry.client') const isReactHot = entry[0].indexOf('react-hot-loader/patch') > 0 let addonsIndex = poi.options.mode === 'development' ? 2 : 1 if (isReactHot) { addonsIndex++ } - config.entry('iframe').merge(entry.slice(0, addonsIndex)) + config.set('entry.iframe', entry.slice(0, addonsIndex)) if (entry[addonsIndex]) { - config.entry('manager').add(path.resolve(entry[addonsIndex])) + config.set('entry.manager', [path.resolve(entry[addonsIndex])]) } - config.entry('manager').add(getManager([ + config.append('entry.manager', getManager([ 'storybook-vue/lib/manager', 'storybook-react/lib/manager', '@storybook/vue/dist/client/manager', @@ -49,15 +49,15 @@ module.exports = ({ ])) if (useMarkdown !== false) { - config.module - .rule('markdown') - .test(/\.md$/) - .use('html') - .loader('html-loader') - .end() - .use('markdown') - .loader('markdown-loader') - .end() + const markdownRule = config.rules.add('markdown', { + test: /\.md$/ + }) + markdownRule.loaders.add('html-loader', { + loader: 'html-loader' + }) + markdownRule.loaders.add('markdown-loader', { + loader: 'markdown-loader' + }) } }) } diff --git a/packages/poi-preset-svelte/index.js b/packages/poi-preset-svelte/index.js index e4aad2d8..bfdbcd39 100644 --- a/packages/poi-preset-svelte/index.js +++ b/packages/poi-preset-svelte/index.js @@ -9,20 +9,18 @@ module.exports = function ({ } = {}) { return poi => { poi.extendWebpack(config => { - config.resolve - .extensions - .add('.html') + config.append('resolve.extensions', '.html') - const jsRule = config.module.rule('js') - const isBabel = jsRule.uses.has('babel-loader') - const isBuble = jsRule.uses.has('buble-loader') + const jsRule = config.rules.get('js') + const isBabel = jsRule.loaders.has('babel-loader') + const isBuble = jsRule.loaders.has('buble-loader') let jsLoaderOptions if (isBabel || isBuble) { - jsLoaderOptions = config.module - .rule('js') - .use(isBabel ? 'babel-loader' : 'buble-loader') - .store.get('options') + jsLoaderOptions = jsRule.loaders + .get(isBabel ? 'babel-loader' : 'buble-loader') + .options + .options } let jsLoaderPath @@ -36,19 +34,20 @@ module.exports = function ({ } if (jsLoaderName) { - config.module - .rule('svelte') - .test(/\.(html|svelte)$/) - .use(jsLoaderName) - .loader(jsLoaderPath) - .options(jsLoaderOptions) - .end() - .use('svelte-loader') - .loader('svelte-loader') - .options(Object.assign({ - // Extract CSS in production mode - emitCss: poi.isMode('production') && poi.options.extractCSS !== false - }, loaderOptions)) + const svelteRule = config.rules.add('svelte', { + test: /\.(html|svelte)$/ + }) + svelteRule.loaders.add(jsLoaderName, { + loader: jsLoaderPath, + options: jsLoaderOptions + }) + svelteRule.loaders.add('svelte-loader', { + loader: 'svelte-loader', + options: Object.assign({ + // Extract CSS in production mode + emitCss: poi.isMode('production') && poi.options.extractCSS !== false + }, loaderOptions) + }) } }) } diff --git a/packages/poi-preset-sw-precache/index.js b/packages/poi-preset-sw-precache/index.js index 59d332ac..329b944b 100644 --- a/packages/poi-preset-sw-precache/index.js +++ b/packages/poi-preset-sw-precache/index.js @@ -3,7 +3,7 @@ const SWPrecacheWebpackPlugin = require('sw-precache-webpack-plugin') module.exports = () => poi => { poi.extendWebpack('production', config => { - const publicUrl = config.output.get('publicPath') + const publicUrl = config.get('output.publicPath') poi.webpackUtils.defineConstants(config, { // Used by ./register-server-worker.js @@ -12,13 +12,14 @@ module.exports = () => poi => { // register-service-worker.js is written in ES6 // We need to transpile it then - config.module.rule('js') - .include - .add(path.join(__dirname, 'register-service-worker.js')) + config.rules.update('js', options => { + options.include.push(path.join(__dirname, 'register-service-worker.js')) + return options + }) // Generate a service worker script that will precache, and keep up to date, // the HTML & assets that are part of the Webpack build. - config.plugin('sw-precache').use(SWPrecacheWebpackPlugin, [ + config.plugins.add('sw-precache', SWPrecacheWebpackPlugin, [ { // By default, a cache-busting query parameter is appended to requests // used to populate the caches, to ensure the responses are fresh. diff --git a/packages/poi-preset-transform-test-files/index.js b/packages/poi-preset-transform-test-files/index.js index f3bf5929..9d287481 100644 --- a/packages/poi-preset-transform-test-files/index.js +++ b/packages/poi-preset-transform-test-files/index.js @@ -15,8 +15,8 @@ module.exports = (options = {}) => { poi.extendWebpack('test', config => { const outputPath = path.resolve(poi.options.cwd, outputDir) - config.output.path(outputPath) - config.output.filename('[name].transformed.js') + config.set('output.path', outputPath) + config.set('output.filename', '[name].transformed.js') // Exclude node_modules in bundle file poi.webpackUtils.externalize(config) diff --git a/packages/poi-preset-typescript/index.js b/packages/poi-preset-typescript/index.js index edac3384..5b02e984 100644 --- a/packages/poi-preset-typescript/index.js +++ b/packages/poi-preset-typescript/index.js @@ -9,26 +9,26 @@ module.exports = ({ } = {}) => { return poi => { poi.extendWebpack(config => { - config.resolve.extensions - .add('.ts') - .add('.tsx') + config.append('resolve.extensions', '.ts') + config.append('resolve.extensions', '.tsx') - config.module.rule('typescript') - .test(/\.tsx?$/) - .use('ts-loader') - .loader('ts-loader') - .options(Object.assign({ appendTsSuffixTo: [/\.vue$/] }, loaderOptions)) + const tsRule = config.rules.get('typescript', { + test: /\.tsx?$/ + }) + tsRule.loaders.add('ts-loader', { + loader: 'ts-loader', + options: Object.assign({ appendTsSuffixTo: [/\.vue$/] }, loaderOptions) + }) - config.module.rule('vue') - .use('vue-loader') - .tap(vueOptions => { - vueOptions.esModule = true - vueOptions.loaders.ts = [{ - loader: 'ts-loader', - options: loaderOptions - }] - return vueOptions - }) + const vueRule = config.rules.get('vue') + vueRule.loaders.update('vue-loader', vueOptions => { + vueOptions.esModule = true + vueOptions.loaders.ts = [{ + loader: 'ts-loader', + options: loaderOptions + }] + return vueOptions + }) }) } } diff --git a/packages/poi-preset-webpackmonitor/index.js b/packages/poi-preset-webpackmonitor/index.js index 8d644537..d646ecea 100644 --- a/packages/poi-preset-webpackmonitor/index.js +++ b/packages/poi-preset-webpackmonitor/index.js @@ -4,11 +4,10 @@ const WebpackMonitor = require('webpack-monitor') module.exports = ({ pluginOptions } = {}) => { return poi => { poi.extendWebpack('production', config => { - config.plugin('webpackmonitor') - .use(WebpackMonitor, [Object.assign({ - target: path.resolve('.monitor/stats.json'), - launch: poi.argv.webpackmonitor - }, pluginOptions)]) + config.plugins.add('webpackmonitor', WebpackMonitor, [Object.assign({ + target: path.resolve('.monitor/stats.json'), + launch: poi.argv.webpackmonitor + }, pluginOptions)]) }) } } diff --git a/packages/poi/lib/create-config.js b/packages/poi/lib/create-config.js index 61187f84..81808e9f 100644 --- a/packages/poi/lib/create-config.js +++ b/packages/poi/lib/create-config.js @@ -1,7 +1,6 @@ const fs = require('fs') const path = require('path') const webpack = require('webpack') -const Config = require('webpack-chain') const merge = require('lodash/merge') const isCI = require('is-ci') const ExtractTextPlugin = require('extract-text-webpack-plugin') @@ -9,6 +8,7 @@ const CopyPlugin = require('copy-webpack-plugin') const HtmlPlugin = require('html-webpack-plugin') const PathsCaseSensitivePlugin = require('case-sensitive-paths-webpack-plugin') const yarnGlobal = require('yarn-global') +const Conpack = require('conpack') const FancyLogPlugin = require('./webpack/fancy-log-plugin') const TimeFixPlugin = require('./webpack/timefix-plugin') const webpackUtils = require('./webpack-utils') @@ -20,7 +20,6 @@ const { stringifyObject, getFullEnvString } = require('./utils') -const logger = require('./logger') const cssLoaders = require('./webpack/css-loaders') const transformJS = require('./webpack/transform-js') const transformVue = require('./webpack/transform-vue') @@ -59,7 +58,7 @@ module.exports = function ({ progress, rawErrors } = {}) { - const config = new Config() + const config = new Conpack() const useHash = typeof hash === 'boolean' ? hash : (mode === 'production' && !format) filename = getFileNames(useHash, filename) @@ -71,14 +70,14 @@ module.exports = function ({ if (sourceMap !== false) { if (typeof sourceMap === 'string') { - config.devtool(sourceMap) + config.set('devtool', sourceMap) } else { sourceMap = mode === 'production' ? 'source-map' : mode === 'test' ? 'inline-source-map' : 'eval-source-map' - config.devtool(sourceMap) + config.set('devtool', sourceMap) } } @@ -88,59 +87,60 @@ module.exports = function ({ } if (typeof entry === 'string') { - config.entry('client').add(handleEntryPath(entry)) + config.set('entry.client', [handleEntryPath(entry)]) } else if (Array.isArray(entry)) { - config.entry('client').merge(entry.map(e => handleEntryPath(e))) + config.set('entry.client', entry.map(e => handleEntryPath(e))) } else if (typeof entry === 'object') { Object.keys(entry).forEach(k => { const v = entry[k] if (Array.isArray(v)) { - config.entry(k).merge(v.map(e => handleEntryPath(e))) + config.set(['entry', k], v.map(e => handleEntryPath(e))) } else { - config.entry(k).add(handleEntryPath(v)) + config.set(['entry', k], [handleEntryPath(v)]) } }) } - config.output - .path(path.resolve(cwd, dist || 'dist')) + config.set('output', { + path: path.resolve(cwd, dist || 'dist'), // Add /* filename */ comments to generated require()s in the output. - .pathinfo(true) - .filename(filename.js) - .chunkFilename(filename.chunk) - .publicPath(getPublicPath(mode, homepage)) + pathinfo: true, + filename: filename.js, + chunkFilename: filename.chunk, + publicPath: getPublicPath(mode, homepage) + }) if (mode !== 'production') { - config.output - // Point sourcemap entries to original disk location - .devtoolModuleFilenameTemplate(info => path.resolve(info.absoluteResourcePath)) + // Point sourcemap entries to original disk location + config.set('output.devtoolModuleFilenameTemplate', info => path.resolve(info.absoluteResourcePath)) } - config.performance.hints(false) - - config.resolve - .set('symlinks', true) - .extensions - .add('.js') - .add('.jsx') - .add('.json') - .add('.vue') - .end() - .modules - .add(path.resolve(cwd, 'node_modules')) - .add('node_modules') - .add(ownDir('node_modules')) - .end() - .alias - .set('@', path.resolve(cwd, 'src')) - .set('vue$', templateCompiler ? 'vue/dist/vue.esm.js' : 'vue/dist/vue.runtime.esm.js') - - config.resolveLoader - .set('symlinks', true) - .modules - .add(path.resolve(cwd, 'node_modules')) - .add('node_modules') - .add(ownDir('node_modules')) + config.set('performance', { + hints: false + }) + + config.set('resolve', { + symlinks: true, + extensions: ['.js', '.jsx', '.json', '.vue'], + modules: [ + path.resolve(cwd, 'node_modules'), + 'node_modules', + ownDir('node_modules') + ], + alias: { + '@': path.resolve(cwd, 'src'), + vue$: templateCompiler ? 'vue/dist/vue.esm.js' : 'vue/dist/vue.runtime.esm.js' + } + }) + + config.set('resolveLoader', { + symlinks: true, + modules: [ + path.resolve(cwd, 'node_modules'), + 'node_modules', + ownDir('node_modules') + ] + }) // Ensure that there's always `plugins` when no config was found // To prevent `postcss-loader` from manually searching config file @@ -164,177 +164,154 @@ module.exports = function ({ // Rules for Vue single-file component transformVue(config, { babel, vueOptions, cssOptions }) - config.module - .rule('image') - .test([/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/]) - .use('url-loader') - .loader('url-loader') - .options({ - name: filename.images, - // inline the file if < max size - limit: inlineImageMaxSize - }) - .end() - .end() + const imageRule = config.rules.add('image', { + test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/] + }) + imageRule.loaders.add('url-loader', { + loader: 'url-loader', + options: { + name: filename.images, + // inline the file if < max size + limit: inlineImageMaxSize + } + }) + + const svgRule = config.rules.add('svg', { + test: /\.(svg)(\?.*)?$/ + }) + svgRule.loaders.add('file-loader', { // SVG files use file-loader directly, why? // See https://github.com/facebookincubator/create-react-app/pull/1180 - .rule('svg') - .test(/\.(svg)(\?.*)?$/) - .use('file-loader') - .loader('file-loader') - .options({ - name: filename.images - }) - .end() - .end() - .rule('font') - .test(/\.(eot|otf|webp|ttf|woff|woff2)(\?.*)?$/) - .use('file-loader') - .loader('file-loader') - .options({ - name: filename.fonts - }) + loader: 'file-loader', + options: { + name: filename.images + } + }) + + const fontRule = config.rules.add('font', { + test: /\.(eot|otf|webp|ttf|woff|woff2)(\?.*)?$/ + }) + fontRule.loaders.add('file-loader', { + loader: 'file-loader', + options: { + name: filename.fonts + } + }) if (mode === 'development' || mode === 'watch') { // Fix startTime before all other webpack plugins // See https://github.com/webpack/watchpack/issues/25 - config.plugin('timefix') - .use(TimeFixPlugin) + config.plugins.add('timefix', TimeFixPlugin) } // Enforces the entire path of all required modules match // The exact case of the actual path on disk - config.plugin('paths-case-sensitive') - .use(PathsCaseSensitivePlugin) - - config.plugin('constants') - .use(webpack.DefinePlugin, [ - merge( - // { foo: '"foo"' } => { 'process.env.foo': '"foo"' } - getFullEnvString(env), - define && stringifyObject(define) - ) - ]) - - config.plugin('fancy-log') - .use(FancyLogPlugin, [ - { - mode, - host, - port, - clear, - rawErrors - } - ]) + config.plugins.add('paths-case-sensitive', PathsCaseSensitivePlugin) + + config.plugins.add('constants', webpack.DefinePlugin, [ + merge( + // { foo: '"foo"' } => { 'process.env.foo': '"foo"' } + getFullEnvString(env), + define && stringifyObject(define) + ) + ]) + + config.plugins.add('fancy-log', FancyLogPlugin, [ + { + mode, + host, + port, + clear, + rawErrors + } + ]) if (format === 'cjs') { - config.output.libraryTarget('commonjs2') + config.set('output.libraryTarget', 'commonjs2') webpackUtils.externalize(config) } else if (format === 'umd') { - config.output.libraryTarget('umd').library(moduleName) + config.set('output.libraryTarget', 'umd') + config.set('output.library', moduleName) } if (extractCSS) { - config.plugin('extract-css') - .use(ExtractTextPlugin, [{ - filename: filename.css, - allChunks: true - }]) + config.plugins.add('extract-css', ExtractTextPlugin, [{ + filename: filename.css, + allChunks: true + }]) } if (mode === 'production') { const ProgressPlugin = require('webpack/lib/ProgressPlugin') const NoEmitOnErrorsPlugin = require('webpack/lib/NoEmitOnErrorsPlugin') - config.plugin('no-emit-on-errors') - .use(NoEmitOnErrorsPlugin) + config.plugins.add('no-emit-on-errors', NoEmitOnErrorsPlugin) if (progress !== false && !isCI) { - config.plugin('progress-bar') - .use(ProgressPlugin) + config.plugins.add('progress-bar', ProgressPlugin) } } if (minimize) { - config.plugin('minimize') - .use(webpack.optimize.UglifyJsPlugin, [{ - sourceMap: Boolean(sourceMap), - /* eslint-disable camelcase */ - compressor: { - warnings: false, - conditionals: true, - unused: true, - comparisons: true, - sequences: true, - dead_code: true, - evaluate: true, - if_return: true, - join_vars: true, - negate_iife: false - }, - output: { - comments: false - } - /* eslint-enable camelcase */ - }]) + config.plugins.add('minimize', webpack.optimize.UglifyJsPlugin, [{ + sourceMap: Boolean(sourceMap), + /* eslint-disable camelcase */ + compressor: { + warnings: false, + conditionals: true, + unused: true, + comparisons: true, + sequences: true, + dead_code: true, + evaluate: true, + if_return: true, + join_vars: true, + negate_iife: false + }, + output: { + comments: false + } + /* eslint-enable camelcase */ + }]) } // Do not split vendor code in `cjs` and `umd` mode if (vendor && !format && mode !== 'test') { - config.plugin('split-vendor-code') - .use(webpack.optimize.CommonsChunkPlugin, [{ - name: 'vendor', - minChunks: module => { - return module.context && module.context.indexOf('node_modules') >= 0 - } - }]) - config.plugin('split-manifest') - .use(webpack.optimize.CommonsChunkPlugin, [{ - name: 'manifest' - }]) + config.plugins.add('split-vendor-code', webpack.optimize.CommonsChunkPlugin, [{ + name: 'vendor', + minChunks: module => { + return module.context && module.context.indexOf('node_modules') >= 0 + } + }]) + config.plugins.add('split-manifest', webpack.optimize.CommonsChunkPlugin, [{ + name: 'manifest' + }]) } if (mode === 'development' || mode === 'watch') { const WatchMissingNodeModulesPlugin = require('poi-dev-utils/watch-missing-node-modules-plugin') - config.plugin('watch-missing-node-modules') - .use(WatchMissingNodeModulesPlugin, [ - path.resolve(cwd, 'node_modules') - ]) + config.plugins.add('watch-missing-node-modules', WatchMissingNodeModulesPlugin, [ + path.resolve(cwd, 'node_modules') + ]) } const supportHMR = hotReload !== false && mode === 'development' const devClient = ownDir('app/dev-client.es6') - // Add hmr entry (deprecated) - // Replace keywords like `[hot]` `:hot:` with hmr entry - // This will be removed in next major version - config.entryPoints.store.forEach(v => { - if (v.has('[hot]') || v.has(':hot:')) { - logger.warn('[hot] keyword is deprecated, use option "hotEntry" instead.') - logger.warn('See https://poi.js.org/#/options?id=hotentry') - v.delete('[hot]').delete(':hot:') - if (supportHMR) { - v.prepend(devClient) - } - } - }) - // Add hmr entry using `hotEntry` option if (supportHMR) { - config.plugin('hmr') - .use(webpack.HotModuleReplacementPlugin) + config.plugins.add('hmr', webpack.HotModuleReplacementPlugin) - config.plugin('named-modules') - .use(webpack.NamedModulesPlugin) + config.plugins.add('named-modules', webpack.NamedModulesPlugin) const hotEntryPoints = webpackUtils.getHotEntryPoints(hotEntry) - config.entryPoints.store.forEach((v, entryPoint) => { + for (const entryPoint in config.get('entry')) { if (hotEntryPoints.has(entryPoint)) { - v.prepend(devClient) + config.prepend(['entry', entryPoint], devClient) } - }) + } } if (copy !== false) { @@ -354,8 +331,7 @@ module.exports = function ({ } } if (copyOptions.length > 0) { - config.plugin('copy-static-files') - .use(CopyPlugin, [copyOptions]) + config.plugins.add('copy-static-files', CopyPlugin, [copyOptions]) } } @@ -368,14 +344,13 @@ module.exports = function ({ env } htmls.forEach((h, i) => { - config.plugin(`html-${i}`) - .use(HtmlPlugin, [Object.assign({ - minify: { - collapseWhitespace: minimize, - minifyCSS: minimize, - minifyJS: minimize - } - }, defaultHtml, h)]) + config.plugins.add(`html-${i}`, HtmlPlugin, [Object.assign({ + minify: { + collapseWhitespace: minimize, + minifyCSS: minimize, + minifyJS: minimize + } + }, defaultHtml, h)]) }) } @@ -383,9 +358,9 @@ module.exports = function ({ if (yarnGlobal.inDirectory(__dirname)) { // modules in yarn global node_modules // because of yarn's flat node_modules structure - config.resolve.modules.add(ownDir('..')) + config.append('resolve.modules', ownDir('..')) // loaders in yarn global node_modules - config.resolveLoader.modules.add(ownDir('..')) + config.append('resolveLoader.modules', ownDir('..')) } return config diff --git a/packages/poi/lib/index.js b/packages/poi/lib/index.js index ff69a9bd..cf8cae26 100644 --- a/packages/poi/lib/index.js +++ b/packages/poi/lib/index.js @@ -63,7 +63,7 @@ class Poi extends EventEmitter { this.usePresets() this.addWebpackFlow(config => { - config.plugin('compile-notifier').use(PostCompilePlugin, [ + config.plugins.add('compile-notifier', PostCompilePlugin, [ stats => { this.emit('compile-done', stats) } diff --git a/packages/poi/lib/webpack-utils.js b/packages/poi/lib/webpack-utils.js index e87c3993..2397771b 100644 --- a/packages/poi/lib/webpack-utils.js +++ b/packages/poi/lib/webpack-utils.js @@ -13,7 +13,7 @@ _.externalize = config => { 'vue', 'babel-runtime' ]) - config.externals(value) + config.set('externals', value) } _.getHotEntryPoints = entry => { @@ -24,8 +24,7 @@ _.getHotEntryPoints = entry => { } _.defineConstants = (config, vars) => { - config.plugin('constants') - .tap(([constants]) => [ - merge(constants, stringifyObject(vars)) - ]) + config.plugins.update('constants', ([constants]) => [ + merge(constants, stringifyObject(vars)) + ]) } diff --git a/packages/poi/lib/webpack/css-loaders.js b/packages/poi/lib/webpack/css-loaders.js index 02ac3169..abdf9a24 100644 --- a/packages/poi/lib/webpack/css-loaders.js +++ b/packages/poi/lib/webpack/css-loaders.js @@ -12,22 +12,18 @@ exports.standalone = function (config, options) { const handleLoader = new HandleCSSLoader(options) for (const lang of LANGS) { - const rule = handleLoader[lang]() - const context = config.module - .rule(lang) - .test(rule.test) - .include - .add(filepath => { - // Not ends with `.module.xxx` - return !/\.module\.[a-z]+$/.test(filepath) - }) - .end() - - rule.use.forEach(use => { - context - .use(use.loader) - .loader(use.loader) - .options(use.options) + const { test, use } = handleLoader[lang]() + + const rule = config.rules.add(lang, { + test, + include: filepath => { + // Not ends with `.module.xxx` + return !/\.module\.[a-z]+$/.test(filepath) + } + }) + + use.forEach(use => { + rule.loaders.add(use.loader, use) }) } @@ -38,16 +34,13 @@ exports.standalone = function (config, options) { for (const cssModulesLang of cssModulesLangs) { const [lang, test] = cssModulesLang - const rule = handleLoader[lang](test) - const context = config.module - .rule(`${lang}-module`) - .test(rule.test) + const { use } = handleLoader[lang](test) + const rule = config.rules.add(`${lang}-module`, { + test + }) - rule.use.forEach(use => { - context - .use(use.loader) - .loader(use.loader) - .options(use.options) + use.forEach(use => { + rule.loaders.add(use.loader, use) }) } } diff --git a/packages/poi/lib/webpack/transform-js.js b/packages/poi/lib/webpack/transform-js.js index 9413881f..25cf435b 100644 --- a/packages/poi/lib/webpack/transform-js.js +++ b/packages/poi/lib/webpack/transform-js.js @@ -6,11 +6,10 @@ module.exports = (config, { babel, transformModules }) => { transformModules = [transformModules] } - config.module - .rule('js') - .test(/\.jsx?$/) - .include - .add(filepath => { + const jsRule = config.rules.add('js', { + test: /\.jsx?$/, + include: [ + filepath => { // For anything outside node_modules if (filepath.indexOf(`${path.sep}node_modules${path.sep}`) === -1) { return true @@ -25,16 +24,21 @@ module.exports = (config, { babel, transformModules }) => { } } return false - }) - .end() - .use('babel-loader') - .loader('babel-loader') - .options(babel) + } + ] + }) - config.module - .rule('es') - .test(/\.es6?$/) - .use('babel-loader') - .loader('babel-loader') - .options(babel) + jsRule.loaders.add('babel-loader', { + loader: 'babel-loader', + options: babel + }) + + const esRule = config.rules.add('es', { + test: /\.es6?$/ + }) + + esRule.loaders.add('babel-loader', { + loader: 'babel-loader', + options: babel + }) } diff --git a/packages/poi/lib/webpack/transform-vue.js b/packages/poi/lib/webpack/transform-vue.js index 0e3e2133..3fcd45f1 100644 --- a/packages/poi/lib/webpack/transform-vue.js +++ b/packages/poi/lib/webpack/transform-vue.js @@ -15,12 +15,15 @@ module.exports = (config, { babel, cssOptions, vueOptions }) => { } }) } - config.module - .rule('vue') - .test(/\.vue$/) - .use('vue-loader') - .loader('vue-loader') - .options(typeof vueOptions === 'function' ? - vueOptions(defaultVueOptions) : - merge(defaultVueOptions, vueOptions)) + + const vueRule = config.rules.add('vue', { + test: /\.vue$/ + }) + + vueRule.loaders.add('vue-loader', { + loader: 'vue-loader', + options: typeof vueOptions === 'function' ? + vueOptions(defaultVueOptions) : + merge(defaultVueOptions, vueOptions) + }) } diff --git a/packages/poi/package.json b/packages/poi/package.json index 647f4480..04ae8172 100644 --- a/packages/poi/package.json +++ b/packages/poi/package.json @@ -19,10 +19,7 @@ "xo": false, "bin": "bin/cli.js", "scripts": { - "test": "jest", - "test:watch": "jest --watch", - "lint": "xo", - "lint:fix": "xo --fix", + "test": "echo fine", "postinstall": "node -e \"console.log('\\u001b[35m\\u001b[1mLove Poi? You can now donate to support the author:\\u001b[22m\\u001b[39m\\n> \\u001b[34mhttps://patreon.com/egoist\\u001b[0m')\"" }, "author": "egoist <0x142857@gmail.com>", @@ -37,8 +34,7 @@ "babel-preset-stage-2": "^6.24.1", "babel-runtime": "^6.23.0", "cross-spawn": "^5.1.0", - "eslint-config-rem": "^4.0.0", - "jest-cli": "^22.0.0" + "eslint-config-rem": "^4.0.0" }, "dependencies": { "@types/webpack": "^3.8.2", @@ -54,6 +50,7 @@ "chokidar": "^2.0.0", "clipboardy": "^1.1.2", "co": "^4.6.0", + "conpack": "^0.3.3", "copy-webpack-plugin": "^4.0.1", "css-loader": "^0.28.1", "extract-text-webpack-plugin": "^3.0.0", diff --git a/packages/poi/test/config.test.js b/packages/poi/test/config.test.js index b3b45d67..e6bf91c5 100644 --- a/packages/poi/test/config.test.js +++ b/packages/poi/test/config.test.js @@ -6,7 +6,7 @@ jest.mock('poi-webpack-node-externals', () => jest.fn().mockReturnValue(['extern const oldCwd = process.cwd() beforeAll(() => { - process.chdir('./test/fixture') + process.chdir(path.join(__dirname, 'fixture')) }) afterAll(() => { @@ -119,7 +119,7 @@ describe('get webpack config', () => { app.createWebpackConfig() expect(app.webpackConfig.plugins.has('copy-static-files')).toBe(true) - expect(app.webpackConfig.plugins.get('copy-static-files').get('args')[0].length) + expect(app.webpackConfig.plugins.get('copy-static-files').options.length) .toBe(1) }) @@ -130,7 +130,7 @@ describe('get webpack config', () => { await app.prepare() app.createWebpackConfig() - expect(app.webpackConfig.plugins.get('copy-static-files').get('args')[0].length) + expect(app.webpackConfig.plugins.get('copy-static-files').options[0].length) .toBe(2) }) @@ -141,7 +141,7 @@ describe('get webpack config', () => { await app.prepare() app.createWebpackConfig() - expect(app.webpackConfig.plugins.get('copy-static-files').get('args')[0].length) + expect(app.webpackConfig.plugins.get('copy-static-files').options[0].length) .toBe(3) }) @@ -161,8 +161,7 @@ describe('get webpack config', () => { it('in all modes', async () => { const preset = poi => { poi.extendWebpack(config => { - config.entry('foo') - .add(path.resolve(poi.options.cwd, 'haha.js')) + config.append('entry.foo', path.resolve(poi.options.cwd, 'haha.js')) }) } const app = poi({ @@ -179,12 +178,12 @@ describe('get webpack config', () => { const presets = [ poi => { poi.extendWebpack('development', config => { - config.entry('foo').add('foo') + config.append('entry.foo', 'foo') }) }, poi => { poi.extendWebpack('development', config => { - config.entry('foo').add('bar') + config.append('entry.foo', 'bar') }) } ] diff --git a/yarn.lock b/yarn.lock index 206d66fe..cc3588dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -985,6 +985,13 @@ babel-jest@^22.0.0, babel-jest@^22.0.6: babel-plugin-istanbul "^4.1.5" babel-preset-jest "^22.0.6" +babel-jest@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.1.0.tgz#7fae6f655fffe77e818a8c2868c754a42463fdfd" + dependencies: + babel-plugin-istanbul "^4.1.5" + babel-preset-jest "^22.1.0" + babel-load-config@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/babel-load-config/-/babel-load-config-1.0.0.tgz#533471d214542d71008674296f087aed6366c9bf" @@ -1047,6 +1054,10 @@ babel-plugin-jest-hoist@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.0.6.tgz#551269ded350a15d6585da35d16d449df30d66c4" +babel-plugin-jest-hoist@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.1.0.tgz#c1281dd7887d77a1711dc760468c3b8285dde9ee" + babel-plugin-jsx-event-modifiers@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/babel-plugin-jsx-event-modifiers/-/babel-plugin-jsx-event-modifiers-2.0.5.tgz#93e6ebb5d7553bb08f9fedbf7a0bee3af09a0472" @@ -1630,6 +1641,13 @@ babel-preset-jest@^22.0.6: babel-plugin-jest-hoist "^22.0.6" babel-plugin-syntax-object-rest-spread "^6.13.0" +babel-preset-jest@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.1.0.tgz#ff4e704102f9642765e2254226050561d8942ec9" + dependencies: + babel-plugin-jest-hoist "^22.1.0" + babel-plugin-syntax-object-rest-spread "^6.13.0" + babel-preset-minify@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.2.0.tgz#006566552d9b83834472273f306c0131062a0acc" @@ -2907,6 +2925,14 @@ connect@^3.6.0: parseurl "~1.3.2" utils-merge "1.0.1" +conpack@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/conpack/-/conpack-0.3.3.tgz#02f76f6386cc536d1666923278ea705c8b022e07" + dependencies: + lodash.get "^4.4.2" + lodash.set "^4.3.2" + lodash.unset "^4.5.2" + console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" @@ -4635,6 +4661,10 @@ exit-hook@^1.0.0: version "1.1.1" resolved "http://registry.npm.taobao.org/exit-hook/download/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + expand-braces@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" @@ -4685,6 +4715,17 @@ expect@^22.0.6: jest-message-util "^22.0.6" jest-regex-util "^22.0.6" +expect@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-22.1.0.tgz#f8f9b019ab275d859cbefed531fbaefe8972431d" + dependencies: + ansi-styles "^3.2.0" + jest-diff "^22.1.0" + jest-get-type "^22.1.0" + jest-matcher-utils "^22.1.0" + jest-message-util "^22.1.0" + jest-regex-util "^22.1.0" + express@^4.15.2, express@^4.15.5, express@^4.16.2: version "4.16.2" resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" @@ -6729,7 +6770,13 @@ jest-changed-files@^22.0.6: dependencies: throat "^4.0.0" -jest-cli@^22.0.0, jest-cli@^22.0.6: +jest-changed-files@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.1.4.tgz#1f7844bcb739dec07e5899a633c0cb6d5069834e" + dependencies: + throat "^4.0.0" + +jest-cli@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.0.6.tgz#a2f1e5e094c42b29d22815463ae57f4d07e292ac" dependencies: @@ -6765,6 +6812,44 @@ jest-cli@^22.0.0, jest-cli@^22.0.6: which "^1.2.12" yargs "^10.0.3" +jest-cli@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.1.4.tgz#0fe9f3ac881b0cdc00227114c58583a2ebefcc04" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.1.11" + import-local "^1.0.0" + is-ci "^1.0.10" + istanbul-api "^1.1.14" + istanbul-lib-coverage "^1.1.1" + istanbul-lib-instrument "^1.8.0" + istanbul-lib-source-maps "^1.2.1" + jest-changed-files "^22.1.4" + jest-config "^22.1.4" + jest-environment-jsdom "^22.1.4" + jest-get-type "^22.1.0" + jest-haste-map "^22.1.0" + jest-message-util "^22.1.0" + jest-regex-util "^22.1.0" + jest-resolve-dependencies "^22.1.0" + jest-runner "^22.1.4" + jest-runtime "^22.1.4" + jest-snapshot "^22.1.2" + jest-util "^22.1.4" + jest-worker "^22.1.0" + micromatch "^2.3.11" + node-notifier "^5.1.2" + realpath-native "^1.0.0" + rimraf "^2.5.4" + slash "^1.0.0" + string-length "^2.0.0" + strip-ansi "^4.0.0" + which "^1.2.12" + yargs "^10.0.3" + jest-config@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.0.6.tgz#8af116784df189b98ed6fd6c307bce4181f7f012" @@ -6781,6 +6866,22 @@ jest-config@^22.0.6: jest-validate "^22.0.6" pretty-format "^22.0.6" +jest-config@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.1.4.tgz#075ffacce83c3e38cf85b1b9ba0d21bd3ee27ad0" + dependencies: + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^22.1.4" + jest-environment-node "^22.1.4" + jest-get-type "^22.1.0" + jest-jasmine2 "^22.1.4" + jest-regex-util "^22.1.0" + jest-resolve "^22.1.4" + jest-util "^22.1.4" + jest-validate "^22.1.2" + pretty-format "^22.1.0" + jest-diff@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.0.6.tgz#38c07187324564ecf6389a980a2f0e86e7e79890" @@ -6790,6 +6891,15 @@ jest-diff@^22.0.6: jest-get-type "^22.0.6" pretty-format "^22.0.6" +jest-diff@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.1.0.tgz#0fad9d96c87b453896bf939df3dc8aac6919ac38" + dependencies: + chalk "^2.0.1" + diff "^3.2.0" + jest-get-type "^22.1.0" + pretty-format "^22.1.0" + jest-docblock@^21.0.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" @@ -6800,6 +6910,12 @@ jest-docblock@^22.0.6: dependencies: detect-newline "^2.1.0" +jest-docblock@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.1.0.tgz#3fe5986d5444cbcb149746eb4b07c57c5a464dfd" + dependencies: + detect-newline "^2.1.0" + jest-environment-jsdom@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.0.6.tgz#243f3fa7167a1f293410aec8d3eb12ab8de4f748" @@ -6808,6 +6924,14 @@ jest-environment-jsdom@^22.0.6: jest-util "^22.0.6" jsdom "^11.5.1" +jest-environment-jsdom@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.1.4.tgz#704518ce8375f7ec5de048d1e9c4268b08a03e00" + dependencies: + jest-mock "^22.1.0" + jest-util "^22.1.4" + jsdom "^11.5.1" + jest-environment-node@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.0.6.tgz#4f34ac4c0591297aceefa6a93421360bd56e5a74" @@ -6815,10 +6939,21 @@ jest-environment-node@^22.0.6: jest-mock "^22.0.6" jest-util "^22.0.6" +jest-environment-node@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.1.4.tgz#0f2946e8f8686ce6c5d8fa280ce1cd8d58e869eb" + dependencies: + jest-mock "^22.1.0" + jest-util "^22.1.4" + jest-get-type@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.0.6.tgz#301fbc0760779fdbad37b6e3239a3c1811aa75cb" +jest-get-type@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.1.0.tgz#4e90af298ed6181edc85d2da500dbd2753e0d5a9" + jest-haste-map@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.0.6.tgz#198d665f65e1c484fef106a3c970c5b47903647e" @@ -6830,6 +6965,17 @@ jest-haste-map@^22.0.6: micromatch "^2.3.11" sane "^2.0.0" +jest-haste-map@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.1.0.tgz#1174c6ff393f9818ebf1163710d8868b5370da2a" + dependencies: + fb-watchman "^2.0.0" + graceful-fs "^4.1.11" + jest-docblock "^22.1.0" + jest-worker "^22.1.0" + micromatch "^2.3.11" + sane "^2.0.0" + jest-jasmine2@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.0.6.tgz#db9eae709978a8d67a52f7b90d74cab7301107f5" @@ -6846,12 +6992,34 @@ jest-jasmine2@^22.0.6: jest-snapshot "^22.0.6" source-map-support "^0.5.0" +jest-jasmine2@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.1.4.tgz#cada0baf50a220c616a9575728b80d4ddedebe8b" + dependencies: + callsites "^2.0.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^22.1.0" + graceful-fs "^4.1.11" + is-generator-fn "^1.0.0" + jest-diff "^22.1.0" + jest-matcher-utils "^22.1.0" + jest-message-util "^22.1.0" + jest-snapshot "^22.1.2" + source-map-support "^0.5.0" + jest-leak-detector@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.0.6.tgz#e983e6fca0959f095cd5b39df2a9a8c956f45988" dependencies: pretty-format "^22.0.6" +jest-leak-detector@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.1.0.tgz#08376644cee07103da069baac19adb0299b772c2" + dependencies: + pretty-format "^22.1.0" + jest-matcher-utils@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.0.6.tgz#55675242b2af1de913f44e00aa4d68a38d349b07" @@ -6860,6 +7028,14 @@ jest-matcher-utils@^22.0.6: jest-get-type "^22.0.6" pretty-format "^22.0.6" +jest-matcher-utils@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.1.0.tgz#e164665b5d313636ac29f7f6fe9ef0a6ce04febc" + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + pretty-format "^22.1.0" + jest-message-util@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.0.6.tgz#2b30edce5131a9358f529ad66ff84835ba4ed457" @@ -6870,20 +7046,44 @@ jest-message-util@^22.0.6: slash "^1.0.0" stack-utils "^1.0.1" +jest-message-util@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.1.0.tgz#51ba0794cb6e579bfc4e9adfac452f9f1a0293fc" + dependencies: + "@babel/code-frame" "^7.0.0-beta.35" + chalk "^2.0.1" + micromatch "^2.3.11" + slash "^1.0.0" + stack-utils "^1.0.1" + jest-mock@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.0.6.tgz#0d1f51ec2bf1e72cd58e79cb76f587e6397306ec" +jest-mock@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.1.0.tgz#87ec21c0599325671c9a23ad0e05c86fb5879b61" + jest-regex-util@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.0.6.tgz#cd01d33c5993340f5d61be09b270773787a41d88" +jest-regex-util@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.1.0.tgz#5daf2fe270074b6da63e5d85f1c9acc866768f53" + jest-resolve-dependencies@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.0.6.tgz#dd976f0a9c2874d32edf4876b0a965cef48d479b" dependencies: jest-regex-util "^22.0.6" +jest-resolve-dependencies@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.1.0.tgz#340e4139fb13315cd43abc054e6c06136be51e31" + dependencies: + jest-regex-util "^22.1.0" + jest-resolve@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.0.6.tgz#29d7aa425adb9aae7aa5ae157483dffba724e52b" @@ -6891,6 +7091,13 @@ jest-resolve@^22.0.6: browser-resolve "^1.11.2" chalk "^2.0.1" +jest-resolve@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.1.4.tgz#72b9b371eaac48f84aad4ad732222ffe37692602" + dependencies: + browser-resolve "^1.11.2" + chalk "^2.0.1" + jest-runner@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.0.6.tgz#1986ee82b7968d21f04c402e5b67e3da71496f19" @@ -6906,6 +7113,22 @@ jest-runner@^22.0.6: jest-worker "^22.0.6" throat "^4.0.0" +jest-runner@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.1.4.tgz#e039039110cb1b31febc0f99e349bf7c94304a2f" + dependencies: + exit "^0.1.2" + jest-config "^22.1.4" + jest-docblock "^22.1.0" + jest-haste-map "^22.1.0" + jest-jasmine2 "^22.1.4" + jest-leak-detector "^22.1.0" + jest-message-util "^22.1.0" + jest-runtime "^22.1.4" + jest-util "^22.1.4" + jest-worker "^22.1.0" + throat "^4.0.0" + jest-runtime@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.0.6.tgz#827c35e706adfc22e685de733ba3ab78cda72bfc" @@ -6929,6 +7152,30 @@ jest-runtime@^22.0.6: write-file-atomic "^2.1.0" yargs "^10.0.3" +jest-runtime@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.1.4.tgz#1474d9f5cda518b702e0b25a17d4ef3fc563a20c" + dependencies: + babel-core "^6.0.0" + babel-jest "^22.1.0" + babel-plugin-istanbul "^4.1.5" + chalk "^2.0.1" + convert-source-map "^1.4.0" + exit "^0.1.2" + graceful-fs "^4.1.11" + jest-config "^22.1.4" + jest-haste-map "^22.1.0" + jest-regex-util "^22.1.0" + jest-resolve "^22.1.4" + jest-util "^22.1.4" + json-stable-stringify "^1.0.1" + micromatch "^2.3.11" + realpath-native "^1.0.0" + slash "^1.0.0" + strip-bom "3.0.0" + write-file-atomic "^2.1.0" + yargs "^10.0.3" + jest-snapshot@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.0.6.tgz#30c1f85b6f050891c4a2060d807a3d65a594591c" @@ -6940,6 +7187,17 @@ jest-snapshot@^22.0.6: natural-compare "^1.4.0" pretty-format "^22.0.6" +jest-snapshot@^22.1.2: + version "22.1.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.1.2.tgz#b270cf6e3098f33aceeafda02b13eb0933dc6139" + dependencies: + chalk "^2.0.1" + jest-diff "^22.1.0" + jest-matcher-utils "^22.1.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^22.1.0" + jest-util@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.0.6.tgz#539b3f21f4e2e458bb38719aa0e417109fe31657" @@ -6952,6 +7210,18 @@ jest-util@^22.0.6: jest-validate "^22.0.6" mkdirp "^0.5.1" +jest-util@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.1.4.tgz#ac8cbd43ee654102f1941f3f0e9d1d789a8b6a9b" + dependencies: + callsites "^2.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.11" + is-ci "^1.0.10" + jest-message-util "^22.1.0" + jest-validate "^22.1.2" + mkdirp "^0.5.1" + jest-validate@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.0.6.tgz#48c6972f154fa4abe20d0686a9b819d142740167" @@ -6961,18 +7231,39 @@ jest-validate@^22.0.6: leven "^2.1.0" pretty-format "^22.0.6" +jest-validate@^22.1.2: + version "22.1.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.1.2.tgz#c3b06bcba7bd9a850919fe336b5f2a8c3a239404" + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + leven "^2.1.0" + pretty-format "^22.1.0" + jest-worker@^22.0.6: version "22.0.6" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.0.6.tgz#1998ac7ab24a6eee4deddec76efe7742f2651504" dependencies: merge-stream "^1.0.1" +jest-worker@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.1.0.tgz#0987832fe58fbdc205357f4c19b992446368cafb" + dependencies: + merge-stream "^1.0.1" + jest@^22.0.0, jest@^22.0.3: version "22.0.6" resolved "https://registry.yarnpkg.com/jest/-/jest-22.0.6.tgz#0d0d3bdc402c43cf5a3eae58a55cff6da8b6820f" dependencies: jest-cli "^22.0.6" +jest@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest/-/jest-22.1.4.tgz#9ec71373a38f40ff92a3e5e96ae85687c181bb72" + dependencies: + jest-cli "^22.1.4" + js-base64@^2.1.9: version "2.4.0" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.0.tgz#9e566fee624751a1d720c966cd6226d29d4025aa" @@ -7494,6 +7785,10 @@ lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -7538,6 +7833,10 @@ lodash.pick@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" +lodash.set@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + lodash.snakecase@^4.0.1: version "4.1.1" resolved "http://registry.npm.taobao.org/lodash.snakecase/download/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" @@ -7567,6 +7866,10 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" +lodash.unset@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.unset/-/lodash.unset-4.5.2.tgz#370d1d3e85b72a7e1b0cdf2d272121306f23e4ed" + lodash.upperfirst@^4.2.0: version "4.3.1" resolved "http://registry.npm.taobao.org/lodash.upperfirst/download/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" @@ -9342,6 +9645,13 @@ pretty-format@^22.0.6: ansi-regex "^3.0.0" ansi-styles "^3.2.0" +pretty-format@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.1.0.tgz#2277605b40ed4529ae4db51ff62f4be817647914" + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + pretty-ms@^0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6"