npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

dtsmake

v0.0.10

Published

TypeScript d.ts file generator from JavaScript files

Downloads

322

Readme

dtsmake

TypeScript's type definition file (*.d.ts files) generator tool from JavaScript files.

Build Status NPM version Dependency status

Description

TypeScript's type definition file (*.d.ts files) generator tool from JavaScript files. This tool is WIP (Work In Progress).

A Japanese document: TypeScript型定義ファイルのコツと生成ツール dtsmake

Features

  • Generating a *.d.ts file from a JavaScript file.
  • Type inference powered by TernJS. (Need some sample JS files.)
  • Auto annotation JSDoc style comments.
  • Original JSDoc comment in base JS code output.
  • Header template output.

VS.

  • dtsgenerator - d.ts file generator tool, for only JSON Schema files.
  • js2tsd - d.ts file generator tool, no type inferrence.
  • JS2TSD d.ts file generator GUI tool app. Not CLI.

Requirement

Node.js

Install

npm i dtsmake -g

Usage

simple case:

dtsmake -s ./path/to/sourcefile.js

other case:

dtsmake -s ./path/to/src/target.js --dist ./path/to/dist/mydefinition -n "mydefinition" -p node -e -S "legacy" -M "MyDefinition" -x "./path/to/extrafile1.js,./path/to/extrafile2.js" -N --def ./path/to/def/ecma6 -A -i -a -g

Example

Best Practice

Generating Gulp.js plugin definition files

dtsmake -s /path/to/gulp/any/plugin.js -n "canalCasePluginName" -p node -e -M "gulp-*" -N -l "/path/to/node.d.ts"

  • -n "canalCasePluginName"
  • gulp.js plugins has a name as gulp-*.
  • but, this is a invalid namespace name in TS.
  • so, naming canal case.
  • ex. gulp-header -> gulpHeader
  • or valid namespace name.
  • -M "gulp-*"
  • no need to name canal case.
  • -p node
  • use nodejs plugin of tern server.
  • -N
  • set nodejs module option ON
  • -e
  • set export option ON
  • -l "/path/to/node.d.ts"
  • add referrece path to node.d.ts definition file

Options

-h, --help

output usage information

-v, --version

output the version number

-s, --src <path>

[MUST] target javascript file path

--dist [value]

outout d.ts file path. no need .d.ts file extension.

ex. --dist /path/to/dist -> /path/to/dist.d.ts

-n, --n [value]

module name

-p, --plugin <names>

tern.js plugin.

ex. -p "node,module,commonjs"

-d, --def <paths>

tern.js def files. DEFAULT:'ecma5'

see Tern.js's def json format and Tern.js's sample def files.

-x, --extrafiles <paths>

sample files for target js lib. help for ternjs type inference.

ex. -x "./path/to/extrafile1.js,./path/to/extrafile2.js"

-D, --debug

debug output mode

-A, --voidAsAny

force output void to any

-i, --interfaceSameNameVar

export a namespace property same with a interface name

-a, --annotateTypeInstance

annotate interface's constructor type as return type instance

-g, --globalObject [value]

how to export objects that same name with JS Global Object; "remove" or "wrap" or "rename"; DEFAULT:"wrap"

//--globalObject "remove"
// ※no output

//--globalObject "wrap"
declare namespace mylib{
    interface Error{
        //...
    }
}

//--globalObject "rename"
interface Mylib$Error{
    //...
}

-N, --NodeJSModule

nodejs module special replace

-e, --export

add export statement in a bottom of d.ts file

-S, --exportStyle [value]

if --outExport true, select export style "es6" or "legacy"

//--exportStyle "legacy"
declare module 'mylib'{
    export = mylib;    //legacy ts module export
}
//--exportStyle "es6"
declare module 'mylib'{
    export defalut mylib;    //es6 style module export 
}

-M, --exportModuleName [value]

exporting module name.

ex. "EXAMPLE"; usage import example = require("EXAMPLE");

-l, --lib <paths>

add referrece path d.ts files.

ex. --lib path/to/ex1.d.ts,path/to/ex2.d.ts

=>

/// <reference path="path/to/ex1.d.ts" />
/// <reference path="path/to/ex2.d.ts" />

Known Issues

  1. JSDoc tag (@param, @return) duplication when it was already defined in the target JavaScript code.
  2. When -p node (Ternjs's Nodejs plugin) option is ON, dtsmake sometimes outputs nothing.
  3. Only support Tern.js server plugins in here.

TODOs

  • Tern.js's server plugin without default support.
  • tern/condense cmd cannot load 3rd party plugins (ex. tern-gulp ), so, replace or patches it.

see TODO.md

Licence

MIT

Author

ConquestArrow Github | Qiita