summaryrefslogtreecommitdiffstats
path: root/webpack.common.config.js
diff options
context:
space:
mode:
authorGrigorii Shartsev <grigorii.shartsev@nextcloud.com>2023-03-14 10:01:41 +0100
committerGrigorii Shartsev <grigorii.shartsev@nextcloud.com>2023-03-14 10:02:12 +0100
commit13472d0e86406d82c02259ce1ed7a9b728c501bc (patch)
treef8b9e0e066ee69fb6933dd3ed14b19e49714e341 /webpack.common.config.js
parent7bf0ca9e23bc18487140c02d7c19d568391772e3 (diff)
feat(desktop): prepare webpack config for desktop
- Define IS_DESKTOP global variable - Separate the config to common and web parts - Use cross-platform slashes on webpack rules' tests Signed-off-by: Grigorii Shartsev <grigorii.shartsev@nextcloud.com>
Diffstat (limited to 'webpack.common.config.js')
-rw-r--r--webpack.common.config.js82
1 files changed, 82 insertions, 0 deletions
diff --git a/webpack.common.config.js b/webpack.common.config.js
new file mode 100644
index 000000000..3a34b0ced
--- /dev/null
+++ b/webpack.common.config.js
@@ -0,0 +1,82 @@
+/*
+ * @copyright Copyright (c) 2022 Grigorii Shartsev <grigorii.shartsev@nextcloud.com>
+ *
+ * @author Grigorii Shartsev <grigorii.shartsev@nextcloud.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const BabelLoaderExcludeNodeModulesExcept = require('babel-loader-exclude-node-modules-except')
+
+const nextcloudWebpackRules = require('@nextcloud/webpack-vue-config/rules')
+
+// Edit JS rule
+nextcloudWebpackRules.RULE_JS.exclude = BabelLoaderExcludeNodeModulesExcept([
+ '@nextcloud/event-bus',
+ 'ansi-regex',
+ 'color.js',
+ 'fast-xml-parser',
+ 'hot-patcher',
+ 'nextcloud-vue-collections',
+ 'semver',
+ 'strip-ansi',
+ 'tributejs',
+ 'vue-resize',
+ 'webdav',
+])
+
+module.exports = {
+ module: {
+ rules: [
+ // Reuse @nextcloud/webpack-vue-config/rules
+ ...Object.values(nextcloudWebpackRules),
+
+ {
+ /**
+ * webrtc-adapter main module does no longer provide
+ * "module.exports", which is expected by some elements using it
+ * (like "attachmediastream"), so it needs to be added back with
+ * a plugin.
+ */
+ test: /node_modules[\\/]webrtc-adapter[\\/].*\.js$/,
+ loader: 'babel-loader',
+ options: {
+ plugins: ['add-module-exports'],
+ presets: [
+ /**
+ * From "add-module-exports" documentation:
+ * "webpack doesn't perform commonjs transformation for
+ * codesplitting. Need to set commonjs conversion."
+ */
+ ['@babel/env', { modules: 'commonjs' }],
+ ],
+ },
+ },
+ {
+ test: /\.wasm$/i,
+ type: 'asset/resource',
+ },
+ {
+ test: /\.tflite$/i,
+ type: 'asset/resource',
+ },
+ {
+ test: /\.worker\.js$/,
+ use: { loader: 'worker-loader' },
+ },
+ ],
+ },
+}