GithubHelp home page GithubHelp logo

typed-install's Introduction

typed-install

npm

You're writing Typescript and it's time to install your favorite node module. Has this ever happened to you?

% npm i my-module @types/my-module
npm ERR! code E404
npm ERR! 404 Not Found: @types/my-module@latest

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/user/.npm/_logs/2018-03-31T23_41_37_683Z-debug.log

It's hard to know if type declarations are included with the module, shipped separately, or non-existent. Enter typed-install.

Installation and Usage

Install from npm using your favorite package manager.

% npm i -g typed-install

Run it with the typedi command, passing any number space-separated package names (this should be very familiar).

% typedi heroku-config lodash striptags
✔ Installing Packages
✔ Checking for @types
✔ Installing Available Types

The following packages were fully installed:
  * lodash
  * striptags

The following packages were installed, but lack types:
  * heroku-config

By default, typedi guesses your preferred package manager (based on a lockfile), uses npm if there's no hint, saves packages into dependencies, and @types into devDependencies.. This is configurable with the following flags:

  • -d | --dev: save packages into the devDependencies
  • -p | --prod: save @types into dependencies
  • -m | --package-manager: one of npm, yarn, or pnpm. Specifying one of these overwrites lockfile guessing.
  • -e | --exact: install with an exact type instead of a caret (^). This overwrites your config files for the tool you're using

Using --dev and --prod together will probably not do what you expect.

Exceptions

As of the release of v1.0.6, the following packages ship with a stub types file, confusing this utility:

  • jest

Those are always explicitly fetched. If you know of another example (or one of the above is shipping actual types) file an issue and I'll add the exception.

Using without installing

If you have [email protected] or greater installed, you can run this via npx (more info), a tool to run CLI packages without explicitly installing them. This is great for periodic or one time use.

The previous example becomes:

% npx typed-install heroku-config lodash striptags

Similarly, if you're using yarn@2, you can use yarn dlx (see the docs).

If you're going to invoke this repeatedly or frequently, global installation is recommended.

API

The code that powers typedi can also be used via the Node.js API.

The main function takes the following options, in order:

modules (string[])

An array of npm module names

opts (object, default {})

an object with any of the following keys (see above):

  • dev
  • prod
  • packageManager
  • exact

Any keys not present default to false.

shouldSpin (boolean, default false)

Whether or not to run the fancy spinner. If you're using this in other code, this should probably be false. Also controls whether messages are logged.

const typedi = require('typed-install').default

typedi(['lodash', 'striptags'], { dev: true }).then(() => {
  console.log('all done!')
})

typed-install's People

Contributors

xavdid avatar dependabot[bot] avatar chances avatar duykhang53 avatar styfle avatar eyousefifar avatar

Stargazers

 avatar Tuan Duc Tran avatar Desmond avatar flumpus avatar App Service avatar  avatar Eudaimonia Admin avatar blitzkrieg avatar  avatar Sachin Aryal avatar Shivram Sambhus avatar einSelbst avatar Tzvi Melamed avatar Karl Horky avatar  avatar sviatoslav-lebediev avatar  avatar Piotr avatar Vytenis avatar  avatar Jonas Jensen avatar Damien Golding avatar Pulkit Sood avatar  avatar  avatar  avatar Zachary avatar Ken Huang avatar Ivan Motiienko avatar Tylor Steinberger avatar Mathieu CAROFF avatar Alexey Alekhin avatar Pat avatar  avatar Tomohiro Onuma avatar Alex Devero avatar Jose Santos avatar André Neves avatar devin morgenstern avatar Kenneth P. Barquero avatar Andreas Adam avatar Garcia avatar  avatar Ivan Aksamentov avatar MOCHIZUKI Natsune avatar Kazuki Furukawa avatar Chris Motch avatar Thibault Goudouneix avatar misoobu avatar macchiitaka avatar Andrejs Agejevs avatar Tomonori Suyama avatar しまぶー avatar ONDA, Takashi avatar Jan Riemer avatar cheezenaan avatar turkeyzawa avatar Yu Sasaki avatar Takuya Abe avatar Marius Runde avatar Y.Yamamoto avatar Daichi Kimura avatar Kousuke Ebihara avatar azu avatar Loïc Mahieu avatar Eugene Samonenko avatar TMTron avatar Rajkumar Singh avatar Jonas Krispin avatar Hussein Morsy avatar Bruno Scheufler avatar Hugh Willson avatar Jacob Smith avatar  avatar  avatar John Dziurlaj avatar Cameron Martin avatar Bruce W. Herr II avatar Matheus Albuquerque avatar Carsten Dietzel avatar C.J. Winslow avatar Stefan Buck avatar Oliver Joseph Ash avatar ap avatar Patrick Cauley avatar Liam Jones avatar Shahzad Nawaz avatar  avatar Dmytro Zharii avatar  avatar Başar avatar Nick Nisi avatar Donnie Flood avatar Stephen Haberman avatar Caleb Boyd avatar Sam Beran avatar Niklas Kühtmann avatar Louis Grignon avatar  avatar

Watchers

 avatar James Cloos avatar  avatar Irwan Fario Subastian avatar  avatar

typed-install's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.