DEV Community

Cover image for Writing a Node.js module in TypeScript

Writing a Node.js module in TypeScript

Dominik Kundel on July 18, 2017

One of the best things about Node.js is its massive module ecosystem. With bundlers like webpack we can leverage these even in the browser outside ...
Collapse
 
rauschma profile image
Axel Rauschmayer

Watch out – prepublish is deprecated: docs.npmjs.com/misc/scripts#deprec...

Should @types/emojione be dev dependency?

Collapse
 
dkundel profile image
Dominik Kundel

prepublish itself is not deprecated. The old behavior is deprecated. But it's not the behavior that I'm intending here.

No the @types/emojione should be a normal dependency because it's a dependency of the generated .d.ts file. Basically the @types of any regular dependency should also be a regular dependency.

Collapse
 
rauschma profile image
Axel Rauschmayer

prepublish: right. npm’s deprecation warning gave me the wrong impression. I’m using prepublishOnly to avoid that warning, but it looks like that will be deprecated in the long run, while prepublish will stay (with prepublishOnly behavior): github.com/npm/npm/issues/10074

@types/emojione: make sense, didn’t know about dependencies between type definition files.

Thread Thread
 
dkundel profile image
Dominik Kundel

In this case it doesn't make a difference whether @types/emojione is a dev dependency or not because the .d.ts will only expose one signature that has only built-in types. But if we would have a function that for example exposes a Buffer as part of one signature and we would need @types/node as a normal dependency since the generated .d.ts file has a connection to it. So the best practice would be to just do it for all dependencies that you actually use during runtime.

Collapse
 
phipsy7 profile image
Philippe Rüesch

There's an error in your regex string. It should be
var EMOJI_SHORTCODES = /:[a-zA-Z1-9_]+:/g;
You've forgotten the + at the end of the []

Collapse
 
dkundel profile image
Dominik Kundel

Ah it was dropped during the import from the other blog. Thank you!

Collapse
 
metric152 profile image
Ernest

Your last code example has one to many ( in it
findEmojis((Hello 🐵! What's up? ✌️);

Collapse
 
dkundel profile image
Dominik Kundel

Good catch! thanks!