Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build (js): Update Webpack to Webpack 5 #94

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
build (js): Update Webpack to Webpack 5
squishyfoxkitten committed Jul 30, 2022
commit ef633608b8ba1bf8081b03b779983297ddc8a979
10 changes: 6 additions & 4 deletions js/package.json
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@
"scripts": {
"dev": "webpack-dev-server --hot --config webpack.base.cjs --env development",
"build:publish": "rimraf dist && yarn build:rust && yarn build:webpack && yarn build:webpack:production",
"build:rust": "rimraf src/buttplug-rs-ffi && cd ../ffi && cross-env RUSTFLAGS=\"--cfg=web_sys_unstable_apis\" wasm-pack build -d../js/src/buttplug-rs-ffi --release -- --features wasm --no-default-features && cd ../js && node scripts/modularize.cjs wasm-pack && rimraf src/buttplug-rs-ffi/.gitignore src/buttplug-rs-ffi/package.json src/buttplug-rs-ffi/README.md",
"build:rust": "rimraf src/buttplug-rs-ffi && cd ../ffi && cross-env RUSTFLAGS=\"--cfg=web_sys_unstable_apis\" wasm-pack build -d ../js/src/buttplug-rs-ffi --release -- --features wasm --no-default-features && cd ../js && node scripts/modularize.cjs wasm-pack && rimraf src/buttplug-rs-ffi/.gitignore src/buttplug-rs-ffi/package.json src/buttplug-rs-ffi/README.md",
"build:main": "tsc -p tsconfig.json && copyfiles -u 1 \"src/**/*.js\" dist/module && copyfiles -u 1 \"src/**/*.d.ts\" dist/module && copyfiles -u 1 \"src/**/*.wasm\" dist/module",
"build:proto": "pbjs -t static-module -w es6 -o src/buttplug_ffi.js ../protobuf_schemas/buttplug_rs_ffi.proto && node scripts/modularize.cjs pbjs && pbjs -t static-module ../protobuf_schemas/buttplug_rs_ffi.proto | pbts -o src/buttplug_ffi.d.ts -",
"build:webpack": "yarn build:main && webpack --progress --config webpack.base.cjs --env development",
@@ -27,6 +27,7 @@
"type": "module",
"main": "./dist/module/index.js",
"exports": {
"types": "./dist/module/index.d.ts",
"node": "./dist/module/index.js",
"browser": "./dist/web/buttplug.min.js"
},
@@ -41,6 +42,7 @@
"websocket": "^1.0.34"
},
"devDependencies": {
"buffer": "^6.0.3",
"copyfiles": "^2.4.1",
"cross-env": "^7.0.3",
"fork-ts-checker-webpack-plugin": "^6.5.0",
@@ -51,9 +53,9 @@
"ts-proto": "^1.93.1",
"typescript": "^4.5.2",
"uglify-js": "^3.14.4",
"webpack": "^4",
"webpack-cli": "^3",
"webpack-dev-server": "^3.11.2",
"webpack": "~5.74.0",
"webpack-cli": "^4",
"webpack-dev-server": "^4.9.3",
"webpack-merge": "^5.8.0",
"yarn": "^1.22.17"
}
4 changes: 2 additions & 2 deletions js/index.html → js/public/index.html
Original file line number Diff line number Diff line change
@@ -2,8 +2,8 @@
<head></head>
<body>
<button id="run" onclick="scan()">Run</button>
<script lang="javascript"
src="./dist/web/buttplug.min.js">
<script lang="javascript"
src="./buttplug.js">
</script>
<script lang="javascript">
let client;
30 changes: 19 additions & 11 deletions js/webpack.base.cjs
Original file line number Diff line number Diff line change
@@ -44,18 +44,27 @@ const base = {
}
]
},
experiments: {
syncWebAssembly: true
},
resolve: {
extensions: [".ts", ".js"]
extensions: [".ts", ".js"],
fallback: {
buffer: require.resolve('buffer/'),
},
},
devServer: {
historyApiFallback: true,
noInfo: true
},
performance: {
hints: false
},
devtool: 'inline-source-map',
plugins: [
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'],
}),

// ES Module imports require file extensions, but Webpack 4.x/ts-loader doesn't understand
// how to handle that. Instead, we rewrite those imports to use a '.ts' extension instead,
// if one exists.
@@ -92,16 +101,15 @@ const production = {
minimize: true,
mangleWasmImports: false
},
devtool: '#source-map',
devtool: 'source-map',
};

module.exports = env => {
switch(env) {
case 'development':
return base;
case 'production':
return merge(base, production);
default:
throw new Error('No matching configuration was found!');
module.exports = (env, _argv) => {
if (env.development) {
return base;
} else if (env.production) {
return merge(base, production);
} else {
throw new Error('No matching configuration was found!');
}
}
4,497 changes: 1,420 additions & 3,077 deletions js/yarn.lock

Large diffs are not rendered by default.