1
1
mirror of https://github.com/Eugeny/tabby.git synced 2024-11-25 08:33:27 +03:00
tabby/web/webpack.config.mjs
Eugene 1e5cfd1d4b
bootstrap 5 WIP (#7891)
New standard theme that follows your chosen terminal colors, Bootstrap 5 & Angular 15 upgrade
2023-02-26 20:42:31 +01:00

78 lines
2.1 KiB
JavaScript

import * as path from 'path'
import * as url from 'url'
const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
const externals = {}
for (const key of [
'child_process',
'crypto',
'dns',
'fs',
'http',
'https',
'net',
'path',
'querystring',
'tls',
'tty',
'zlib',
'../build/Release/cpufeatures.node',
'./crypto/build/Release/sshcrypto.node',
]) {
externals[key] = `commonjs ${key}`
}
const config = {
name: 'tabby-web-entry',
target: 'web',
entry: {
preload: path.resolve(__dirname, 'entry.preload.ts'),
bundle: path.resolve(__dirname, 'entry.ts'),
},
mode: process.env.TABBY_DEV ? 'development' : 'production',
optimization:{
minimize: false,
},
context: __dirname,
devtool: 'source-map',
output: {
path: path.join(__dirname, 'dist'),
pathinfo: true,
filename: '[name].js',
publicPath: 'auto',
},
resolve: {
modules: ['../app/node_modules', 'node_modules', '../node_modules', '../app/assets/'].map(x => path.join(__dirname, x)),
extensions: ['.ts', '.js'],
fallback: {
stream: path.join(__dirname, 'node_modules/stream-browserify/index.js'),
assert: path.join(__dirname, 'node_modules/assert/assert.js'),
constants: path.join(__dirname, 'node_modules/constants-browserify/constants.json'),
util: path.join(__dirname, 'node_modules/util/util.js'),
},
},
module: {
rules: [
{
test: /\.ts$/,
use: {
loader: 'ts-loader',
options: {
configFile: path.resolve(__dirname, 'tsconfig.json'),
},
},
},
{ test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] },
{ test: /\.css$/, use: ['style-loader', 'css-loader', 'sass-loader'] },
{
test: /\.(png|svg|ttf|eot|otf|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
type: 'asset',
},
],
},
externals,
}
export default () => config