tsdx
tsdx copied to clipboard
No support for test build, breaks `process.env.NODE_ENV === 'test'`
Current Behavior
tsdx does not create a test build and will end up loading the development build when process.env.NODE_ENV === 'test'. But the development build has replaced process.env.NODE_ENV with 'development'.
This causes some issues if one puts a process.env.NODE_ENV === 'test' in their source code as it will always be false. This is what I experienced in https://github.com/agilgur5/mst-persist/pull/9#issuecomment-511167625
The ESM build actually leaves process.env.NODE_ENV as is, so it causes differing behavior for ESM vs. CJS.
Most tests are run in Node and require CJS support as a result (unless one is transpiling node_modules or using the esm package as a loader), so this means most behavior behind a test check just won't work for folks who build their libraries with tsdx.
Expected behavior
If someone added a process.env.NODE_ENV === 'test' in their source code it should work as expected in a test environment.
Suggested solution(s)
- Don't replace
process.env.NODE_ENVwith'development'in thedevelopmentbuild, OR - Create a separate
testbuild
Additional context
None, have linked the repo in which I experienced the problem above.
Your environment
| Software | Version(s) |
|---|---|
| TSDX | 0.7.2 |
| TypeScript | 3.5.2 |
| Browser | N/A |
| npm/Yarn | npm 6.9.0 |
| Operating System | macOS High Sierra 10.13 |
^Also y'all might want to check out how nyc uses npx envinfo@latest --preset nyc in order to get the above table easily from all users reporting issues.
FYI you can just use process.env["NODE_ENV"] === "test" since the replace plugin used in just matches for process.env.NODE_ENV