remain to automaticly export jsons and updated json files with webpack and to understand how to access nested translations
99 lines
2.4 KiB
JavaScript
99 lines
2.4 KiB
JavaScript
'use strict'
|
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
const { VueLoaderPlugin } = require('vue-loader')
|
|
const ESLintPlugin = require('eslint-webpack-plugin');
|
|
|
|
const utils = require('./utils')
|
|
|
|
const themePath = 'web/themes/custom/materiotheme'
|
|
|
|
module.exports = {
|
|
resolve: {
|
|
extensions: ['.js', '.vue', '.json'],
|
|
alias: {
|
|
'vue': 'vue/dist/vue.js',
|
|
'theme': utils.resolve(themePath),
|
|
'vuejs': utils.resolve(themePath+'/vuejs'),
|
|
'assets': utils.resolve(themePath+'/assets')
|
|
}
|
|
},
|
|
entry: {
|
|
'main': utils.resolve(themePath + '/assets/scripts/main.js'),
|
|
},
|
|
output: {
|
|
path: utils.resolve(themePath + '/assets/dist/'),
|
|
filename: '[name].js'
|
|
},
|
|
module: {
|
|
rules: [
|
|
// {
|
|
// test: /\.(js|vue)$/,
|
|
// loader: 'eslint-loader',
|
|
// enforce: 'pre',
|
|
// exclude: /node_modules/,
|
|
// options: {
|
|
// emitError: true,
|
|
// emitWarning: true
|
|
// }
|
|
// },
|
|
{
|
|
test: /\.vue$/,
|
|
use: 'vue-loader'
|
|
},
|
|
{
|
|
resourceQuery: /blockType=i18n/,
|
|
type: 'javascript/auto',
|
|
loader: '@kazupon/vue-i18n-loader'
|
|
},
|
|
{
|
|
test: /\.js$/,
|
|
use: {
|
|
loader: 'babel-loader',
|
|
}
|
|
}
|
|
// , {
|
|
// test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
|
|
// use: {
|
|
// loader: 'url-loader',
|
|
// options: {
|
|
// limit: 10000,
|
|
// name: utils.assetsPath('img/[name].[hash:7].[ext]')
|
|
// }
|
|
// }
|
|
// }, {
|
|
// test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
|
|
// use: {
|
|
// loader: 'url-loader',
|
|
// options: {
|
|
// limit: 10000,
|
|
// name: utils.assetsPath('media/[name].[hash:7].[ext]')
|
|
// }
|
|
// }
|
|
// }, {
|
|
// test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
|
|
// use: {
|
|
// loader: 'url-loader',
|
|
// options: {
|
|
// limit: 10000,
|
|
// name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
|
|
// }
|
|
// }
|
|
// }
|
|
]
|
|
},
|
|
|
|
plugins: [
|
|
new MiniCssExtractPlugin({
|
|
filename: '[name].css'
|
|
}),
|
|
new VueLoaderPlugin(),
|
|
new ESLintPlugin({
|
|
// fix: true
|
|
// exclude: ['web/.eslintrc.json']
|
|
// cache: false,
|
|
// ignore: true,
|
|
// useEslintrc: false,
|
|
})
|
|
]
|
|
}
|