espower-typescript icon indicating copy to clipboard operation
espower-typescript copied to clipboard

Use espower-typescript on non-testing code

Open qsona opened this issue 4 years ago • 4 comments

Hello,

I'd like to use power-assert on non-testing code (I mean it's normal server-side code) of TypeScript + Node.js. I couldn't find a proper way to do that (an example included in README of this project is using mocha) and am also very newbie about power-assert technology, so I randomly tried by myself and found a way.

Could you please review it? I'd like to contribute by creating a good example or adding usage to README so that other people who have same purpose can easily use this library.

Here's the example (somewhat working but maybe not ideal). Is it an intended or acceptable way?

https://github.com/qsona/power-assert-typescript-node-seed/pull/1/files

  • running code with ts-node --require tsnodeconfig.ts
  • run require('espower-typescript') and call it with pattern option in tsnodeconfig.ts

qsona avatar Jan 26 '21 22:01 qsona

@qsona Thank you and it looks good to me. Would you contribute to us?

twada avatar Jan 27 '21 14:01 twada

@qsona At first glance, it looks like working, but internally, ts-node has been registered twice. Because espower-typescript registers ts-node internally. https://github.com/power-assert-js/espower-typescript/blob/049e1a85b370e513563fd135f0387edd1e88d38e/index.js#L13

TypeScript compiles one file twice, but in the second compilation, it does not change the JS code, so it looks like working as a result.

  1. TS source -> JS source
  2. JS source -> JS source (no changes in your sample code)

I do not know if it will not cause some problems when compiled multiple times in other cases. So I think it's better to bootstrap with node instead of ts-node.

$ cp tsnodeconfig.ts tsnodeconfig.js
$ node --require ./tsnodeconfig.js src/index.ts

teppeis avatar Jan 27 '21 14:01 teppeis

If you want to bootstrap with your own ts-node like #66, you can add an option to not register the ts-node inside espower-typescript. PR welcome.

teppeis avatar Jan 27 '21 14:01 teppeis

@teppeis Oh thank you for your clarification!

twada avatar Jan 27 '21 16:01 twada