Browse Source

build(webpack): update webpack packages

webpack-serve and webpack-command have been depreciated. Migrate to
webpack-cli and webpack-dev-server.
renovate/lint-staged-8.x
Tom Kirkpatrick 6 years ago
parent
commit
a82e585e7f
No known key found for this signature in database GPG Key ID: 72203A8EC5967EA8
  1. 13
      app/containers/Root.js
  2. 12
      app/index.js
  3. 122
      internals/webpack/webpack.config.renderer.dev.js
  4. 85
      internals/webpack/webpack.config.renderer.prod.js
  5. 20
      package.json
  6. 1316
      yarn.lock

13
app/containers/Root.js

@ -3,7 +3,6 @@ import { connect } from 'react-redux'
import { ConnectedRouter } from 'react-router-redux'
import { Switch, Route } from 'react-router'
import PropTypes from 'prop-types'
import { hot } from 'react-hot-loader'
import GlobalError from 'components/GlobalError'
import { clearError } from 'reducers/error'
@ -292,10 +291,8 @@ Root.propTypes = {
syncingProps: PropTypes.object.isRequired
}
export default hot(module)(
connect(
mapStateToProps,
mapDispatchToProps,
mergeProps
)(Root)
)
export default connect(
mapStateToProps,
mapDispatchToProps,
mergeProps
)(Root)

12
app/index.js

