influxdb/ui/webpack.vendor.ts

83 lines
1.8 KiB
TypeScript

export {}
const webpack = require('webpack')
const path = require('path')
const {dependencies} = require('./package.json')
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')
// only dll infrequently updated dependencies
const vendor = Object.keys(dependencies).filter(
d =>
!d.includes('@influxdata') &&
!d.includes('webpack-bundle-analyzer') &&
!d.includes('monaco-editor-webpack-plugin')
)
const MONACO_DIR = path.resolve(__dirname, './node_modules/monaco-editor')
module.exports = {
context: __dirname,
mode: 'development',
entry: {
vendor,
},
resolve: {
alias: {
vscode: path.resolve(
'./node_modules/monaco-languageclient/lib/vscode-compatibility'
),
},
},
node: {
fs: 'empty',
global: true,
crypto: 'empty',
tls: 'empty',
net: 'empty',
process: true,
module: false,
clearImmediate: false,
setImmediate: true,
},
output: {
path: path.join(__dirname, 'build'),
filename: '[name].bundle.js',
library: '[name]',
},
module: {
rules: [
{
test: /\.css$/,
include: MONACO_DIR,
use: ['style-loader', 'css-loader'],
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
use: [
{
loader: 'file-loader',
},
],
},
],
},
plugins: [
new webpack.DllPlugin({
name: '[name]',
path: path.join(__dirname, 'build', '[name]-manifest.json'),
}),
new MonacoWebpackPlugin({
languages: ['json', 'markdown'],
}),
],
stats: {
colors: true,
children: false,
modules: false,
version: false,
assetsSort: '!size',
warningsFilter: /export .* was not found in/,
excludeAssets: [/\.(hot-update|woff|eot|ttf|svg|ico|png|wasm)/],
},
performance: {hints: false},
}