nextcloud-calendar/webpack.js

62 lines
1.5 KiB
JavaScript

const path = require('path')
const webpack = require('webpack')
const md5 = require('md5')
const webpackConfig = require('@nextcloud/webpack-vue-config')
const webpackRules = require('@nextcloud/webpack-vue-config/rules')
const BabelLoaderExcludeNodeModulesExcept = require('babel-loader-exclude-node-modules-except')
const IconfontPlugin = require('iconfont-plugin-webpack')
const appVersion = JSON.stringify(process.env.npm_package_version)
// Add dashboard entry
webpackConfig.entry.dashboard = path.join(__dirname, 'src', 'dashboard.js')
// Edit JS rule
webpackRules.RULE_JS.test = /\.m?js$/
webpackRules.RULE_JS.exclude = BabelLoaderExcludeNodeModulesExcept([
'p-limit',
'p-defer',
'p-queue',
'p-try',
'cdav-library',
'calendar-js',
])
// Edit SCSS rule
webpackRules.RULE_SCSS.use = [
'vue-style-loader',
'css-loader',
'resolve-url-loader',
{
loader: 'sass-loader',
options: {
// ! needed for resolve-url-loader
sourceMap: true,
sassOptions: {
sourceMapContents: false,
includePaths: [
path.resolve(__dirname, './src/assets'),
],
},
},
},
],
webpackConfig.plugins.push(
new IconfontPlugin({
src: './src/assets/iconfont',
family: `iconfont-calendar-app-${md5(appVersion)}`,
dest: {
font: './src/fonts/[family].[type]',
css: './src/fonts/scss/iconfont-calendar-app.scss'
},
watch: {
pattern: './src/assets/iconfont/*.svg'
}
}),
new webpack.IgnorePlugin(/^\.\/locale(s)?$/, /(moment)$/)
)
module.exports = webpackConfig