Files
gitlab-foss/config/webpack.vendor.config.js
2024-11-19 03:31:17 +00:00

92 lines
2.2 KiB
JavaScript

const path = require('path');
const webpack = require('webpack');
const { YarnCheck } = require('yarn-check-webpack-plugin');
const { resolutions } = require('../package.json');
const vendorDllHash = require('./helpers/vendor_dll_hash');
const ROOT_PATH = path.resolve(__dirname, '..');
const dllHash = vendorDllHash();
const dllCachePath = path.join(ROOT_PATH, `tmp/cache/webpack-dlls/${dllHash}`);
const dllPublicPath = `/assets/webpack/dll.${dllHash}/`;
module.exports = {
mode: 'development',
resolve: {
extensions: ['.js'],
alias: {
jquery$: 'jquery/dist/jquery.slim.js',
},
},
// ensure output is not generated when errors are encountered
bail: true,
context: ROOT_PATH,
entry: {
vendor: [
'@apollo/client/core',
'@gitlab/at.js',
'core-js',
'dexie',
'dompurify',
'echarts',
'jed',
'jquery/dist/jquery.slim.js',
'katex',
'lodash',
'mousetrap',
'pikaday',
'popper.js',
'sortablejs/modular/sortable.esm.js',
'source-map',
'three',
'vue',
'vuex',
],
},
output: {
path: dllCachePath,
publicPath: dllPublicPath,
filename: '[name].dll.bundle.js',
chunkFilename: '[name].dll.chunk.js',
library: '[name]_[hash]',
},
plugins: [
new webpack.DllPlugin({
path: path.join(dllCachePath, '[name].dll.manifest.json'),
name: '[name]_[hash]',
}),
new YarnCheck({
rootDirectory: ROOT_PATH,
exclude: new RegExp(
[
/*
@gitlab/noop is a tool to remove parts of our dependency tree. By it's
nature it might not be installed into a folder itself and that would
confuse this webpack plugin
*/
'@gitlab/noop',
/**
* This Webpack plugin complains when packages have the wrong versions.
* It doesn't seem like it considers yarn resolutions, so we just do it
* with this manually
*/
...Object.keys(resolutions).map((name) => name.split('/').reverse()[0]),
].join('|'),
),
forceKill: true,
}),
],
node: {
fs: 'empty', // sqljs requires fs
setImmediate: false,
},
devtool: 'cheap-module-source-map',
};