Migrate to @nextcloud/webpack-vue-config

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
John Molakvoæ (skjnldsv) 2021-03-25 09:33:10 +01:00 committed by Julius Härtl
parent 1d4752b4d7
commit ce808da615
No known key found for this signature in database
GPG key ID: 4C614C6ED2CDE6DF
6 changed files with 1367 additions and 1252 deletions

2449
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -12,9 +12,9 @@
"license": "AGPL-3.0-or-later",
"private": true,
"scripts": {
"dev": "NODE_ENV=development webpack --config webpack.dev.js",
"watch": "NODE_ENV=development webpack --progress --watch --config webpack.dev.js",
"build": "NODE_ENV=production webpack --progress --config webpack.prod.js",
"build": "NODE_ENV=production webpack --progress --config webpack.js",
"dev": "NODE_ENV=development webpack --progress --config webpack.js",
"watch": "NODE_ENV=development webpack --progress --watch --config webpack.js",
"lint": "eslint --ext .js,.vue src",
"lint:fix": "eslint --ext .js,.vue src --fix",
"stylelint": "stylelint css/*",
@ -39,14 +39,16 @@
"node": ">=10.0.0"
},
"devDependencies": {
"@babel/core": "^7.13.8",
"@babel/core": "^7.13.10",
"@babel/eslint-parser": "^7.13.10",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-transform-runtime": "^7.13.9",
"@babel/plugin-transform-runtime": "^7.13.10",
"@babel/polyfill": "^7.12.1",
"@babel/preset-env": "^7.13.9",
"@babel/preset-env": "^7.13.12",
"@nextcloud/browserslist-config": "^2.1.0",
"@nextcloud/eslint-config": "^2.1.0",
"@nextcloud/eslint-plugin": "^1.5.0",
"@nextcloud/eslint-config": "^4.0.0",
"@nextcloud/eslint-plugin": "^2.0.0",
"@nextcloud/webpack-vue-config": "^3.0.0",
"@vue/test-utils": "^1.1.3",
"acorn": "^8.0.5",
"babel-core": "^7.0.0-bridge.0",
@ -54,16 +56,16 @@
"babel-jest": "^26.6.3",
"babel-loader": "^8.2.2",
"babel-loader-exclude-node-modules-except": "^1.1.2",
"css-loader": "^5.1.1",
"eslint": "^6.8.0",
"eslint-config-standard": "^12.0.0",
"css-loader": "^4.3.0",
"eslint": "^7.22.0",
"eslint-config-standard": "^16.0.2",
"eslint-friendly-formatter": "^4.0.1",
"eslint-loader": "^3.0.4",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.3.1",
"eslint-plugin-standard": "^4.1.0",
"eslint-plugin-vue": "^6.2.2",
"eslint-plugin-vue": "^7.8.0",
"eslint-webpack-plugin": "^2.5.3",
"file-loader": "^6.2.0",
"jest": "^26.6.3",
"jest-environment-jsdom-fourteen": "^1.0.1",
@ -71,9 +73,10 @@
"node-sass": "^5.0.0",
"prettier-eslint": "^12.0.0",
"raw-loader": "^4.0.2",
"sass": "^1.32.8",
"sass-loader": "^10.1.1",
"style-loader": "^2.0.0",
"stylelint": "^13.11.0",
"stylelint": "^13.12.0",
"stylelint-config-recommended-scss": "^4.2.0",
"stylelint-scss": "^3.19.0",
"stylelint-webpack-plugin": "^2.1.1",
@ -85,7 +88,7 @@
"vue-style-loader": "^4.1.3",
"vue-template-compiler": "^2.6.12",
"webpack": "^4.46.0",
"webpack-cli": "^4.5.0",
"webpack-cli": "^3.3.12",
"webpack-merge": "^5.7.3"
},
"jest": {

View file

@ -1,75 +0,0 @@
const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const BabelLoaderExcludeNodeModulesExcept = require('babel-loader-exclude-node-modules-except')
module.exports = {
entry: {
viewer: path.join(__dirname, 'src', 'viewer.js'),
files: path.join(__dirname, 'src', 'files.js'),
document: path.join(__dirname, 'src', 'document.js'),
admin: path.join(__dirname, 'src', 'admin.js'),
personal: path.join(__dirname, 'src', 'personal.js'),
},
output: {
path: path.resolve(__dirname, './js'),
publicPath: '/js/',
filename: '[name].js',
chunkFilename: '[name].[chunkhash].js'
},
module: {
rules: [
{
test: /\.(js|vue)$/,
exclude: /node_modules/,
use: 'eslint-loader',
enforce: 'pre'
},
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
},
{
test: /\.scss$/,
use: [
'style-loader',
'css-loader',
'sass-loader'
]
},
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: BabelLoaderExcludeNodeModulesExcept([
'@nextcloud/dialogs',
'@nextcloud/event-bus'
]),
},
{
test: /\.tsx?$/,
use: ['babel-loader', 'ts-loader'],
exclude: /node_modules/
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'url-loader'
}
]
},
plugins: [
new VueLoaderPlugin()
],
resolve: {
alias: {
vue$: 'vue/dist/vue.esm.js'
},
extensions: ['*', '.js', '.vue', '.json', '.tsx']
}
};

View file

@ -1,12 +0,0 @@
const { merge } = require('webpack-merge');
const common = require('./webpack.common.js');
module.exports = merge(common, {
mode: 'development',
devServer: {
historyApiFallback: true,
noInfo: true,
overlay: true
},
devtool: 'source-map',
})

43
webpack.js Normal file
View file

@ -0,0 +1,43 @@
const { merge } = require('webpack-merge')
const path = require('path')
const webpackConfig = require('@nextcloud/webpack-vue-config')
const BabelLoaderExcludeNodeModulesExcept = require('babel-loader-exclude-node-modules-except')
const config = {
entry: {
viewer: path.join(__dirname, 'src', 'viewer.js'),
files: path.join(__dirname, 'src', 'files.js'),
document: path.join(__dirname, 'src', 'document.js'),
admin: path.join(__dirname, 'src', 'admin.js'),
personal: path.join(__dirname, 'src', 'personal.js'),
},
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
exclude: BabelLoaderExcludeNodeModulesExcept([
'@nextcloud/dialogs',
'@nextcloud/event-bus'
]),
},
{
test: /\.tsx?$/,
use: ['babel-loader', 'ts-loader'],
exclude: /node_modules/
},
],
},
resolve: {
extensions: ['*', '.js', '.vue', '.json', '.tsx']
}
}
const mergedConfigs = merge(config, webpackConfig)
// Remove duplicate rules by the `test` key
mergedConfigs.module.rules = mergedConfigs.module.rules.filter((v, i, a) => a.findIndex(t => (t.test.toString() === v.test.toString())) === i)
// Merge rules by replacing existing tests
module.exports = mergedConfigs

View file

@ -1,7 +0,0 @@
const { merge } = require('webpack-merge')
const common = require('./webpack.common.js')
module.exports = merge(common, {
mode: 'production',
devtool: '#source-map'
})