diff options
author | dartcafe <github@dartcafe.de> | 2022-03-13 12:27:19 +0300 |
---|---|---|
committer | dartcafe <github@dartcafe.de> | 2022-03-13 12:27:19 +0300 |
commit | c8bd4560b7cf4759aa520479cdb446641b9275cf (patch) | |
tree | d52db9344e3f8de448d4f91cdfd29dd849230294 /webpack.config.js | |
parent | c021aea7a822abca406e910d9b1b708b59347bbe (diff) |
use @nextcloud/webpack-vue-config
Signed-off-by: dartcafe <github@dartcafe.de>
Diffstat (limited to 'webpack.config.js')
-rw-r--r-- | webpack.config.js | 134 |
1 files changed, 21 insertions, 113 deletions
diff --git a/webpack.config.js b/webpack.config.js index 4a2793cc..59b1e064 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,120 +1,28 @@ const path = require('path') -const webpack = require('webpack') -const { VueLoaderPlugin } = require('vue-loader') -const ESLintPlugin = require('eslint-webpack-plugin') -const StyleLintPlugin = require('stylelint-webpack-plugin') -const TerserPlugin = require('terser-webpack-plugin') +const webpackConfig = require('@nextcloud/webpack-vue-config') +const webpackRules = require('@nextcloud/webpack-vue-config/rules') -const appName = process.env.npm_package_name -const appVersion = process.env.npm_package_version -const buildMode = process.env.NODE_ENV -const isDev = buildMode === 'development' - -module.exports = { - mode: buildMode, - devtool: isDev ? 'eval' : false, - entry: { - 'polls-collections': path.join(__dirname, 'src/js/', 'collections.js'), - polls: path.join(__dirname, 'src/js/', 'main.js'), - userSettings: path.join(__dirname, 'src/js/', 'userSettings.js'), - adminSettings: path.join(__dirname, 'src/js/', 'adminSettings.js'), - }, - output: { - clean: true, - path: path.resolve(__dirname, './js'), - publicPath: '/js/', - filename: '[name].js', - chunkFilename: `${appName}.[name].[contenthash].js`, - chunkLoadingGlobal: 'webpackJsonpOCAPolls', - devtoolNamespace: appName, - devtoolModuleFilenameTemplate(info) { - const rootDir = process.cwd() - const rel = path.relative(rootDir, info.absoluteResourcePath) - return `webpack:///${appName}/${rel}` - }, - }, - module: { - rules: [ - { - test: /\.vue$/, - loader: 'vue-loader', - options: { - compilerOptions: { - whitespace: 'condense', - }, - }, - }, - { - test: /\.js$/, - loader: 'babel-loader', - exclude: /node_modules/, - }, - { - test: /\.css$/, - use: [ - 'vue-style-loader', - { - loader: 'css-loader', - options: { esModule: false }, - }, - ], - }, - { - test: /\.scss$/, - use: [ - 'vue-style-loader', - { - loader: 'css-loader', - options: { esModule: false }, - }, - 'sass-loader', - ], - }, - { - test: /\.(png|jpg|gif|svg)$/, - type: 'asset/inline', - }, - ], - }, +webpackConfig.entry = { + main: path.join(__dirname, 'src/js/', 'main.js'), + collections: path.join(__dirname, 'src/js/', 'collections.js'), + userSettings: path.join(__dirname, 'src/js/', 'userSettings.js'), + adminSettings: path.join(__dirname, 'src/js/', 'adminSettings.js'), +} - optimization: { - chunkIds: 'named', - splitChunks: { - automaticNameDelimiter: '-', - }, - minimize: !isDev, - minimizer: [ - new TerserPlugin({ - terserOptions: { - output: { - comments: false, - }, - }, - extractComments: true, - }), - ], - }, +webpackConfig.output = { + ...webpackConfig.output, + clean: true, +} - plugins: [ - new VueLoaderPlugin(), - new webpack.DefinePlugin({ - appName: JSON.stringify('polls'), - }), - new ESLintPlugin({ - quiet: true, - extensions: ['js', 'vue'], - }), - new StyleLintPlugin({ - files: 'src/**/*.{css,scss,vue}', - }), - new webpack.DefinePlugin({ appName: JSON.stringify(appName) }), - new webpack.DefinePlugin({ appVersion: JSON.stringify(appVersion) }), - ], - resolve: { - alias: { - vue$: 'vue/dist/vue.esm.js', - src: path.resolve(__dirname, 'src/js'), +webpackRules.RULE_VUE = { + ...webpackRules.RULE_VUE, + options: { + compilerOptions: { + whitespace: 'condense', }, - extensions: ['*', '.js', '.vue', '.json'], }, } + +webpackConfig.module.rules = Object.values(webpackRules) + +module.exports = webpackConfig |