forked from influxdata/ui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebpack.vendor.ts
96 lines (93 loc) · 2.2 KB
/
webpack.vendor.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
export {}
const webpack = require('webpack')
const path = require('path')
const {dependencies} = require('./package.json')
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')
const {STATIC_DIRECTORY} = require('./src/utils/env')
// 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: /\.m?js$/,
include: MONACO_DIR,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
plugins: ['@babel/plugin-transform-runtime'],
},
},
},
{
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'],
filename: `${STATIC_DIRECTORY}[name].worker.[contenthash].js`,
globalAPI: true,
}),
],
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},
}