mirror of
https://github.com/aspnet/JavaScriptServices.git
synced 2025-12-23 01:58:29 +00:00
Added OnPrepareResponse to the WebpackDevMiddleware #10
Closed
opened 2025-08-09 17:14:39 +00:00 by fergalmoran
·
0 comments
No Branch/Tag Specified
master
rybrande/masterToSrc
pakrym/no-console-fb
release/2.2
pakrym/remove-obsole-api-usage
maestro/release/2.2
maestro/master
release/2.1
release/2.0
rybrande/MergeRelease21IntoDev
rel/2.0.0-extensions
angular-animations-example
fix-angular-material-publishing
rel/2.0.0-templates
httpwithstatetransfer-example
rel/2.0.0-preview2-templates
aspnet-webpack-react-2.x
angular4-prerender-data-example
version-1.x
angular2-lazy-loading-example
581-isomorphic-react-cookies-example
example-using-typescript-paths-for-494
v1.0.x
angular2-materialize-example
redux-typed-1-x
primeng-example
font-awesome-example
karma-testing-example
2.2.0
2.2.0-preview3
2.2.0-preview2
2.2.0-preview1
2.1.1
2.1.0
2.0.4
2.1.0-rc1-final
2.1.0-preview2-final
2.0.3
2.1.0-preview1-final
2.0.2
2.0.1
rel/2.0.0
rel/2.0.0-preview2
Labels
Clear labels
2 - Working
2 - Working
3 - Done
3 - Done
3 - Done
3 - Done
3 - Done
3 - Done
3 - Done
angular
angular
angular
angular
angular
bug
bug
bug
bug
bug
bug
bug
bug
bug
core
core
core
core
core
core
core
duplicate
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
external
external
P1
P1
P1
P1
P1
P1
P2
P2
P2
P2
P2
P2
P2
P2
P2
PRI: 1 - Required
react
react
task
task
up-for-grabs
up-for-grabs
up-for-grabs
waiting
waiting
waiting
waiting
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
fergalmoran
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github/JavaScriptServices#10
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @PhotoAtomic on 10/18/2018
WebpackDevMiddleware doesn't allow to add heades to the generated response while using HMR. In certain scenario (using workbox for PWA) it is necessary to add headers to the returned swerviceworker file to broad the scope of the service worker and keep the solution clean.
While this is possible in production mode using the StaticFileMiddleware, this is not possible in development because of the "proxied" way the WebpackDevMiddleware works.
To keep consistency with the static file middleware which provide a OnPrepareResponse extension point i've implemented a similar mechanism for the webpack dev middleware which could be usefull also in other scenario, not only for my particular workbox integration needs.
In my scenario it can be used this way:
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions { HotModuleReplacement = true, OnPrepareResponse = (c)=> { c.Response.HttpContext.Response.Headers["Service-Worker-Allowed"] = "/"; } });if no OnPrepareResponse option is provided, everything work as usual
Implementation Question:
i've implemented in the simplest way but i've noticed that the class WebpackDevMiddlewareOptions is at one point serialized in devServerOptions (Webpack\WebpackDevMiddleware.cs+92) and passed to the createWebpackDevServer trough the node script using the node service.
Because this OnPrepareResponse action cannot be useful in the node's script context i've added the attribute [JsonIgnore] but i have the doubt that passing additional configuration option in the WebpackDevMiddlewareOptions is not the intended way to use it, even if it s very handy to have it in this way. Please let me know if this WebpackDevMiddlewareOptions class must remain pure with only the argument that have to be passed to node, or if it ok to have all the config option here and maybe using JsonIgnore or copy only the relevant part when passing it as argument to node.
Thanks,
Mosè