Comments (4)
@jsdf Do you think you some have time to throw a glance? Thanks!
from browserify-incremental.
It looks like the issue is mtime resolution. In your example, if you move delay(2000)
before updateMainEntry
, it works correctly.
Unfortunately this is just a limitation of fs.stat on HFS+ partitions. The coarse, 1 second resolution means it's simply not possible to observe that a file has been changed multiple times in one second via fs.stat on the on HFS+ filesystem.
It looks like you're trying to drive browserify-incremental via gulp watch, which to me just seems like a use case which is better served by watchify. If you look at how watchify is implemented, it uses every filesystem event to invalidate the cache, as well as to kick off bundling. browserify-incremental is more intended for the use case where changes to the files have settled before bundling starts. If you want to use browserify-incremental in this way, debouncing the call the bundle
by 1000 ms might help.
A more robust fix for the resolution problem might be for browserify-incremental to implement content digest/hash based caching, which isn't a bad idea from a cache-correctness point of view. However such a strategy would be slower to invalidate the cache for npm dependencies with many files (React etc), as they would all have to be read into memory and hashed before each build, so you would probably want a hybrid strategy (eg. hash based caching of app code and mtime based for node_modules) and I probably don't have in the near future time to get all that working.
from browserify-incremental.
Thanks a lot for those clarifications.
If it's related to mtime
resolution, then why does it only fail with the main bundle file, and not any other file? I'm trying to understand this.
Thanks!
from browserify-incremental.
@jsdf Do you have an explanation for this? Thanks!
from browserify-incremental.
Related Issues (20)
- not using cache between builds HOT 2
- Crypto library does not work once cache is used HOT 4
- Make browserify-cache.json a hidden file. HOT 1
- Exposed module requiring other exposed module results in error when using cache HOT 2
- end is never triggered, cache file is never saved HOT 1
- Cache isn't invalidated if transform options are changed HOT 6
- fullpaths option HOT 3
- bundle-collapser plugin doesn't work from commandline HOT 1
- Using the same cache from multiple entry points creates invalid bundles HOT 2
- cache file source gets really messed up for .json files HOT 1
- Multiple caches are very slow.
- Use with watchify HOT 1
- When used with require-globify cache is not invalidated properly
- Cache isn't invalidated when dependency is changed to older version
- Cache isn't invalidated when file is removed HOT 1
- Missing cache invalidation? HOT 3
- Doesn't work if .pipe() not called
- using md5/sha1 for caches instead of / in addition to last modified time? HOT 1
- Just wanted to say "thanks" + leave a note
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from browserify-incremental.