From 253c8611e13aca61e7b06e864e9fdb7ddf63c191 Mon Sep 17 00:00:00 2001 From: Jamie Stackhouse Date: Thu, 10 Jan 2019 10:49:17 -0400 Subject: [PATCH] Changes clone function used in webpack config to be the webpack recommended merging library. --- package-lock.json | 17 +++++++++++++++++ package.json | 1 + webpack.config.js | 26 +++++++++++++------------- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index c1075fddbee..9ef1af29eac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16473,6 +16473,23 @@ } } }, + "webpack-merge": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, "webpack-sources": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", diff --git a/package.json b/package.json index ee2b931f5b7..7d33718ad3b 100644 --- a/package.json +++ b/package.json @@ -86,6 +86,7 @@ "webpack-bundle-analyzer": "^2.9.1", "webpack-cli": "^3.0.2", "webpack-dev-server": "^3.1.4", + "webpack-merge": "^4.2.1", "webworkify-webpack": "^2.1.2" } } diff --git a/webpack.config.js b/webpack.config.js index 233bfc33c62..c37197aa197 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,14 +1,13 @@ const pkgJson = require('./package.json'); const path = require('path'); const webpack = require('webpack'); +const merge = require('webpack-merge'); const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; const getGitVersion = require('git-tag-version'); const getGitCommitInfo = require('git-commit-info'); -const clone = (...args) => Object.assign({}, ...args); - /* Allow to customise builds through env-vars */ const env = process.env; @@ -22,19 +21,22 @@ const baseConfig = { entry: './src/hls', resolve: { // Add `.ts` as a resolvable extension. - extensions: [".ts", ".js"] + extensions: ['.ts', '.js'] }, module: { strictExportPresence: true, rules: [ // all files with a `.ts` extension will be handled by `ts-loader` - { test: /\.ts?$/, loader: "ts-loader" }, - { test: /\.js?$/, exclude: [/node_modules/], loader: "ts-loader" }, + { + test: /\.(ts|js)$/, + loader: 'ts-loader', + exclude: /node_modules/ + } ] } }; -const demoConfig = clone(baseConfig, { +const demoConfig = merge(baseConfig, { name: 'demo', mode: 'development', entry: './demo/main', @@ -47,7 +49,7 @@ const demoConfig = clone(baseConfig, { library: 'HlsDemo', libraryTarget: 'umd', libraryExport: 'default', - globalObject: 'this' // https://github.com/webpack/webpack/issues/6642#issuecomment-370222543 + globalObject: 'this' // https://github.com/webpack/webpack/issues/6642#issuecomment-370222543 }, optimization: { minimize: false @@ -56,7 +58,7 @@ const demoConfig = clone(baseConfig, { devtool: 'source-map' }); -function getPluginsForConfig(type, minify = false) { +function getPluginsForConfig (type, minify = false) { // common plugins. const defineConstants = getConstantsForConfig(type); @@ -86,7 +88,6 @@ function getPluginsForConfig(type, minify = false) { } function getConstantsForConfig (type) { - const gitCommitInfo = getGitCommitInfo(); const suffix = gitCommitInfo.shortCommit ? ('-' + gitCommitInfo.shortCommit) : ''; @@ -109,7 +110,7 @@ function getAliasesForLightDist () { } if (!addSubtitleSupport) { - aliases = clone(aliases, { + aliases = Object.assign(aliases, { './utils/cues': './empty.js', './controller/timeline-controller': './empty.js', './controller/subtitle-track-controller': './empty.js', @@ -118,7 +119,7 @@ function getAliasesForLightDist () { } if (!addAltAudioSupport) { - aliases = clone(aliases, { + aliases = Object.assign(aliases, { './controller/audio-track-controller': './empty.js', './controller/audio-stream-controller': './empty.js' }); @@ -206,13 +207,12 @@ const multiConfig = [ }, devtool: 'source-map' } -].map(config => clone(baseConfig, config)); +].map(config => merge(baseConfig, config)); multiConfig.push(demoConfig); // webpack matches the --env arguments to a string; for example, --env.debug.min translates to { debug: true, min: true } module.exports = (envArgs) => { - let configs; if (!envArgs) {