¿Cómo decido si @types / * entra en 'dependencies`o 'devDependencies'?


Uso TypeScript 2 en mi proyecto. Me gustaría usar alguna biblioteca js, pero también escribir para esa biblioteca. Puedo instalar tipos con simple npm install @types/some-library. No estoy seguro de si debería --save o --save-dev ellos. Me parece que incluso DefinetelyTyped GitHub readme menciona ambas versiones, pero nunca las explica. Creo que @types debería estar en devDependencies, ya que los tipos son necesarios para el desarrollo y no se usan en tiempo de ejecución, pero he visto muchas veces @types solo en dependencies. Estoy confundido.

¿Cómo debería decide si @types / * entra en dependencies o devDependencies? ¿Hay realmente algunas instrucciones más o menos oficiales?

Author: kamyl, 2017-07-18

2 answers

Digamos que estás desarrollando un paquete "A" que tiene el paquete @types/some-module en devDependencies. Por alguna razón está exportando el tipo desde @types / some-module

import {SomeType} from 'some-module';
export default class APackageClass {
     constructor(private config: SomeType) {

     }
}

En este momento, los consumidores de Typescript del paquete "A" no pueden adivinar qué es SomeType, ya que las dependencias de desarrollo del paquete "A" NO ESTÁN instaladas.

En ese caso particular necesita colocar el paquete @types/* con "dependencias"regulares. Para otros casos" devDependencies " son suficientemente buenos.

 21
Author: wookieb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-02 10:44:20

¿Estás generando un paquete? Si es así, sugeriría no pasar demasiado tiempo debatiendo qué va a dónde. devDependencies y dependencies solo tienen sentido si está publicando un paquete que puede ser utilizado por otros y no desea enviarles spam con dependencias inútiles.

TL; DR colóquelo en devDependencies. Como dijiste "los tipos son necesarios para el desarrollo y no se usan en tiempo de ejecución".

 8
Author: Valentin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-18 20:47:40