@americanexpress/holocron-dev-server
Version:
A micro-frontend dev server for Holocron Modules
43 lines (39 loc) • 1.56 kB
JavaScript
/*
* 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;
}