aboutsummaryrefslogtreecommitdiffstats
path: root/webpack.common.js
diff options
context:
space:
mode:
Diffstat (limited to 'webpack.common.js')
-rw-r--r--webpack.common.js74
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