const utils = require('./utils')
module.exports = [
{
test: /\.(js|vue)$/,
loader: 'eslint-loader',
enforce: 'pre',
options: {
formatter: require('eslint-friendly-formatter'),
},
},
{
test: /\.jsx?$/,
exclude: [/node_modules(?!\/quill)/, /frontend/],
loader: 'babel-loader',
query: {
presets: ['env'],
plugins: ['lodash'],
},
},
{
test: /\.tsx?$/,
loader: 'ts-loader',
options: {
compilerOptions: {
declaration: false,
target: 'es5',
module: 'es2015',
},
transpileOnly: true,
appendTsSuffixTo: [/\.vue$/],
},
},
{
test: /\.(html)$/,
use: {
loader: 'html-loader',
options: {
attrs: [':data-src']
}
}
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
esModule: true,
cacheBusting: false,
optimizeSSR: false,
loaders: {
scss: 'vue-style-loader!css-loader!sass-loader',
},
},
},
{
test: /\.scss$/,
use: [
{
loader: 'style-loader',
options: {
sourceMap: true,
},
},
{
loader: 'css-loader',
options: {
sourceMap: true,
},
},
{
loader: 'sass-loader',
options: {
sourceMap: true,
includePaths: [
utils.resolve('../../vendor/zurb/foundation/scss'),
utils.resolve('../../resources/assets/libs/animate'),
],
},
},
],
},
{
test: /\.css$/,
use: [
{
loader: 'style-loader',
options: {
sourceMap: true,
},
},
{
loader: 'css-loader',
options: {
sourceMap: true,
},
},
],
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]'),
},
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]'),
},
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]'),
},
},
]