Pesquisa de site

node.js - Qual é a equivalência de typings globalDevDependencies para pacotes npm @types?


Quero atualizar um projeto [email para tsc@2 e, no processo, abandonar typings da minha cadeia de ferramentas.

Não é um problema para as dependências comuns, como essas dependências do meu typings.json:

"dependencies": {
  "bluebird": "registry:npm/bluebird#3.3.4+20160515010139",
  "lodash": "registry:npm/lodash#4.0.0+20160416211519",
  "mime": "registry:npm/mime#1.3.0+20160423043021"
}

Posso instalar facilmente via

npm i @types/bluebird @types/lodass @types/mime

No entanto, eu também tenho algumas globalDevDependencies para minha configuração de testes no meu typings.json:

"globalDevDependencies": {
  "mocha": "registry:dt/mocha#2.2.5+20160317120654"
}

Minha primeira tentativa foi:

npm install @types/mocha --save-dev

No entanto, agora tsc reclama que não conhece as funções mocha it e describe.

tests/unit/HelloServiceTest.ts(4,1): error TS2304: Cannot find name 'describe'.
tests/unit/HelloServiceTest.ts(5,5): error TS2304: Cannot find name 'it'.
tests/unit/HelloServiceTest.ts(10,5): error TS2304: Cannot find name 'it'.

Como uma tentativa improvável, pensei erroneamente que instalar aqueles globalmente poderia resolver o problema:

npm i @types/mocha  -g

Também me deparei com esse problema, onde a solução foi não excluir a pasta types no tsconfig.json:

"exclude": [
    "node_modules",
    "!node_modules/@types"
]

ainda assim, também não funcionou para mim, gerando o mesmo erro.

No final, eu não sei como alcançar o mesmo efeito que typings com globalDevDependencies e globalDependencies tinham quando quero usar apenas npm e os pacotes @types/* em vez de typings.

Resposta #1

Este tópico me indicou a direção certa, pois eu preciso adicionar os tipos ao tsconfig.json:

{
  "compilerOptions": {
    "target": "ES6",
    "types": ["node", "mocha", "chai"],
    ...
}

A opção types também possui uma documentação detalhada.