webpack-devserver-helper v1.0.0
Webpack devServer helper
A processor to mock data from static file via devServer.historyApiFallback.rewrites. Also a tool to parse mock configuration. Another tool is used to process devServer.proxy configuration, taking into account the public path and other stuff, to simplify its configuration.
Mock illustration
config
folder
`mock`mocked file extension
`json`conversion map
``` 'article/(\\d+)/comment/(\\d+)' => 'article_$1_comment_$2' ```
url
`article/235/comment/456`result url
`mock/article_456_comment_235.json`Webpack config example
const helper =require('webpack-devserver-helper');
const publicPath = 'root';
const cfg= [
['article/(\\d+)/comment/(\\d+)', 'article_$1_comment_$2_']
];
const mock=helper.staticMock(helper.parseMockConfig(cfg), publicPath);
module.exports={
...,
devServer: {
historyApiFallback: {
verbose: true,
index: publicPath + '/index.html',
rewrites: [{
from: new RegExp(`^api/([^.]+)`),
to: function(ctx){
return mock(ctx.match[1]);
}
}]
},
setup:function setup(app){
app.post('/api/:path', function(req, res, next) {
req.method='GET';
next();
});
}
}
};Proxy illustration
config
public path
`root`source config
```{ context: '/auth', '/api', target: 'http://localhost:3000', }
```
output
[{
context: ['root/auth', 'root/api'],
target: 'http://localhost:3000',
}]Docs
Functions
parseMockConfig(cfg) ⇒ Object
Generate config of full format from shorthand, for staticMock using. Acceptible formats refering to @see.
Kind: global function
Returns: Object - - refined config
See: input and output formats
input
- {true} => {folder:'mock'}
- {string} 'mockDir' => {folder:'mockDir'},
- {array}
['article/(\\d+)/comment/(\\d+)', 'article_$1_comment_$2_'] => {folder:'mock', rewrites:[]} - {Object} if 'folder' is missed, set to 'mock', or stay untouched
output
{ folder:'mock', rewrites:[ ['article/(\\d+)/comment/(\\d+)', 'article_$1_comment_$2_'] ] }
| Param | Type | Description |
|---|---|---|
| cfg | Object | passed in shorthand config. |
staticMock(mockConfig, publicPath, ext) ⇒ function
Create a path mapping function used for devServer config.
Config details referring to webpack config example.
Kind: global function
Returns: function - - function mapping path to mock data file name.
| Param | Type | Default | Description |
|---|---|---|---|
| mockConfig | Object | returned from parseMockConfig() | |
| publicPath | string | what is configured in webpack | |
| ext | string | "json" | default file extension mapped when no rewrites matched |
parseProxies(proxies, publicPath, apiPrefix) ⇒ Object
Refine setting for devServer.proxy.
1) prepend publicPath to key.
2) rewrites them to empty string, if no 'pathRewrite' is specified.
3) set logLevel to 'debug'.
Kind: global function
Returns: Object - the config object with correct format.
See: allowed format for input config:
- {string} assume apiPrefix is source to match
'http://api.com' {object}
{'api':'http://afsfa.com'}or (will be wrapped into array automatically)
{ context: ['/auth', '/api'], target: 'http://localhost:3000', }{array}
[{ context: ["/auth", "/api"], target: "http://localhost:3000", }].
| Param | Type | Description |
|---|---|---|
| proxies | string | object | array | input config, ref @see to see allowed format. |
| publicPath | string | the option set in webpack. |
| apiPrefix | string | default url to match when url is missing in config. |
License
MIT.
8 years ago