UNPKG

@bengo.co/typescript-web-starter

Version:

A simple website project written in TypeScript. Use this as a starting point for your project.

107 lines (104 loc) 2.23 kB
/** * Webpack Configuration that all config variations have in common. */ import { join, resolve } from "path"; import { Loader } from "webpack"; const outputPath = resolve(join(__dirname, "../../../dist")); const publicPath = "/dist"; export default { resolve: { extensions: [".ts", ".tsx", ".js", ".jsx", ".scss", ".css"], // Fix webpack's default behavior to not load packages with jsnext:main module // https://github.com/Microsoft/TypeScript/issues/11677 mainFields: ["main"], }, target: <"web">"web", context: resolve(join(__dirname, "../../")), output: { filename: "[name].js", path: outputPath, publicPath: publicPath, }, optimization: { splitChunks: { chunks: <"initial">"initial", // <-- The key to this cacheGroups: { vendors: { test: /[\\/]node_modules[\\/]/, name: "vendor", }, }, }, }, module: { rules: [ { test: /\.js$/, use: ["source-map-loader"], exclude: /node_modules/, }, { test: /\.tsx?$/, exclude: /node_modules/, use: [ { loader: "ts-loader", options: { context: join(__dirname, "../../../"), transpileOnly: true, }, }, ], }, { test: /\.css$/, use: ["style-loader", "css-loader?modules", "postcss-loader"], }, { test: /\.scss$/, use: [ { loader: "style-loader", }, { loader: "css-loader", options: { modules: true, importLoaders: 1, sourceMap: true, }, }, { loader: "postcss-loader", options: { plugins: (loader: Loader) => [ require("postcss-smart-import"), // tslint:disable-line:no-require-imports require("autoprefixer"), // tslint:disable-line:no-require-imports ], }, }, { loader: "sass-loader", }, ], }, { test: /\.(jpe?g|png|gif|svg)$/i, loaders: [ "file-loader?hash=sha512&digest=hex&name=[hash].[ext]", "image-webpack-loader?bypassOnDebug&optipng.optimizationLevel=7&gifsicle.interlaced=false", ], }, ], }, plugins: [], performance: { hints: <false>false, }, stats: { colors: true, errorDetails: true, modules: true, reasons: true, }, };