import { styleLoaders as taStyles, tsLoader } from "@lonelyplanet/travel-agent/dist/webpack/loaders"; import * as ExtractTextPlugin from "extract-text-webpack-plugin"; import * as path from "path"; import * as w from "webpack"; import * as pkg from "./package.json"; const mode = "development"; const styleLoaders = { ...taStyles }; styleLoaders.css.options.localIdentName = "lp-global-[local]"; styleLoaders.css.options.context = path.resolve(__dirname, "src"); export const extractCssLoader = { test: /\.css$/, include: /src/, loader: ExtractTextPlugin.extract({ fallback: "style-loader", use: [styleLoaders.css, styleLoaders.postcss], }), }; const tsLoaderCopy = { ...tsLoader }; tsLoaderCopy.use[0].options = { configFile: path.resolve("./tsconfig-es.json") }; const rules = [ tsLoaderCopy, extractCssLoader, ]; const config: w.Configuration = { mode, entry: { core: "./src/client.tsx", }, output: { path: path.resolve(__dirname, "lib"), chunkFilename: "[name]-chunk.js", publicPath: `http://localhost:8080/assets/${pkg.version}/`, libraryTarget: "umd", jsonpFunction: "webpackJsonpDotcomCore" }, module: { rules, }, resolve: { extensions: [".js", ".jsx", ".ts", ".tsx"], }, plugins: [ new ExtractTextPlugin("[name].css", { disable: false, allChunks: true, }), new w.HotModuleReplacementPlugin(), ], }; export default config;