2021-08-05 02:31:54 +03:00
|
|
|
//
|
|
|
|
// Copyright © 2020 Anticrm Platform Contributors.
|
|
|
|
//
|
|
|
|
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
|
|
|
|
// you may not use this file except in compliance with the License. You may
|
|
|
|
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
|
|
|
|
//
|
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
//
|
|
|
|
// See the License for the specific language governing permissions and
|
|
|
|
// limitations under the License.
|
|
|
|
//
|
|
|
|
|
|
|
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
|
|
const Dotenv = require('dotenv-webpack')
|
|
|
|
const path = require('path')
|
|
|
|
const autoprefixer = require('autoprefixer')
|
|
|
|
|
|
|
|
const mode = process.env.NODE_ENV || 'development'
|
|
|
|
const prod = mode === 'production'
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
entry: {
|
|
|
|
bundle: [
|
|
|
|
'@anticrm/theme/styles/global.scss',
|
|
|
|
'./src/main.ts'
|
|
|
|
]
|
|
|
|
},
|
|
|
|
resolve: {
|
|
|
|
symlinks: true,
|
|
|
|
alias: {
|
|
|
|
svelte: path.resolve('./node_modules', 'svelte')
|
|
|
|
},
|
|
|
|
extensions: ['.mjs', '.js', '.svelte', '.ts'],
|
|
|
|
mainFields: ['svelte', 'browser', 'module', 'main']
|
|
|
|
},
|
|
|
|
output: {
|
|
|
|
path: __dirname + '/dist',
|
|
|
|
filename: '[name].js',
|
|
|
|
chunkFilename: '[name].[id].js',
|
|
|
|
publicPath: '/'
|
|
|
|
},
|
|
|
|
module: {
|
|
|
|
rules: [
|
|
|
|
{
|
|
|
|
test: /\.ts?$/,
|
|
|
|
use: 'ts-loader',
|
|
|
|
exclude: /node_modules/
|
|
|
|
},
|
|
|
|
{
|
|
|
|
test: /\.svelte$/,
|
|
|
|
use: {
|
|
|
|
loader: 'svelte-loader',
|
|
|
|
options: {
|
|
|
|
emitCss: true,
|
|
|
|
preprocess: require('svelte-preprocess')({ postcss: true })
|
|
|
|
}
|
|
|
|
// options: {
|
|
|
|
// dev: !prod,
|
|
|
|
// emitCss: true,
|
|
|
|
// hotReload: !prod,
|
|
|
|
// preprocess: require('svelte-preprocess')({
|
|
|
|
// babel: {
|
|
|
|
// presets: [
|
|
|
|
// [
|
|
|
|
// '@babel/preset-env',
|
|
|
|
// {
|
|
|
|
// loose: true,
|
|
|
|
// modules: false,
|
|
|
|
// targets: {
|
|
|
|
// esmodules: true
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// ],
|
|
|
|
// '@babel/typescript'
|
|
|
|
// ],
|
|
|
|
// plugins: ['@babel/plugin-proposal-optional-chaining']
|
|
|
|
// }
|
|
|
|
// })
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
test: /\.css$/,
|
|
|
|
use: [
|
|
|
|
prod ? MiniCssExtractPlugin.loader : 'style-loader',
|
|
|
|
'css-loader',
|
|
|
|
'postcss-loader'
|
|
|
|
]
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
test: /\.scss$/,
|
|
|
|
use: [
|
|
|
|
prod ? MiniCssExtractPlugin.loader : 'style-loader',
|
|
|
|
'css-loader',
|
|
|
|
'postcss-loader',
|
|
|
|
'sass-loader',
|
|
|
|
],
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
test: /\.(ttf|otf|eot|woff|woff2)$/,
|
|
|
|
use: {
|
|
|
|
loader: 'file-loader',
|
|
|
|
options: {
|
2021-08-06 10:41:02 +03:00
|
|
|
name: 'fonts/[hash:base64:8].[ext]',
|
2021-08-05 02:31:54 +03:00
|
|
|
esModule: false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
test: /\.(jpg|png)$/,
|
|
|
|
use: {
|
|
|
|
loader: 'file-loader',
|
|
|
|
options: {
|
2021-08-06 10:41:02 +03:00
|
|
|
name: 'img/[hash:base64:8].[ext]',
|
2021-08-05 02:31:54 +03:00
|
|
|
esModule: false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
test: /\.svg$/,
|
|
|
|
use: [
|
|
|
|
{
|
|
|
|
loader: 'file-loader',
|
|
|
|
options: {
|
2021-08-06 10:41:02 +03:00
|
|
|
name: 'img/[hash:base64:8].[ext]',
|
2021-08-05 02:31:54 +03:00
|
|
|
esModule: false
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
loader: 'svgo-loader',
|
|
|
|
options: {
|
|
|
|
plugins: [
|
|
|
|
{ name: 'removeHiddenElems', active: false }
|
|
|
|
// { removeHiddenElems: { displayNone: false } },
|
|
|
|
// { cleanupIDs: false },
|
|
|
|
// { removeTitle: true }
|
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
mode,
|
|
|
|
plugins: [
|
|
|
|
new MiniCssExtractPlugin({
|
|
|
|
filename: '[name].css'
|
|
|
|
}),
|
|
|
|
new Dotenv()
|
|
|
|
],
|
|
|
|
devtool: prod ? false : 'source-map',
|
|
|
|
devServer: {
|
|
|
|
publicPath: '/',
|
|
|
|
historyApiFallback: {
|
|
|
|
disableDotRule: true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|