fimfic2epub/webpack.config.js

278 lines
5.2 KiB
JavaScript

import webpack from 'webpack'
import path from 'path'
import nodeExternals from 'webpack-node-externals'
const inProduction = process.env.NODE_ENV === 'production' || process.argv.indexOf('-p') !== -1
const bundleExtensionConfig = {
entry: {
eventPage: ['./src/eventPage'],
fimfic2epub: ['regenerator-runtime/runtime', './src/main']
},
output: {
path: path.join(__dirname, '/extension/build'),
filename: './[name].js'
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: [['@babel/env', {
targets: {
browsers: ['chrome 50', 'firefox 47']
}
}]]
}
}
},
{
test: /\.styl$/,
use: ['stylus-loader'],
type: 'asset/source'
},
{
test: /\.ttf$/,
use: 'binary-loader'
}
]
},
target: 'web',
resolve: {
extensions: ['.js', '.json', '.styl'],
modules: [
path.resolve('./src'),
'node_modules'
],
fallback: {
url: false,
fs: false,
zlib: require.resolve('browserify-zlib'),
buffer: require.resolve('buffer/'),
assert: require.resolve('assert/'),
stream: require.resolve('stream-browserify')
},
alias: {
path: false
}
},
externals: ['node-fetch'],
plugins: [
// new (require('webpack-bundle-analyzer').BundleAnalyzerPlugin)()
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'],
process: 'process/browser'
})
],
performance: {
hints: false
},
optimization: {
concatenateModules: inProduction,
minimize: inProduction
},
devtool: 'source-map',
mode: inProduction ? 'production' : 'development'
}
const bundleNpmModuleConfig = {
entry: './src/FimFic2Epub',
output: {
path: path.join(__dirname, '/'),
filename: './dist/fimfic2epub.js',
libraryTarget: 'commonjs2'
},
target: 'node',
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
sourceMaps: !inProduction,
presets: [['@babel/env', {
targets: {
node: '10.0.0'
}
}]]
}
}
},
{
test: /\.styl$/,
use: ['stylus-loader'],
type: 'asset/source'
},
{
test: /\.ttf$/,
use: 'binary-loader'
}
]
},
resolve: {
extensions: ['.js', '.json', '.styl', '.node'],
modules: [
path.resolve('./src'),
'node_modules'
]
},
node: {
__dirname: false
},
externals: [nodeExternals({ allowlist: [/^babel-runtime/, /fontawesome-webfont\.ttf/] })],
plugins: [],
performance: {
hints: false
},
optimization: {
concatenateModules: inProduction,
minimize: inProduction
},
devtool: 'nosources-source-map',
mode: inProduction ? 'production' : 'development'
}
const bundleNpmBinaryConfig = {
entry: './src/cli',
output: {
path: path.join(__dirname, '/build'),
filename: './fimfic2epub.js'
},
target: 'node',
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
sourceMaps: !inProduction,
presets: [['@babel/env', {
targets: {
node: '14.0.0'
}
}]]
}
}
},
{
test: /\.styl$/,
use: ['stylus-loader'],
type: 'asset/resource'
}
]
},
resolve: {
extensions: ['.js', '.json', '.node', '.styl'],
modules: [
path.resolve('./src'),
'node_modules'
]
},
node: {
__dirname: false
},
externals: [nodeExternals(), {
'./FimFic2Epub': 'require(\'../dist/fimfic2epub\')',
'../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, '/build'),
filename: './fimfic2epub.js'
},
target: 'node',
module: {
rules: [
{
test: /\.styl$/,
use: ['stylus-loader'],
type: 'asset/source'
},
{
test: /\.ttf$/,
use: 'binary-loader'
},
{
test: /\.node$/,
loader: 'node-loader',
options: {
name: '[name].[ext]'
}
}
]
},
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
]