diff options
author | Grigorii Shartsev <grigorii.shartsev@nextcloud.com> | 2023-03-14 10:01:41 +0100 |
---|---|---|
committer | Grigorii Shartsev <grigorii.shartsev@nextcloud.com> | 2023-03-14 10:02:12 +0100 |
commit | 13472d0e86406d82c02259ce1ed7a9b728c501bc (patch) | |
tree | f8b9e0e066ee69fb6933dd3ed14b19e49714e341 /webpack.common.config.js | |
parent | 7bf0ca9e23bc18487140c02d7c19d568391772e3 (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.js | 82 |
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' }, + }, + ], + }, +} |