Closed fasterthanlime closed 7 years ago
Additional notes on istanbul@0.4.5 being deprecated: it only became clear to me after spending a day investigating, but: the acorn-based istanbul is pretty dead.
The new istanbul is heavily marketed as nyc
(its command-line interface), it's pretty much everything https://istanbul.js.org/ talks about - but there's actual libs underneath, conveniently stashed in this monorepo.
The new instrumenter is based on babel, which makes a bunch of sense:
istanbul-lib-instrument
is next to non-existentQuick size comparison:
istanbul-only ツ npm i --save istanbul
+ istanbul@0.4.5
added 60 packages in 5.097s
istanbul-only ツ du -ch node_modules | tail -1
9.4M total
babel-plugin ツ npm i --save babel-plugin-istanbul
+ babel-plugin-istanbul@4.1.4
added 107 packages in 8.772s
babel-plugin ツ du -ch node_modules | tail -1
18M total
N.B: size of the instrument+coverage+babel plug-in only:
babel-plugin ツ du -ch node_modules/istanbul-lib-* node_modules/babel-plugin-istanbul | tail -1
164K total
TL;DR istanbul is now babel-based, it kinda blows if you're not already using babel, but I don't think electron-compile{,rs} should keep using istanbul@0.4.5
All done in:
Works great for me (typescript+babel, inline source maps):
Closing in favor of both PRs.
This issue applies both to electron-compile and electron-compilers, sorry
Reading through a bunch of code right now to find out if a different
$TEMP/compileCache_${hash}
will get generated ifNODE_ENV
changes, and.. it doesn't like it does?Here's the default cache directory code:
The problem is:
You can probably reproduce the problem easily if you use electron-compile with a
.babelrc
like:run it once with
NODE_ENV=production
, then again withNODE_ENV=development
, I'm 80% confident you'd end up not seeing sourceMaps still.Here's my proposal for electron-compile:
calculateDefaultCompileCacheDirectory
to feed off ofdigest-for-object
)Tangentially, here's what I've got planned for electron-compilers:
coverage
options (typescript & babel) only apply whenNODE_ENV=test
coverage
is a string, andcoverage: true
would always instrument, so that the old behavior is retained?coverage
option use babel-plugin-istanbul (a relatively thin wrapper over new-istanbul's instrumenting lib).__coverage__
variable)__coverage__
variable, with proper sourceMap support (it's like 8 lines).Let me know if any of that sounds bad @paulcbetts & others so I can adjust plans accordingly!