UNPKG

4.47 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const tslib_1 = require("tslib");
4const case_sensitive_paths_webpack_plugin_1 = tslib_1.__importDefault(require("case-sensitive-paths-webpack-plugin"));
5const fork_ts_checker_webpack_plugin_1 = tslib_1.__importDefault(require("fork-ts-checker-webpack-plugin"));
6const tsconfig_paths_webpack_plugin_1 = tslib_1.__importDefault(require("tsconfig-paths-webpack-plugin"));
7const webpack_node_externals_1 = tslib_1.__importDefault(require("webpack-node-externals"));
8const clean_webpack_plugin_1 = require("clean-webpack-plugin");
9const eslintFormatter_1 = tslib_1.__importDefault(require("./formatters/eslintFormatter"));
10const formatForkTsCheckerMessages_1 = require("./formatForkTsCheckerMessages");
11const formatTsLoaderMessages_1 = require("./formatTsLoaderMessages");
12const paths_1 = require("./paths");
13const env_1 = require("../util/env");
14exports.createWebpackConfig = (environment) => {
15 const isDev = environment === 'development';
16 return {
17 mode: environment,
18 entry: paths_1.paths.appIndexJs,
19 target: 'node',
20 externals: [
21 webpack_node_externals_1.default(env_1.RuntimeOptions.useMonorepo
22 ? {
23 modulesFromFile: true,
24 }
25 : undefined),
26 ],
27 devtool: isDev ? 'cheap-eval-source-map' : 'source-map',
28 output: {
29 path: isDev ? paths_1.paths.appDevBundlePath : paths_1.paths.appBuild,
30 filename: isDev ? 'bundle.js' : 'bundle.prod.js',
31 libraryTarget: 'commonjs',
32 },
33 resolve: {
34 extensions: ['.ts', '.js', '.json'],
35 plugins: [
36 new tsconfig_paths_webpack_plugin_1.default({
37 configFile: paths_1.paths.appTsConfig,
38 logLevel: 'ERROR',
39 }),
40 ],
41 },
42 module: {
43 rules: [
44 {
45 test: /\.(j|t)sx?$/,
46 enforce: 'pre',
47 use: [
48 {
49 loader: require.resolve('eslint-loader'),
50 options: {
51 eslintPath: require.resolve('eslint'),
52 formatter: eslintFormatter_1.default,
53 configFile: paths_1.paths.appEslint,
54 emitWarning: true,
55 resolvePluginsRelativeTo: __dirname,
56 },
57 },
58 ],
59 include: paths_1.paths.appSrc,
60 },
61 {
62 test: /\.jsx?$/,
63 include: paths_1.paths.appSrc,
64 exclude: /node_modules/,
65 loader: require.resolve('babel-loader'),
66 options: {
67 babelrc: false,
68 presets: [require.resolve('@babel/preset-env')],
69 compact: true,
70 },
71 },
72 {
73 test: /\.tsx?$/,
74 include: paths_1.paths.appSrc,
75 loader: require.resolve('ts-loader'),
76 options: {
77 transpileOnly: true,
78 experimentalWatchApi: isDev ? true : undefined,
79 errorFormatter: formatTsLoaderMessages_1.formatTsLoaderMessages,
80 },
81 },
82 ],
83 },
84 plugins: [
85 new fork_ts_checker_webpack_plugin_1.default({
86 silent: true,
87 async: false,
88 watch: paths_1.paths.appSrc,
89 tsconfig: paths_1.paths.appTsConfig,
90 formatter: formatForkTsCheckerMessages_1.formatForkTsCheckerMessages,
91 checkSyntacticErrors: true,
92 reportFiles: ['**', '!**/__tests__/**', '!**/?(*.)(spec|test|t).*'],
93 }),
94 new case_sensitive_paths_webpack_plugin_1.default(),
95 new clean_webpack_plugin_1.CleanWebpackPlugin(),
96 ],
97 optimization: {
98 nodeEnv: false,
99 },
100 node: {
101 __dirname: false,
102 __filename: false,
103 },
104 performance: {
105 hints: false,
106 },
107 };
108};
109//# sourceMappingURL=createWebpackConfig.js.map
\No newline at end of file