Make dependency tracking work with ESM imports
novemberborn opened this issue · 4 comments
AVA's watch mode tracks which source files are loaded by which test files. This way it knows which test files to re-run. This is based on instrumenting the require code in Node.js. We won't be able to track ESM dependencies using this method.
We'll have to find a different way of resolving dependencies. Perhaps by analyzing the imports of test files. We'll have to allow our Babel and TypeScript providers to participate in this.
I think maybe Jest's haste map does something similar, but it's not documented.
feel free to ignore me, --I'd like to mention this package I released and use https://www.npmjs.com/package/resolvewithplus
perhaps you could use this package or something like it. It was originally written for CJS modules but successfully resolves MJS modules as well.
// returns the full path to the 'main' koa file following CJS rules
resolvewithplus('koa', '/Users/bumble/resolvewith/test/', { esm : true });the single-file used by the package https://github.com/iambumblehead/resolvewithplus/blob/master/src/resolvewithplus.js
I'm not sure if this is related, but it seems the ignoredByWatcher option does not prevent the watcher from looping. I am able to reproduce it minimally in this repo: https://github.com/rxbugs/ava-watch-ignore
Just run npm run test:watch
See #2957
Looking to tackle with #3123.
Done in #3218.