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'],
},
]
}