webpack-dev-middleware
Advanced tools
Comparing version 1.5.1 to 1.6.0
@@ -27,3 +27,3 @@ /* | ||
.replace(/\\\[[a-z]+\\\]/ig, ".+"); | ||
options.filename = new RegExp("^" + str + "$"); | ||
options.filename = new RegExp("^[\/]{0,1}" + str + "$"); | ||
} | ||
@@ -99,3 +99,3 @@ } | ||
if(!options.noInfo && !options.quiet) | ||
console.log("webpack: wait until bundle finished: " + req.url); | ||
console.log("webpack: wait until bundle finished: " + (req.url || fn.name)); | ||
callbacks.push(fn); | ||
@@ -146,5 +146,33 @@ } | ||
function handleRangeHeaders(content, req, res) { | ||
if (req.headers['Accept-Ranges']) res.setHeader('Accept-Ranges', 'bytes'); | ||
if (req.headers.range) { | ||
var ranges = parseRange(content.length, req.headers.range); | ||
// unsatisfiable | ||
if (-1 == ranges) { | ||
res.setHeader('Content-Range', 'bytes */' + content.length); | ||
res.statusCode = 416; | ||
return content; | ||
} | ||
// valid (syntactically invalid/multiple ranges are treated as a regular response) | ||
if (-2 != ranges && ranges.length === 1) { | ||
// Content-Range | ||
res.statusCode = 206; | ||
var length = content.length; | ||
res.setHeader( | ||
'Content-Range', | ||
'bytes ' + ranges[0].start + '-' + ranges[0].end + '/' + length | ||
); | ||
content = content.slice(ranges[0].start, ranges[0].end + 1); | ||
} | ||
} | ||
return content; | ||
} | ||
// The middleware function | ||
function webpackDevMiddleware(req, res, next) { | ||
var filename = getFilenameFromUrl(req.url); | ||
var filename = getFilenameFromUrl(req.path); | ||
if (filename === false) return next(); | ||
@@ -184,2 +212,3 @@ | ||
var content = fs.readFileSync(filename); | ||
content = handleRangeHeaders(content, req, res); | ||
res.setHeader("Access-Control-Allow-Origin", "*"); // To support XHR, etc. | ||
@@ -200,5 +229,18 @@ res.setHeader("Content-Type", mime.lookup(filename)); | ||
webpackDevMiddleware.invalidate = function() { | ||
if(watching) watching.invalidate(); | ||
webpackDevMiddleware.waitUntilValid = function(callback) { | ||
callback = callback || function(){}; | ||
if (!watching || !watching.running) callback(); | ||
else ready(callback, {}); | ||
}; | ||
webpackDevMiddleware.invalidate = function(callback) { | ||
callback = callback || function(){}; | ||
if(watching) { | ||
ready(callback, {}); | ||
watching.invalidate(); | ||
} else { | ||
callback(); | ||
} | ||
}; | ||
webpackDevMiddleware.close = function(callback) { | ||
@@ -205,0 +247,0 @@ callback = callback || function(){}; |
{ | ||
"name": "webpack-dev-middleware", | ||
"version": "1.5.1", | ||
"version": "1.6.0", | ||
"author": "Tobias Koppers @sokra", | ||
"description": "Offers a dev middleware for webpack, which arguments a live bundle to a directory", | ||
"peerDependencies": { | ||
"webpack": ">=1.0.0 <3" | ||
"webpack": "1 || ^2.1.0-beta" | ||
}, | ||
"dependencies": { | ||
"memory-fs": "~0.3.0", | ||
"mime": "^1.3.4" | ||
"mime": "^1.3.4", | ||
"range-parser": "^1.0.3" | ||
}, | ||
@@ -13,0 +14,0 @@ "licenses": [ |
@@ -69,1 +69,38 @@ # webpack-dev-middleware | ||
``` | ||
## Advanced API | ||
This part shows how you might interact with the middleware during runtime: | ||
* `close(callback)` - stop watching for file changes | ||
```js | ||
var webpackDevMiddlewareInstance = webpackMiddleware(/* see example usage */); | ||
app.use(webpackDevMiddlewareInstance); | ||
// After 10 seconds stop watching for file changes: | ||
setTimeout(function(){ | ||
webpackDevMiddlewareInstance.close(); | ||
}, 10000); | ||
``` | ||
* `invalidate()` - recompile the bundle - e.g. after you changed the configuration | ||
```js | ||
var compiler = webpack(/* see example usage */); | ||
var webpackDevMiddlewareInstance = webpackMiddleware(compiler); | ||
app.use(webpackDevMiddlewareInstance); | ||
setTimeout(function(){ | ||
// After a short delay the configuration is changed | ||
// in this example we will just add a banner plugin: | ||
compiler.apply(new webpack.BannerPlugin('A new banner')); | ||
// Recompile the bundle with the banner plugin: | ||
webpackDevMiddlewareInstance.invalidate(); | ||
}, 1000); | ||
``` | ||
* `waitUntilValid(callback)` - executes the `callback` if the bundle is valid or after it is valid again: | ||
```js | ||
var webpackDevMiddlewareInstance = webpackMiddleware(/* see example usage */); | ||
app.use(webpackDevMiddlewareInstance); | ||
webpackDevMiddleware.waitUntilValid(function(){ | ||
console.log('Package is in a valid state'); | ||
}); | ||
``` |
11115
221
106
4
+ Addedrange-parser@^1.0.3
+ Addednan@2.20.0(transitive)
+ Addedrange-parser@1.2.1(transitive)
- Removednan@2.19.0(transitive)