summaryrefslogtreecommitdiffstats
path: root/webpack.config.js
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@users.noreply.github.com>2022-11-16 09:48:43 +0100
committerGitHub <noreply@github.com>2022-11-16 09:48:43 +0100
commitdc3f566f82aa82ad07b445cfbe85b552db9a9bfc (patch)
tree140ab5b9fcb7fa86053a2f7aef49bbf8329c50d7 /webpack.config.js
parent56eddaedbecd6bd982c4e7189983959d79c9d7d9 (diff)
Rename webpack.js to webpack.config.js
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
Diffstat (limited to 'webpack.config.js')
-rw-r--r--webpack.config.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 000000000..0ed882d69
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,99 @@
+const path = require('path')
+const webpackConfig = require('@nextcloud/webpack-vue-config')
+const webpackRules = require('@nextcloud/webpack-vue-config/rules')
+const BabelLoaderExcludeNodeModulesExcept = require('babel-loader-exclude-node-modules-except')
+
+webpackConfig.entry = {
+ 'admin-settings': path.join(__dirname, 'src', 'mainAdminSettings.js'),
+ collections: path.join(__dirname, 'src', 'collections.js'),
+ main: path.join(__dirname, 'src', 'main.js'),
+ 'files-sidebar': [
+ path.join(__dirname, 'src', 'mainFilesSidebar.js'),
+ path.join(__dirname, 'src', 'mainFilesSidebarLoader.js'),
+ ],
+ 'public-share-auth-sidebar': path.join(__dirname, 'src', 'mainPublicShareAuthSidebar.js'),
+ 'public-share-sidebar': path.join(__dirname, 'src', 'mainPublicShareSidebar.js'),
+ flow: path.join(__dirname, 'src', 'flow.js'),
+ dashboard: path.join(__dirname, 'src', 'dashboard.js'),
+ deck: path.join(__dirname, 'src', 'deck.js'),
+ maps: path.join(__dirname, 'src', 'maps.js'),
+}
+
+webpackConfig.output.assetModuleFilename = '[name][ext]?v=[contenthash]'
+
+// Edit JS rule
+webpackRules.RULE_JS.exclude = BabelLoaderExcludeNodeModulesExcept([
+ '@nextcloud/vue-richtext',
+ '@nextcloud/event-bus',
+ '@nextcloud/vue-dashboard',
+ 'ansi-regex',
+ 'color.js',
+ 'fast-xml-parser',
+ 'hot-patcher',
+ 'nextcloud-vue-collections',
+ 'semver',
+ 'strip-ansi',
+ 'tributejs',
+ 'vue-resize',
+ 'webdav',
+])
+
+// Replaces rules array
+webpackConfig.module.rules = Object.values(webpackRules)
+
+webpackConfig.module.rules.push({
+ /**
+ * 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' }],
+ ],
+ },
+})
+
+webpackConfig.module.rules.push({
+ test: /\.wasm$/i,
+ type: 'asset/resource',
+})
+
+webpackConfig.module.rules.push({
+ test: /\.tflite$/i,
+ type: 'asset/resource',
+})
+
+webpackConfig.module.rules.push({
+ test: /\.worker\.js$/,
+ use: { loader: 'worker-loader' },
+})
+
+// Add typescript rule
+webpackConfig.module.rules.push({
+ test: /\.tsx?$/,
+ use: [
+ {
+ loader: 'babel-loader',
+ },
+ {
+ loader: 'ts-loader',
+ options: { appendTsSuffixTo: [/\.vue$/] },
+ },
+ ],
+ exclude: /node_modules/,
+})
+
+// Add typescript extension resolver
+webpackConfig.resolve.extensions.push('.tsx')
+
+module.exports = webpackConfig