forked from tanner/qotnews
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.0 KiB
90 lines
2.0 KiB
const webpack = require('webpack'); |
|
const WebpackModules = require('webpack-modules'); |
|
const path = require('path'); |
|
const config = require('sapper/config/webpack.js'); |
|
const pkg = require('./package.json'); |
|
|
|
const mode = process.env.NODE_ENV; |
|
const dev = mode === 'development'; |
|
|
|
const alias = { svelte: path.resolve('node_modules', 'svelte') }; |
|
const extensions = ['.mjs', '.js', '.json', '.svelte', '.html']; |
|
const mainFields = ['svelte', 'module', 'browser', 'main']; |
|
const fileLoaderRule = { |
|
test: /\.(png|jpe?g|gif)$/i, |
|
use: [ |
|
'file-loader', |
|
] |
|
}; |
|
|
|
module.exports = { |
|
client: { |
|
entry: config.client.entry(), |
|
output: config.client.output(), |
|
resolve: { alias, extensions, mainFields }, |
|
module: { |
|
rules: [ |
|
{ |
|
test: /\.(svelte|html)$/, |
|
use: { |
|
loader: 'svelte-loader', |
|
options: { |
|
dev, |
|
hydratable: true, |
|
hotReload: false // pending https://github.com/sveltejs/svelte/issues/2377 |
|
} |
|
} |
|
}, |
|
fileLoaderRule |
|
] |
|
}, |
|
mode, |
|
plugins: [ |
|
// pending https://github.com/sveltejs/svelte/issues/2377 |
|
// dev && new webpack.HotModuleReplacementPlugin(), |
|
new webpack.DefinePlugin({ |
|
'process.browser': true, |
|
'process.env.NODE_ENV': JSON.stringify(mode) |
|
}), |
|
].filter(Boolean), |
|
devtool: dev && 'inline-source-map' |
|
}, |
|
|
|
server: { |
|
entry: config.server.entry(), |
|
output: config.server.output(), |
|
target: 'node', |
|
resolve: { alias, extensions, mainFields }, |
|
externals: Object.keys(pkg.dependencies).concat('encoding'), |
|
module: { |
|
rules: [ |
|
{ |
|
test: /\.(svelte|html)$/, |
|
use: { |
|
loader: 'svelte-loader', |
|
options: { |
|
css: false, |
|
generate: 'ssr', |
|
hydratable: true, |
|
dev |
|
} |
|
} |
|
}, |
|
fileLoaderRule |
|
] |
|
}, |
|
mode, |
|
plugins: [ |
|
new WebpackModules() |
|
], |
|
performance: { |
|
hints: false // it doesn't matter if server.js is large |
|
} |
|
}, |
|
|
|
serviceworker: { |
|
entry: config.serviceworker.entry(), |
|
output: config.serviceworker.output(), |
|
mode |
|
} |
|
};
|
|
|