Skip to content

Instantly share code, notes, and snippets.

@kitsonk
Created July 14, 2017 15:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kitsonk/c095770c0f2d75367d26b7846d729861 to your computer and use it in GitHub Desktop.
Save kitsonk/c095770c0f2d75367d26b7846d729861 to your computer and use it in GitHub Desktop.
Making Page Bundles for Electron
import * as webpack from 'webpack';
import { resolve } from 'path';
import { existsSync } from 'fs';
const NormalModuleReplacementPlugin: any = require('webpack/lib/NormalModuleReplacementPlugin');
export = function webpackConfig(): webpack.Configuration {
return {
entry: {
index: './lib/pages/index.js',
runner: './lib/pages/runner.js'
},
externals: [ (context: any, request: string, callback: (context?: any, response?: string) => any) => {
if (request === 'electron') {
return callback(null, `require('electron')`);
}
return callback();
} ],
output: {
path: resolve(__dirname, '../lib'),
filename: 'page.[name].js'
},
plugins: [
new NormalModuleReplacementPlugin(/\.m.css$/, (result: any) => {
const requestFileName = resolve(result.context, result.request);
const jsFileName = requestFileName + '.js';
if (existsSync(jsFileName)) {
result.request = result.request.replace(/\.m\.css$/, '.m.css.js');
}
})
],
module: {
rules: [
{ test: /\.js$/, loader: 'umd-compat-loader' },
{ test: /\.css$/, loader: 'css-loader' }
]
},
node: {
fs: 'empty'
},
devtool: 'source-map'
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment