MCPcopy Create free account
hub / github.com/KaTeX/KaTeX / createConfig

Function createConfig

webpack.common.js:66–189  ·  view source on GitHub ↗

* Create a webpack config for given target * @param {Target} target * @param {boolean} dev * @param {boolean} minimize * @returns {object}

(target, dev, minimize)

Source from the content-addressed store, hash-verified

64 * @returns {object}
65 */
66function createConfig(target, dev, minimize) {
67 /** @type {Array<any>} */
68 const cssLoaders = [{
69 loader: 'css-loader',
70 options: {importLoaders: 1},
71 }, {
72 loader: 'postcss-loader',
73 options: {postcssOptions: {plugins: [require('postcss-preset-env')()]}},
74 }];
75 if (minimize) {
76 cssLoaders[1].options.postcssOptions.plugins.push(require('cssnano')());
77 }
78
79 let sassVariables = `$version: "${version}";\n`;
80
81 // use only necessary fonts, overridable by environment variables
82 let isCovered = false;
83 for (const font of fonts) {
84 const override = /** @type {string | undefined} */
85 (process.env[`USE_${font.toUpperCase()}`]);
86 /** @type {boolean} */
87 const useFont = override === "true" || override !== "false" && !isCovered;
88 sassVariables += (`$use-${font}: ${useFont.toString()};\n`);
89
90 const support = caniuse.feature(caniuse.features[font]).stats;
91 isCovered = isCovered || useFont && browserslist.every(browser => {
92 const [name, version] = browser.split(' ');
93 return !support[name] || support[name][version] === 'y';
94 });
95 }
96
97 return {
98 mode: dev ? 'development' : 'production',
99 context: __dirname,
100 entry: {
101 [target.name]: target.entry,
102 },
103 output: {
104 filename: minimize ? '[name].min.js' : '[name].js',
105 library: target.library,
106 libraryTarget: 'umd',
107 libraryExport: 'default',
108 // Enable output modules to be used in browser or Node.
109 // See: https://github.com/webpack/webpack/issues/6522
110 // https://github.com/webpack/webpack/pull/11987
111 globalObject: "(typeof self !== 'undefined' ? self : this)",
112 path: path.resolve(__dirname, 'dist'),
113 publicPath: dev ? '/' : '',
114 },
115 module: {
116 rules: [
117 {
118 test: /\.js$/,
119 exclude: /node_modules/,
120 use: 'babel-loader',
121 },
122 {
123 test: /\.ts?$/,

Callers 3

webpack.analyze.jsFile · 0.85
webpack.config.jsFile · 0.85
webpack.dev.jsFile · 0.85

Calls 1

resolveMethod · 0.80

Tested by

no test coverage detected