fimfic2epub/webpack.config.babel.js

266 lines
4.9 KiB
JavaScript
Raw Normal View History

2016-06-21 09:04:08 +12:00
2016-06-21 18:39:26 +12:00
import path from 'path'
2016-08-15 08:42:57 +12:00
import nodeExternals from 'webpack-node-externals'
2016-06-21 09:04:08 +12:00
2016-08-15 21:11:20 +12:00
let inProduction = process.env.NODE_ENV === 'production' || process.argv.indexOf('-p') !== -1
2016-06-21 09:04:08 +12:00
2016-08-15 08:42:57 +12:00
const bundleExtensionConfig = {
2016-06-21 18:39:26 +12:00
entry: {
2016-08-15 08:42:57 +12:00
eventPage: ['./src/eventPage'],
2018-03-15 09:00:55 +13:00
fimfic2epub: ['regenerator-runtime/runtime', './src/main']
2016-06-21 18:39:26 +12:00
},
2016-08-15 08:42:57 +12:00
2016-06-21 18:39:26 +12:00
output: {
path: path.join(__dirname, '/'),
2018-03-13 10:03:58 +13:00
filename: './extension/build/[name].js'
2016-06-21 18:39:26 +12:00
},
2016-08-15 08:42:57 +12:00
2016-06-21 18:39:26 +12:00
module: {
2016-11-22 01:57:05 +13:00
rules: [
2016-06-21 18:39:26 +12:00
{
2016-08-29 22:12:04 +12:00
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: [['@babel/env', {
targets: {
browsers: ['chrome 50', 'firefox 47']
},
modules: false
}]]
}
2016-06-21 18:39:26 +12:00
}
2016-06-21 21:32:49 +12:00
},
{
test: /\.styl$/,
2016-11-22 01:57:05 +13:00
use: ['raw-loader', 'stylus-loader']
2018-03-15 06:04:50 +13:00
},
{
test: /\.ttf$/,
use: 'binary-loader'
2016-06-21 18:39:26 +12:00
}
]
},
2016-06-21 09:04:08 +12:00
2016-06-21 18:39:26 +12:00
resolve: {
2016-11-22 01:57:05 +13:00
extensions: ['.js', '.json', '.styl'],
2016-06-23 02:30:10 +12:00
modules: [
path.resolve('./src'),
'node_modules'
2018-03-13 10:03:58 +13:00
]
},
node: {
fs: 'empty'
2016-06-21 18:39:26 +12:00
},
2016-06-21 09:04:08 +12:00
externals: ['request'],
2016-08-15 08:42:57 +12:00
2018-03-13 10:03:58 +13:00
plugins: [
// new (require('webpack-bundle-analyzer').BundleAnalyzerPlugin)()
],
performance: {
hints: false
},
optimization: {
concatenateModules: inProduction,
minimize: inProduction
},
2018-03-13 23:11:44 +13:00
devtool: 'source-map',
2018-03-13 10:03:58 +13:00
mode: inProduction ? 'production' : 'development'
2016-08-15 08:42:57 +12:00
}
const bundleNpmModuleConfig = {
entry: './src/FimFic2Epub',
output: {
path: path.join(__dirname, '/'),
2018-03-13 10:03:58 +13:00
filename: './dist/fimfic2epub.js',
2016-08-15 08:42:57 +12:00
libraryTarget: 'commonjs2'
},
target: 'node',
module: {
2016-11-22 01:57:05 +13:00
rules: [
2016-08-15 08:42:57 +12:00
{
2016-08-29 22:12:04 +12:00
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
sourceMaps: !inProduction,
presets: [['@babel/env', {
targets: {
node: '8.0.0'
}
}]]
}
2016-08-15 08:42:57 +12:00
}
},
{
test: /\.styl$/,
2016-11-22 01:57:05 +13:00
use: ['raw-loader', 'stylus-loader']
2018-03-15 06:04:50 +13:00
},
{
test: /\.ttf$/,
use: 'binary-loader'
2016-08-15 08:42:57 +12:00
}
]
},
2016-06-21 09:04:08 +12:00
2016-08-15 08:42:57 +12:00
resolve: {
extensions: ['.js', '.json', '.styl', '.node'],
2016-08-15 08:42:57 +12:00
modules: [
path.resolve('./src'),
'node_modules'
]
},
2018-03-13 10:03:58 +13:00
node: {
__dirname: false
},
2018-03-15 06:04:50 +13:00
externals: [nodeExternals({whitelist: [/^babel-runtime/, /fontawesome-webfont\.ttf/]})],
2016-08-15 08:42:57 +12:00
plugins: [],
2018-03-13 10:03:58 +13:00
performance: {
hints: false
},
optimization: {
concatenateModules: inProduction,
minimize: inProduction
},
devtool: 'nosources-source-map',
mode: inProduction ? 'production' : 'development'
2016-06-21 09:04:08 +12:00
}
2016-08-15 08:42:57 +12:00
const bundleNpmBinaryConfig = {
entry: './src/cli',
output: {
path: path.join(__dirname, '/'),
filename: './build/fimfic2epub.js'
},
target: 'node',
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
sourceMaps: !inProduction,
presets: [['@babel/env', {
targets: {
node: '8.0.0'
}
}]]
}
}
}
]
},
resolve: {
extensions: ['.js', '.json', '.node'],
modules: [
path.resolve('./src'),
'node_modules'
]
},
node: {
__dirname: false
},
externals: [nodeExternals(), {
'./FimFic2Epub': 'require(\'../dist/fimfic2epub\')',
2018-03-15 06:04:50 +13:00
'../package.json': 'require(\'../package.json\')'
}],
plugins: [],
performance: {
hints: false
},
optimization: {
concatenateModules: inProduction,
minimize: inProduction
},
devtool: false,
mode: inProduction ? 'production' : 'development'
}
const bundleStaticNpmModuleConfig = {
entry: './src/cli',
output: {
path: path.join(__dirname, '/'),
filename: './build/fimfic2epub-static.js'
},
target: 'node',
module: {
rules: [
2018-03-21 10:13:46 +13:00
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
sourceMaps: !inProduction,
presets: [['@babel/env', {
targets: {
node: 'current'
}
}]]
}
2018-03-21 10:13:46 +13:00
}
},
{
test: /\.styl$/,
use: ['raw-loader', 'stylus-loader']
},
{
test: /\.ttf$/,
use: 'binary-loader'
}
]
},
resolve: {
extensions: ['.js', '.json', '.styl', '.node'],
modules: [
path.resolve('./bin'),
'node_modules'
]
},
node: {
__dirname: false
},
plugins: [],
performance: {
hints: false
},
optimization: {
concatenateModules: inProduction,
minimize: inProduction
},
devtool: false,
mode: inProduction ? 'production' : 'development'
}
export default [
bundleExtensionConfig,
bundleNpmModuleConfig,
bundleNpmBinaryConfig,
bundleStaticNpmModuleConfig
]