/* 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'] } ] }