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

@htho/npm-dts

v1.5.1

Published

Simple DTS single-file generation utility for TypeScript bundles

Downloads

16

Readme

npm-dts (fork)

This utility generates single index.d.ts file for whole NPM package.

It allows creating bundled NPM library packages without TypeScript sources and yet still keeping code suggestions wherever these libraries are imported.

TypeScript picks up index.d.ts automatically.

About This Fork

This fork includes the --customAlias and the --shake options. They will hopefully be included in the original some time.

The most recent (but experimental) addition is also copy existing d.ts files, which may be included in the source. This is useful, when there are d.ts files that describe the API of a .js file in your code base.

Unfortunately there is no way to include ambient declarations in the bundle. A d.ts file that has no exports will have no effects.


Installation

Local:

npm install --save-dev npm-dts

Global:

npm install -g npm-dts

CLI Usage

Please make sure that target project has "typescript" installed in node_modules.

To see full CLI help - run without arguments:

npm-dts

Typical usage (using global install):

cd /your/project
npm-dts generate

Supported options

npm-dts [options] generate

| Option | Alias | Description | |--------|-------|-------------| | --entry [file] | -e [file] | Allows changing main src file from index.ts to something else. It can also be declared as a path, relative to root. | | --force | -f | Ignores non-critical errors and attempts to at least partially generate typings (disabled by default). | | --customAlias | -a | Instead of an alias, use the given template, where {main-module} is replaced with the name/path of the entry module and {package-name} is replaced with the name of the package. | | --help | -h | Output usage information. | | --logLevel [level] | -L [level] | Log level (error, warn, info, verbose, debug) (defaults to "info"). | | --output [file] | -o [file] | Overrides recommended output target to a custom one (defaults to "index.d.ts"). | | --shake | -s | Basic tree-shaking for modules. (off (default), referencedOnly). referencedOnly drops modules not referenced by the entry module. | | --root [path] | -r [path] | NPM package directory containing package.json (defaults to current working directory). | | --tmp [path] | -t [path] | Directory for storing temporary information (defaults to OS-specific temporary directory). Note that tool completely deletes this folder once finished. | | --tsc [options] | -c [options] | Passed through additional TSC options (defaults to ""). Note that they are not validated or checked for suitability. When passing through CLI it is recommended to surround arguments in quotes and start with a space (work-around for a bug in argument parsing dependency of npm-dts). | | --version | -v | Output the version number. |

Integration using WebPack

You would want to use "npm-dts-webpack-plugin" package instead.

Integration into NPM scripts

Example of how you could run generation of index.d.ts automatically before every publish.

{
  // ......
  "scripts": {
    "prepublishOnly": "npm run dts && ......",
    "dts": "./node_modules/.bin/npm-dts generate"
  }
  // ......
}

Another possible option would be to execute "npm run dts" as part of bundling task.

Integration into custom solution

This approach can be used for integration with tools such as WebPack.

Simple usage with all default values:

import {Generator} from 'npm-dts'
new Generator({}).generate()

Advanced usage example with some arguments overridden:

import * as path from 'path'
import {Generator} from 'npm-dts'

new Generator({
  entry: 'main.ts',
  root: path.resolve(process.cwd(), 'project'),
  tmp: path.resolve(process.cwd(), 'cache/tmp'),
  tsc: '--extendedDiagnostics',
}).generate()

Above examples were in TypeScript. Same in plain JavaScript would look like this:

const path = require('path')

new (require('npm-dts').Generator)({
  entry: 'main.ts',
  root: path.resolve(process.cwd(), 'project'),
  tmp: path.resolve(process.cwd(), 'cache/tmp'),
  tsc: '--extendedDiagnostics',
}).generate()

Additional arguments

Constructor of generator also supports two more boolean flags as optional arguments:

  • Enable log
  • Throw exception on error

Initializing without any options will cause npm-cli to read CLI arguments all by itself.