Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
@hatiolab/koa-webpack
Advanced tools
Development and Hot Module Reload Middleware for Koa2, in a single middleware module.
This module wraps and composes
webpack-dev-middleware
and
webpack-hot-client
into a single middleware module, allowing for quick and concise implementation.
As an added bonus, it'll also use the installed webpack
module from your project,
and the webpack.config.js
file in the root of your project, automagically, should
you choose to let it. This negates the need for all of the repetitive setup and
config that you get with koa-webpack-middleware
.
Using npm:
npm install koa-webpack --save-dev
koa-webpack
is an evergreen module. 🌲 This module requires an Active LTS Node version (v8.0.0+ or v10.0.0+), and Webpack v4.0.0+.
const Koa = require('koa');
const koaWebpack = require('koa-webpack');
const app = new Koa();
const options = { .. };
const middleware = await koaWebpack(options);
app.use(middleware);
Returns a Promise
which resolves the server middleware
containing the
following additional properties:
close(callback)
(Function) - Closes both the instance of webpack-dev-middleware
and webpack-hot-client
. Accepts a single Function
callback parameter that is
executed when complete.hotClient
(Object) - An instance of webpack-hot-client
.devMiddleware
(Object) - An instance of webpack-dev-middleware
The middleware accepts an options
Object, which can contain options for the
webpack-dev-middleware
and webpack-hot-client
bundled with this module.
The following is a property reference for the Object:
Type: Object
optional
Should you rather that the middleware use an instance of webpack
that you've
already init'd [with webpack config], you can pass it to the middleware using
this option.
Example:
const webpack = require('webpack');
const config = require('./webpack.config.js');
const koaWebpack = require('koa-webpack');
const compiler = webpack(config);
const middleware = await koaWebpack({ compiler });
app.use(middleware);
Type: Object
Should you rather that the middleware use an instance of webpack configuration that you've already required/imported, you can pass it to the middleware using this option.
Example:
const koaWebpack = require('koa-webpack');
const config = require('./webpack.config.js');
const middleware = await koaWebpack({ config });
app.use(middleware);
Type: String
Allows you to specify the absolute path to the Webpack config file to be used.
Example:
const path = require('path');
const koaWebpack = require('koa-webpack');
// The Webpack config file would be at "./client/webpack.config.js".
const middleware = await koaWebpack({
configPath: path.join(__dirname, 'client', 'webpack.config.js')
});
app.use(middleware);
Type: Object
The devMiddleware
property should contain options for webpack-dev-middleware
, a list of
which is available at webpack-dev-middleware.
Omitting this property will result in webpack-dev-middleware
using its default
options.
Type: Object|Boolean
The hotClient
property should contain options for webpack-hot-client
, a list of
which is available at webpack-hot-client.
Omitting this property will result in webpack-hot-client
using its default
options.
As of v3.0.1
setting this to false
will completely disable webpack-hot-client
and all automatic Hot Module Replacement functionality.
When using koa-webpack
with koa-compress,
you may experience issues with saving files and hot module reload. Please review
this issue
for more information and a workaround.
When serverSideRender
is set to true in config.devMiddleware
, webpackStats
is
accessible from ctx.state.webpackStats
.
app.use(async (ctx, next) => {
const assetsByChunkName = ctx.state.webpackStats.toJson().assetsByChunkName;
// do something with assetsByChunkName
})
For more details please refer to: webpack-dev-middleware
When using with html-webpack-plugin, you can access dev-middleware in-memory filesystem to serve index.html file:
const middleware = await koaWebpack({ config });
app.use(middleware);
app.use(async (ctx) => {
const filename = path.resolve(webpackConfig.output.path, 'index.html')
ctx.response.type = 'html'
ctx.response.body = middleware.devMiddleware.fileSystem.createReadStream(filename)
});
Please take a moment to read our contributing guidelines if you haven't yet done so.
This module started as a fork of
koa-webpack-middleware
FAQs
Development and Hot Reload Middleware for Koa2
The npm package @hatiolab/koa-webpack receives a total of 73 weekly downloads. As such, @hatiolab/koa-webpack popularity was classified as not popular.
We found that @hatiolab/koa-webpack demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.