diff options
Diffstat (limited to 'webpack.common.js')
-rw-r--r-- | webpack.common.js | 74 |
1 files changed, 45 insertions, 29 deletions
diff --git a/webpack.common.js b/webpack.common.js index e020a5c2904..80b0e0838e7 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -1,3 +1,4 @@ +/* eslint-disable n/no-extraneous-require */ /* eslint-disable camelcase */ /** * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors @@ -14,8 +15,11 @@ const WorkboxPlugin = require('workbox-webpack-plugin') const WebpackSPDXPlugin = require('./build/WebpackSPDXPlugin.js') const modules = require('./webpack.modules.js') +const { codecovWebpackPlugin } = require('@codecov/webpack-plugin') -const appVersion = readFileSync('./version.php').toString().match(/OC_VersionString[^']+'([^']+)/)?.[1] ?? 'unknown' +const appVersion = readFileSync('./version.php').toString().match(/OC_Version.+\[([0-9]{2})/)?.[1] ?? 'unknown' +const isDev = process.env.NODE_ENV === 'development' +const isTesting = process.env.TESTING === "true" const formatOutputFromModules = (modules) => { // merge all configs into one object, and use AppID to generate the fileNames @@ -48,7 +52,7 @@ const modulesToBuild = () => { return formatOutputFromModules(modules) } -module.exports = { +const config = { entry: modulesToBuild(), output: { // Step away from the src folder and extract to the js folder @@ -149,23 +153,6 @@ module.exports = { }, optimization: { - minimizer: [{ - apply: (compiler) => { - // Lazy load the Terser plugin - const TerserPlugin = require('terser-webpack-plugin') - new TerserPlugin({ - extractComments: false, - terserOptions: { - format: { - comments: false, - }, - compress: { - passes: 2, - }, - }, - }).apply(compiler) - }, - }], splitChunks: { automaticNameDelimiter: '-', minChunks: 3, // minimum number of chunks that must share the module @@ -184,7 +171,9 @@ module.exports = { plugins: [ new VueLoaderPlugin(), - new NodePolyfillPlugin(), + new NodePolyfillPlugin({ + additionalAliases: ['process'], + }), new webpack.ProvidePlugin({ // Provide jQuery to jquery plugins as some are loaded before $ is exposed globally. // We need to provide the path to node_moduels as otherwise npm link will fail due @@ -238,15 +227,10 @@ module.exports = { resourceRegExp: /^\.\/locale$/, contextRegExp: /moment\/min$/, }), - - // Generate reuse license files - new WebpackSPDXPlugin({ - override: { - select2: 'MIT', - '@nextcloud/axios': 'GPL-3.0-or-later', - '@nextcloud/vue': 'AGPL-3.0-or-later', - 'nextcloud-vue-collections': 'AGPL-3.0-or-later', - } + codecovWebpackPlugin({ + enableBundleAnalysis: !isDev && !isTesting, + bundleName: 'nextcloud', + telemetry: false, }), ], externals: { @@ -274,3 +258,35 @@ module.exports = { }, }, } + +// Generate reuse license files if not in development mode +if (!isDev) { + config.plugins.push(new WebpackSPDXPlugin({ + override: { + select2: 'MIT', + '@nextcloud/axios': 'GPL-3.0-or-later', + '@nextcloud/vue': 'AGPL-3.0-or-later', + 'nextcloud-vue-collections': 'AGPL-3.0-or-later', + }, + })) + + config.optimization.minimizer = [{ + apply: (compiler) => { + // Lazy load the Terser plugin + const TerserPlugin = require('terser-webpack-plugin') + new TerserPlugin({ + extractComments: false, + terserOptions: { + format: { + comments: false, + }, + compress: { + passes: 2, + }, + }, + }).apply(compiler) + }, + }] +} + +module.exports = config |