UNPKG

@americanexpress/holocron-dev-server

Version:

A micro-frontend dev server for Holocron Modules

93 lines (88 loc) 2.27 kB
/* * Copyright 2021 American Express Travel Related Services Company, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations * under the License. */ import { getWebpackVersion, } from '../helpers'; export const fileLoader = () => { const webpackVersion = getWebpackVersion(); if (webpackVersion >= 5) { return { // eslint-disable-next-line unicorn/no-unsafe-regex -- common regex for webpack loader test: /\.(woff|woff2|ttf|eot|svg|png|jpg|jpeg|gif|webm)(\?.*)?$/, type: 'asset/resource', }; } // v4 and down return { // eslint-disable-next-line unicorn/no-unsafe-regex -- common regex for webpack loader test: /\.(woff|woff2|ttf|eot|svg|png|jpg|jpeg|gif|webm)(\?.*)?$/, use: [ { loader: 'file-loader', options: { name: 'assets/[name].[ext]', }, }, ], }; }; export const cssLoader = ({ include, modules = true, } = {}) => ({ test: /\.(sa|sc|c)ss$/, exclude: /node_modules/, include, use: [ { loader: 'style-loader', }, { loader: 'css-loader', options: { importLoaders: 1, modules: modules && { localIdentName: '[name]__[local]___[contenthash:base64:5]', }, }, }, { loader: 'sass-loader', }, ], }); export const jsxLoader = () => ({ test: /\.jsx?$/i, use: [ { loader: require.resolve('babel-loader'), options: { cacheDirectory: true, babelrc: true, presets: [ [ 'amex', { modern: true, 'preset-env': { modules: false, }, }, ], ], plugins: [require.resolve('react-refresh/babel')], }, }, ], });