@ -21,13 +21,19 @@ const initialState = {
const store = configureStore(initialState)
const MOUNT_NODE = document.getElementById('root')
const render = () => {
const render = Component => {
ReactDOM.render(
<Provider store={store}>
<Root history={history} />
<Component history={history} />
</Provider>,
MOUNT_NODE
)
}
render()
render(Root)
if (module.hot) {
module.hot.accept('./containers/Root', () => {
render(Root)
})
}

122
internals/webpack/webpack.config.renderer.dev.js

@ -11,11 +11,7 @@ import path from 'path'
import fs from 'fs'
import webpack from 'webpack'
import merge from 'webpack-merge'
import convert from 'koa-connect'
import history from 'connect-history-api-fallback'
import proxy from 'http-proxy-middleware'
import { spawn, execSync } from 'child_process'
import ExtractTextPlugin from 'extract-text-webpack-plugin'
import HtmlWebpackPlugin from 'html-webpack-plugin'
import AddAssetHtmlPlugin from 'add-asset-html-webpack-plugin'
import CspHtmlWebpackPlugin from 'csp-html-webpack-plugin'
@ -50,6 +46,10 @@ export default merge.smart(baseConfig, {
publicPath: `http://localhost:${port}/dist/`
},
stats: {
children: false
},
module: {
rules: [
{
@ -59,38 +59,20 @@ export default merge.smart(baseConfig, {
loader: 'babel-loader',
options: {
cacheDirectory: true,
plugins: [
// Here, we include babel plugins that are only required for the
// renderer process. The 'transform-*' plugins must be included
// before react-hot-loader/babel
'@babel/plugin-proposal-class-properties',
'@babel/plugin-transform-classes',
'@babel/plugin-proposal-export-default-from',
'react-hot-loader/babel'
]
plugins: ['react-hot-loader/babel']
}
}
},
// Extract all .global.css to style.css as is
{
test: /\.global\.css$/,
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader',
options: {
sourceMap: true
}
}
]
use: ['style-loader']
},
// Pipe other styles through css modules and append to style.css
{
test: /^((?!\.global).)*\.css$/,
use: [
{
loader: 'style-loader'
},
'style-loader',
{
loader: 'css-loader',
options: {
@ -106,9 +88,7 @@ export default merge.smart(baseConfig, {
{
test: /\.global\.scss$/,
use: [
{
loader: 'style-loader'
},
'style-loader',
{
loader: 'css-loader',
options: {
@ -128,9 +108,7 @@ export default merge.smart(baseConfig, {
{
test: /^((?!\.global).)*\.scss$/,
use: [
{
loader: 'style-loader'
},
'style-loader',
{
loader: 'css-loader',
options: {
@ -217,10 +195,6 @@ export default merge.smart(baseConfig, {
debug: true
}),
new ExtractTextPlugin({
filename: '[name].css'
}),
new HtmlWebpackPlugin({
template: path.join('app', 'app.html')
}),
@ -230,6 +204,8 @@ export default merge.smart(baseConfig, {
includeSourcemap: false
}),
new webpack.HotModuleReplacementPlugin(),
new CspHtmlWebpackPlugin({
'default-src': "'self'",
'object-src': "'none'",
@ -265,55 +241,39 @@ export default merge.smart(baseConfig, {
__filename: false
},
serve: {
devServer: {
port,
hotClient: {
validTargets: ['electron-renderer']
hot: true,
publicPath,
headers: { 'Access-Control-Allow-Origin': '*' },
watchOptions: {
aggregateTimeout: 300,
ignored: /node_modules/,
poll: 100
},
devMiddleware: {
publicPath,
stats: 'errors-only',
headers: { 'Access-Control-Allow-Origin': '*' },
watchOptions: {
aggregateTimeout: 300,
ignored: /node_modules/,
poll: 100
proxy: {
'/proxy/zap.jackmallers.com': {
target: 'https://zap.jackmallers.com',
pathRewrite: { '^/proxy/zap.jackmallers.com': '' },
changeOrigin: true
},
'/proxy/blockchain.info': {
target: 'https://blockchain.info/ticker',
pathRewrite: { '^/proxy/blockchain.info': '' },
changeOrigin: true
}
},
// Add middleware to proxy requests to selected remote sites.
add: app => {
app.use(
convert(
proxy('/proxy/zap.jackmallers.com', {
target: 'https://zap.jackmallers.com',
pathRewrite: { '^/proxy/zap.jackmallers.com': '' },
changeOrigin: true
})
)
)
app.use(
convert(
proxy('/proxy/blockchain.info', {
target: 'https://blockchain.info/ticker',
pathRewrite: { '^/proxy/blockchain.info': '' },
changeOrigin: true
})
)
)
app.use(convert(history()))
},
historyApiFallback: true,
// Start the main process as soon as the server is listening.
on: {
listening: () => {
if (process.env.START_HOT) {
spawn('npm', ['run', 'start-main-dev'], {
shell: true,
env: process.env,
stdio: 'inherit'
})
.on('close', code => process.exit(code))
.on('error', spawnError => mainLog.error(spawnError))
}
after: () => {
if (process.env.START_HOT) {
spawn('npm', ['run', 'start-main-dev'], {
shell: true,
env: process.env,
stdio: 'inherit'
})
.on('close', code => process.exit(code))
.on('error', spawnError => mainLog.error(spawnError))
}
}
},

85
internals/webpack/webpack.config.renderer.prod.js

@ -3,7 +3,7 @@
*/
import path from 'path'
import ExtractTextPlugin from 'extract-text-webpack-plugin'
import MiniCssExtractPlugin from 'mini-css-extract-plugin'
import HtmlWebpackPlugin from 'html-webpack-plugin'
import CspHtmlWebpackPlugin from 'csp-html-webpack-plugin'
import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'
@ -26,21 +26,23 @@ export default merge.smart(baseConfig, {
filename: 'renderer.prod.js'
},
stats: {
children: false
},
module: {
rules: [
// Extract all .global.css to style.css as is
{
test: /\.global\.css$/,
use: ExtractTextPlugin.extract({
use: 'css-loader',
fallback: 'style-loader'
})
use: [MiniCssExtractPlugin.loader, 'css-loader']
},
// Pipe other styles through css modules and append to style.css
{
test: /^((?!\.global).)*\.css$/,
use: ExtractTextPlugin.extract({
use: {
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
modules: true,
@ -48,47 +50,42 @@ export default merge.smart(baseConfig, {
localIdentName: '[name]__[local]__[hash:base64:5]'
}
}
})
]
},
// Add SASS support - compile all .global.scss files and pipe it to style.css
{
test: /\.global\.scss$/,
use: ExtractTextPlugin.extract({
use: [
{
loader: 'css-loader'
},
{
loader: 'sass-loader',
options: {
includePaths: [path.join(__dirname, 'app')]
}
use: [
MiniCssExtractPlugin.loader,
'css-loader',
{
loader: 'sass-loader',
options: {
includePaths: ['app']
}
],
fallback: 'style-loader'
})
}
]
},
// Add SASS support - compile all other .scss files and pipe it to style.css
{
test: /^((?!\.global).)*\.scss$/,
use: ExtractTextPlugin.extract({
use: [
{
loader: 'css-loader',
options: {
modules: true,
importLoaders: 1,
localIdentName: '[name]__[local]__[hash:base64:5]'
}
},
{
loader: 'sass-loader',
options: {
includePaths: [path.join(__dirname, 'app')]
}
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
modules: true,
importLoaders: 1,
localIdentName: '[name]__[local]__[hash:base64:5]'
}
},
{
loader: 'sass-loader',
options: {
includePaths: ['app']
}
]
})
}
]
},
// WOFF Font
{
@ -150,12 +147,7 @@ export default merge.smart(baseConfig, {
plugins: [
new CleanWebpackPlugin([path.join('app', 'dist')]),
new ExtractTextPlugin('style.css'),
new BundleAnalyzerPlugin({
analyzerMode: process.env.OPEN_ANALYZER === 'true' ? 'server' : 'disabled',
openAnalyzer: process.env.OPEN_ANALYZER === 'true'
}),
new MiniCssExtractPlugin(),
new HtmlWebpackPlugin({
template: path.join('app', 'app.html')
@ -181,6 +173,11 @@ export default merge.smart(baseConfig, {
'https://fonts.gstatic.com',
"'unsafe-inline'"
]
}),
new BundleAnalyzerPlugin({
analyzerMode: process.env.OPEN_ANALYZER === 'true' ? 'server' : 'disabled',
openAnalyzer: process.env.OPEN_ANALYZER === 'true'
})
]
})

20
package.json

@ -5,9 +5,9 @@
"description": "desktop application for the lightning network",
"scripts": {
"build": "concurrently --raw \"npm:build-main\" \"npm:build-renderer\"",
"build-dll": "webpack --require @babel/register --config internals/webpack/webpack.config.renderer.dev.dll.js --progress",
"build-main": "webpack --require @babel/register --config internals/webpack/webpack.config.main.prod.js --progress",
"build-renderer": "webpack --require @babel/register --config internals/webpack/webpack.config.renderer.prod.js --progress",
"build-dll": "webpack -r @babel/register --config internals/webpack/webpack.config.renderer.dev.dll.js --progress",
"build-main": "webpack -r @babel/register --config internals/webpack/webpack.config.main.prod.js --progress",
"build-renderer": "webpack -r @babel/register --config internals/webpack/webpack.config.renderer.prod.js --progress",
"build-grpc": "rimraf app/node_modules/grpc/src/node && build install-app-deps",
"clean": "rimraf node_modules app/node_modules dll app/dist coverage .eslintcache",
"coverage": "open coverage/index.html",
@ -33,7 +33,7 @@
"prestart": "npm run build",
"start": "cross-env NODE_ENV=production electron ./app/",
"start-main-dev": "cross-env HOT=1 NODE_ENV=development electron -r @babel/register ./app/main.dev",
"start-renderer-dev": "node --trace-warnings -r @babel/register ./node_modules/webpack-serve/lib/cli.js --config internals/webpack/webpack.config.renderer.dev.js",
"start-renderer-dev": "node --trace-warnings -r @babel/register ./node_modules/.bin/webpack-dev-server --config internals/webpack/webpack.config.renderer.dev.js",
"test": "npm run lint && npm run lint-styles && npm run flow && npm run build && npm run test-unit && npm run test-e2e",
"test-base": "cross-env NODE_ENV=test BABEL_DISABLE_CACHE=true ELECTRON_DISABLE_SECURITY_WARNINGS=true node --trace-warnings ./node_modules/jest/bin/jest --maxWorkers=2 --forceExit",
"test-unit": "npm run test-base -- --coverage ./test/unit",
@ -47,6 +47,7 @@
"binarySite": "https://github.com/LN-Zap/lnd/releases/download"
}
},
"sideEffects": false,
"browserslist": [
"electron 3.0"
],
@ -217,7 +218,6 @@
"chalk": "^2.4.1",
"clean-webpack-plugin": "^0.1.19",
"concurrently": "^4.0.1",
"connect-history-api-fallback": "^1.5.0",
"coveralls": "^3.0.2",
"cross-env": "^5.2.0",
"cross-spawn": "^6.0.5",
@ -245,19 +245,17 @@
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-react": "^7.11.1",
"extract-react-intl-messages": "^0.11.1",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
"file-loader": "^2.0.0",
"flow-bin": "^0.83.0",
"flow-typed": "^2.5.1",
"html-webpack-plugin": "^3.2.0",
"http-proxy-middleware": "^0.19.0",
"husky": "1.1.2",
"identity-obj-proxy": "^3.0.0",
"jest": "^23.6.0",
"jsdom": "^12.2.0",
"koa-connect": "^2.0.1",
"lint-staged": "^7.3.0",
"lnd-binary": "^0.3.7",
"mini-css-extract-plugin": "^0.4.4",
"minimist": "^1.2.0",
"mock-spawn": "^0.2.6",
"node-sass": "^4.9.3",
@ -275,9 +273,9 @@
"url-loader": "^1.1.2",
"webpack": "^4.20.2",
"webpack-bundle-analyzer": "^3.0.2",
"webpack-command": "^0.4.1",
"webpack-merge": "^4.1.4",
"webpack-serve": "^2.0.2"
"webpack-cli": "^3.1.2",
"webpack-dev-server": "^3.1.9",
"webpack-merge": "^4.1.4"
},
"dependencies": {
"@grpc/proto-loader": "^0.3.0",

1316
yarn.lock

File diff suppressed because it is too large
Loading…
Cancel
Save