|
|
|
@ -4,22 +4,19 @@ const merge = require('webpack-merge'); |
|
|
|
|
const common = require('./webpack.common.js'); |
|
|
|
|
const path = require('path'); |
|
|
|
|
const webpack = require('webpack'); |
|
|
|
|
const HtmlWebpackPlugin = require("html-webpack-plugin"); |
|
|
|
|
const HtmlWebpackPlugin = require('html-webpack-plugin'); |
|
|
|
|
const HtmlWebpackHarddiskPlugin = require('html-webpack-harddisk-plugin'); |
|
|
|
|
const CleanWebpackPlugin = require('clean-webpack-plugin'); |
|
|
|
|
|
|
|
|
|
module.exports = merge(common, { |
|
|
|
|
entry: { |
|
|
|
|
app: [ |
|
|
|
|
'webpack-dev-server/client?http://localhost:3333', |
|
|
|
|
'./public/app/dev.ts', |
|
|
|
|
], |
|
|
|
|
app: ['webpack-dev-server/client?http://localhost:3333', './public/app/dev.ts'], |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
output: { |
|
|
|
|
path: path.resolve(__dirname, '../../public/build'), |
|
|
|
|
filename: '[name].[hash].js', |
|
|
|
|
publicPath: "/public/build/", |
|
|
|
|
publicPath: '/public/build/', |
|
|
|
|
pathinfo: false, |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
@ -34,8 +31,8 @@ module.exports = merge(common, { |
|
|
|
|
hot: true, |
|
|
|
|
port: 3333, |
|
|
|
|
proxy: { |
|
|
|
|
'!/public/build': 'http://localhost:3000' |
|
|
|
|
} |
|
|
|
|
'!/public/build': 'http://localhost:3000', |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
optimization: { |
|
|
|
@ -47,46 +44,48 @@ module.exports = merge(common, { |
|
|
|
|
module: { |
|
|
|
|
rules: [ |
|
|
|
|
{ |
|
|
|
|
test: /\.(j|t)sx?$/, |
|
|
|
|
test: /\.tsx?$/, |
|
|
|
|
exclude: /node_modules/, |
|
|
|
|
use: [{ |
|
|
|
|
loader: 'babel-loader', |
|
|
|
|
options: { |
|
|
|
|
cacheDirectory: true, |
|
|
|
|
babelrc: false, |
|
|
|
|
plugins: [ |
|
|
|
|
[require("@rtsao/plugin-proposal-class-properties"), { loose: true }], |
|
|
|
|
'angularjs-annotate', |
|
|
|
|
'syntax-dynamic-import', // needed for `() => import()` in routes.ts
|
|
|
|
|
'react-hot-loader/babel' |
|
|
|
|
], |
|
|
|
|
presets: [ |
|
|
|
|
[ |
|
|
|
|
'@babel/preset-env', |
|
|
|
|
{ |
|
|
|
|
targets: { browsers: 'last 3 versions' }, |
|
|
|
|
useBuiltIns: 'entry' |
|
|
|
|
} |
|
|
|
|
use: [ |
|
|
|
|
{ |
|
|
|
|
loader: 'babel-loader', |
|
|
|
|
options: { |
|
|
|
|
cacheDirectory: true, |
|
|
|
|
babelrc: false, |
|
|
|
|
plugins: [ |
|
|
|
|
[require('@rtsao/plugin-proposal-class-properties'), { loose: true }], |
|
|
|
|
'angularjs-annotate', |
|
|
|
|
'syntax-dynamic-import', // needed for `() => import()` in routes.ts
|
|
|
|
|
'react-hot-loader/babel', |
|
|
|
|
], |
|
|
|
|
'@babel/preset-typescript', |
|
|
|
|
'@babel/preset-react' |
|
|
|
|
], |
|
|
|
|
} |
|
|
|
|
}], |
|
|
|
|
presets: [ |
|
|
|
|
[ |
|
|
|
|
'@babel/preset-env', |
|
|
|
|
{ |
|
|
|
|
targets: { browsers: 'last 3 versions' }, |
|
|
|
|
useBuiltIns: 'entry', |
|
|
|
|
}, |
|
|
|
|
], |
|
|
|
|
'@babel/preset-typescript', |
|
|
|
|
'@babel/preset-react', |
|
|
|
|
], |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
], |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
test: /\.scss$/, |
|
|
|
|
use: [ |
|
|
|
|
"style-loader", // creates style nodes from JS strings
|
|
|
|
|
"css-loader", // translates CSS into CommonJS
|
|
|
|
|
"sass-loader" // compiles Sass to CSS
|
|
|
|
|
] |
|
|
|
|
'style-loader', // creates style nodes from JS strings
|
|
|
|
|
'css-loader', // translates CSS into CommonJS
|
|
|
|
|
'sass-loader', // compiles Sass to CSS
|
|
|
|
|
], |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
test: /\.(png|jpg|gif|ttf|eot|svg|woff(2)?)(\?[a-z0-9=&.]+)?$/, |
|
|
|
|
loader: 'file-loader' |
|
|
|
|
loader: 'file-loader', |
|
|
|
|
}, |
|
|
|
|
] |
|
|
|
|
], |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
plugins: [ |
|
|
|
@ -95,16 +94,16 @@ module.exports = merge(common, { |
|
|
|
|
filename: path.resolve(__dirname, '../../public/views/index.html'), |
|
|
|
|
template: path.resolve(__dirname, '../../public/views/index-template.html'), |
|
|
|
|
inject: 'body', |
|
|
|
|
alwaysWriteToDisk: true |
|
|
|
|
alwaysWriteToDisk: true, |
|
|
|
|
}), |
|
|
|
|
new HtmlWebpackHarddiskPlugin(), |
|
|
|
|
new webpack.NamedModulesPlugin(), |
|
|
|
|
new webpack.HotModuleReplacementPlugin(), |
|
|
|
|
new webpack.DefinePlugin({ |
|
|
|
|
'GRAFANA_THEME': JSON.stringify(process.env.GRAFANA_THEME || 'dark'), |
|
|
|
|
GRAFANA_THEME: JSON.stringify(process.env.GRAFANA_THEME || 'dark'), |
|
|
|
|
'process.env': { |
|
|
|
|
'NODE_ENV': JSON.stringify('development') |
|
|
|
|
} |
|
|
|
|
NODE_ENV: JSON.stringify('development'), |
|
|
|
|
}, |
|
|
|
|
}), |
|
|
|
|
] |
|
|
|
|
], |
|
|
|
|
}); |
|
|
|
|