mirror of
https://github.com/desktop/desktop
synced 2024-10-31 11:07:25 +00:00
96 lines
2.3 KiB
TypeScript
96 lines
2.3 KiB
TypeScript
import * as common from './webpack.common'
|
|
|
|
import * as webpack from 'webpack'
|
|
import merge from 'webpack-merge'
|
|
|
|
const config: webpack.Configuration = {
|
|
mode: 'development',
|
|
devtool: 'source-map',
|
|
}
|
|
|
|
const mainConfig = merge({}, common.main, config)
|
|
const cliConfig = merge({}, common.cli, config)
|
|
const highlighterConfig = merge({}, common.highlighter, config)
|
|
|
|
const getRendererEntryPoint = () => {
|
|
const entry = common.renderer.entry as webpack.EntryObject
|
|
if (entry == null) {
|
|
throw new Error(
|
|
`Unable to resolve entry point. Check webpack.common.ts and try again`
|
|
)
|
|
}
|
|
|
|
return entry.renderer as string
|
|
}
|
|
|
|
const getPortOrDefault = () => {
|
|
const port = process.env.PORT
|
|
if (port != null) {
|
|
const result = parseInt(port)
|
|
if (isNaN(result)) {
|
|
throw new Error(`Unable to parse '${port}' into valid number`)
|
|
}
|
|
return result
|
|
}
|
|
|
|
return 3000
|
|
}
|
|
|
|
const port = getPortOrDefault()
|
|
const webpackHotModuleReloadUrl = `webpack-hot-middleware/client?path=http://localhost:${port}/__webpack_hmr`
|
|
const publicPath = `http://localhost:${port}/build/`
|
|
|
|
const rendererConfig = merge({}, common.renderer, config, {
|
|
entry: {
|
|
renderer: [webpackHotModuleReloadUrl, getRendererEntryPoint()],
|
|
},
|
|
output: {
|
|
publicPath,
|
|
},
|
|
module: {
|
|
rules: [
|
|
// This will cause the compiled CSS (and sourceMap) to be
|
|
// embedded within the compiled javascript bundle and added
|
|
// as a blob:// uri at runtime.
|
|
{
|
|
test: /\.(scss|css)$/,
|
|
use: [
|
|
'style-loader',
|
|
{ loader: 'css-loader', options: { sourceMap: true } },
|
|
'sass-loader?sourceMap',
|
|
],
|
|
},
|
|
],
|
|
},
|
|
infrastructureLogging: {
|
|
level: 'error',
|
|
},
|
|
plugins: [new webpack.HotModuleReplacementPlugin()],
|
|
})
|
|
|
|
const crashConfig = merge({}, common.crash, config, {
|
|
module: {
|
|
rules: [
|
|
// This will cause the compiled CSS (and sourceMap) to be
|
|
// embedded within the compiled javascript bundle and added
|
|
// as a blob:// uri at runtime.
|
|
{
|
|
test: /\.(scss|css)$/,
|
|
use: [
|
|
'style-loader',
|
|
{ loader: 'css-loader', options: { sourceMap: true } },
|
|
'sass-loader?sourceMap',
|
|
],
|
|
},
|
|
],
|
|
},
|
|
})
|
|
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
export default [
|
|
mainConfig,
|
|
rendererConfig,
|
|
crashConfig,
|
|
cliConfig,
|
|
highlighterConfig,
|
|
]
|