UNPKG

@americanexpress/holocron-dev-server

Version:

A micro-frontend dev server for Holocron Modules

43 lines (39 loc) 1.56 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 webpack from 'webpack'; import { createHolocronModuleWebpackConfig } from './configs/bundles'; import { modulesLibraryVarName } from './helpers'; import { ufs } from '../utils/virtual-file-system'; import { logWebpackStatsWhenDone, logWhenWebpackInvalid, } from '../utils/logs'; export default function createHotHolocronCompiler({ modules, environmentVariables, webpackConfigPath, }) { const holocronWebpackConfig = createHolocronModuleWebpackConfig({ modules, environmentVariables, webpackConfigPath, }); const compiler = webpack(holocronWebpackConfig); compiler.inputFileSystem = ufs; compiler.resolvers.normal.fileSystem = compiler.inputFileSystem; compiler.resolvers.context.fileSystem = compiler.inputFileSystem; compiler.hooks.done.tap(modulesLibraryVarName, logWebpackStatsWhenDone); compiler.hooks.invalid.tap(modulesLibraryVarName, logWhenWebpackInvalid); return compiler; }