Skip to content

Commit 5d73773

Browse files
committed
faster dev build (mineflayer in new webpack config)
1 parent cae2133 commit 5d73773

File tree

9 files changed

+262
-157
lines changed

9 files changed

+262
-157
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Live demo with no installation: https://minecraft.js.org.
1717
npm install
1818
npm start
1919
```
20-
This will start express and webpack in development mode: whenever you save a file, the build will be redone (it takes 2s), and you can refresh the page to get the new result.
20+
This will start express and webpack in development mode: whenever you save a file, the build will be redone (it takes 3s), and you can refresh the page to get the new result.
2121

2222
Connect to http://localhost:8080 in your browser. Also specify correct server ip in url param.
2323

index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
const { app } = require('./lib/server.js')
22
const helmet = require('helmet')
33
const middleware = require('webpack-dev-middleware')
4-
const devconfig = require('./src/webpack.dev.js')
4+
const config = require('./src/webpack.dev.js')
5+
const path = require('path')
56
const compression = require('compression')
67
const webpack = require('webpack')
7-
const compiler = webpack(devconfig)
8+
9+
const compiler = webpack(config)
810

911
app.use(compression())
1012
app.use(helmet({ contentSecurityPolicy: false }))

package-lock.json

Lines changed: 169 additions & 96 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/scripts/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class Game {
1313
console.log('Running in development mode')
1414
}
1515
this.fov = {
16-
normal: 70,
16+
normal: 60,
1717
sprint: 80
1818
}
1919
this.al = new AssetLoader()
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
process.versions.node = '14.0.0'
22
global.Buffer = global.Buffer || require('buffer').Buffer
3-
const mineflayer = function (protocol, proxyHost, proxyPort, botConfig) {
3+
4+
export default function (protocol, proxyHost, proxyPort, botConfig) {
45
require('net').setProxy({ hostname: proxyHost, port: proxyPort, protocol })
56
return require('mineflayer').createBot(botConfig)
67
}
7-
8-
export { mineflayer }

src/scripts/proxy/Proxy.worker.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
import vec3 from 'vec3'
33
import Convert from 'ansi-to-html'
44
import { antiXSS } from './../additional/tools.js'
5-
import { mineflayer } from './mineflayer.js'
65
const convert = new Convert()
6+
importScripts('./mineflayer.js')
7+
mineflayer = mineflayer.default
78

89
global.window = self
910
let bot = null

src/webpack.common.js

Lines changed: 53 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ const path = require('path')
44
const LodashModuleReplacementPlugin = require('lodash-webpack-plugin')
55
const webpack = require('webpack')
66

7-
module.exports = {
7+
const config1 = {
8+
optimization: {
9+
runtimeChunk: 'single'
10+
},
811
entry: {
912
main: path.join(__dirname, 'scripts/index.js'),
1013
bootstrap: [path.join(__dirname, 'styles/style.scss'), 'bootstrap']
@@ -18,32 +21,6 @@ module.exports = {
1821
maxEntrypointSize: 1.5e6,
1922
maxAssetSize: 1.5e6
2023
},
21-
resolve: {
22-
alias: {
23-
'minecraft-protocol': path.resolve(__dirname, '../node_modules/minecraft-protocol/src/index.js'),
24-
express: false,
25-
net: path.resolve(__dirname, 'vendor/browser.js'),
26-
fs: 'memfs'
27-
},
28-
fallback: {
29-
zlib: require.resolve('browserify-zlib'),
30-
stream: require.resolve('stream-browserify'),
31-
buffer: require.resolve('buffer/'),
32-
events: require.resolve('events/'),
33-
assert: require.resolve('assert/'),
34-
crypto: require.resolve('crypto-browserify'),
35-
path: require.resolve('path-browserify'),
36-
constants: require.resolve('constants-browserify'),
37-
os: require.resolve('os-browserify/browser'),
38-
http: require.resolve('http-browserify'),
39-
https: require.resolve('https-browserify'),
40-
timers: require.resolve('timers-browserify'),
41-
// fs: require.resolve("fs-memory/singleton"),
42-
child_process: false,
43-
perf_hooks: path.resolve(__dirname, 'vendor/perf_hooks_replacement.js'),
44-
dns: path.resolve(__dirname, 'vendor/dns.js')
45-
}
46-
},
4724
module: {
4825
rules: [
4926
{
@@ -86,19 +63,12 @@ module.exports = {
8663
]
8764
},
8865
plugins: [
89-
new webpack.ProvidePlugin({
90-
process: path.join(__dirname, '/vendor/process.js')
91-
}),
9266
new HtmlWebpackPlugin({
9367
filename: 'index.html',
9468
template: path.join(__dirname, '/html/index.html'),
9569
inject: 'head',
9670
favicon: path.join(__dirname, 'assets/images/favicon.png')
9771
}),
98-
99-
new webpack.ProvidePlugin({
100-
Buffer: ['buffer', 'Buffer']
101-
}),
10272
new LodashModuleReplacementPlugin(),
10373
new CopyPlugin({
10474
patterns: [
@@ -110,3 +80,52 @@ module.exports = {
11080
})
11181
]
11282
}
83+
84+
const config2 = {
85+
entry: path.join(__dirname, 'scripts/mineflayer.js'),
86+
output: {
87+
library: 'mineflayer',
88+
path: path.join(__dirname, 'dist'),
89+
filename: 'mineflayer.js'
90+
},
91+
performance: {
92+
hints: false,
93+
maxEntrypointSize: 1.5e6,
94+
maxAssetSize: 1.5e6
95+
},
96+
resolve: {
97+
alias: {
98+
'minecraft-protocol': path.resolve(__dirname, '../node_modules/minecraft-protocol/src/index.js'),
99+
express: false,
100+
net: path.resolve(__dirname, 'vendor/browser.js'),
101+
fs: 'memfs'
102+
},
103+
fallback: {
104+
zlib: require.resolve('browserify-zlib'),
105+
stream: require.resolve('stream-browserify'),
106+
buffer: require.resolve('buffer/'),
107+
events: require.resolve('events/'),
108+
assert: require.resolve('assert/'),
109+
crypto: require.resolve('crypto-browserify'),
110+
path: require.resolve('path-browserify'),
111+
constants: require.resolve('constants-browserify'),
112+
os: require.resolve('os-browserify/browser'),
113+
http: require.resolve('http-browserify'),
114+
https: require.resolve('https-browserify'),
115+
timers: require.resolve('timers-browserify'),
116+
child_process: false,
117+
perf_hooks: path.resolve(__dirname, 'vendor/perf_hooks_replacement.js'),
118+
dns: path.resolve(__dirname, 'vendor/dns.js'),
119+
process: path.join(__dirname, 'vendor/process.js')
120+
}
121+
},
122+
plugins: [
123+
new webpack.ProvidePlugin({
124+
process: 'process',
125+
Buffer: ['buffer', 'Buffer']
126+
}),
127+
new LodashModuleReplacementPlugin()
128+
]
129+
}
130+
131+
module.exports = [config1, config2]

src/webpack.dev.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
const merge = require('webpack-merge')
2-
const common = require('./webpack.common.js')
2+
const [config1, config2] = require('./webpack.common.js')
33
const webpack = require('webpack')
44

5-
module.exports = merge.merge(common, {
6-
devtool: 'inline-source-map',
7-
mode: 'development',
8-
plugins: [
9-
new webpack.DefinePlugin({
10-
'window.PRODUCTION': JSON.stringify(false)
11-
})
12-
]
13-
})
5+
module.exports = [
6+
merge.merge(config1, {
7+
devtool: 'inline-source-map',
8+
mode: 'development',
9+
plugins: [
10+
new webpack.DefinePlugin({
11+
'window.PRODUCTION': JSON.stringify(false)
12+
})
13+
]
14+
}),
15+
merge.merge(config2, {
16+
devtool: 'inline-source-map',
17+
mode: 'development'
18+
})
19+
]

src/webpack.prod.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
const merge = require('webpack-merge')
2-
const common = require('./webpack.common.js')
2+
const [config1, config2] = require('./webpack.common.js')
33
const webpack = require('webpack')
44

5-
module.exports = merge.merge(common, {
6-
mode: 'production',
7-
plugins: [
8-
new webpack.DefinePlugin({
9-
'window.PRODUCTION': JSON.stringify(true)
10-
})
11-
]
12-
})
5+
module.exports = [
6+
merge.merge(config1, {
7+
mode: 'production',
8+
plugins: [
9+
new webpack.DefinePlugin({
10+
'window.PRODUCTION': JSON.stringify(true)
11+
})
12+
]
13+
}),
14+
merge.merge(config2, {
15+
mode: 'production'
16+
})
17+
]

0 commit comments

Comments
 (0)