mon-entreprise/webpack/common.js

103 lines
1.5 KiB
JavaScript

/* eslint-env node */
module.exports.styleLoader = styleLoader => ({
test: /\.css$/,
use: [
{ loader: styleLoader },
{
loader: 'css-loader',
options: {
sourceMap: true,
importLoaders: 1
}
},
{
loader: 'postcss-loader'
}
]
})
module.exports.commonLoaders = ({ legacy = false, file = true } = {}) => {
const babelLoader = {
loader: 'babel-loader',
options: {
cacheDirectory: true,
rootMode: 'upward',
presets: [
[
'@babel/preset-env',
{
targets: !legacy
? {
esmodules: true
}
: {
esmodules: false,
browsers: ['ie 11']
},
useBuiltIns: 'entry',
corejs: '3'
}
]
]
}
}
return [
{
test: /\.(js|ts|tsx)$/,
use: babelLoader,
exclude: /node_modules|dist/
},
...(file
? [
{
test: /\.(jpe?g|png|svg)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192,
name: 'images/[name].[ext]'
}
}
]
}
]
: []),
{
test: /\.(ttf|woff2?)$/,
use: [
{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'fonts',
publicPath: '/fonts'
}
}
]
},
{
test: /\.yaml$/,
use: ['json-loader', 'yaml-loader']
},
{
test: /\.toml$/,
use: ['toml-loader']
},
{
test: /\.ne$/,
use: [babelLoader, 'nearley-loader']
},
{
test: /\.md$/,
use: ['raw-loader']
},
{
test: /\.pdf$/,
use: ['file-loader']
}
]
}