node.js - Mikä on typings globalDevDependenciesin vastaavuus npm @types -paketeille?


Haluan päivittää [email projektin versioon tsc@2 ja samalla luopua typings-työkalusta työkaluvalikoimastani.

Se ei ole ongelma yleisille riippuvuuksille, kuten nämä riippuvuudet minun typings.json-tiedostostani:

"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"
}

Voin helposti asentaa kautta

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

Minulla on kuitenkin myös joitakin globalDevDependencies-riippuvuuksia testiasetustani varten typings.json-tiedostossani:

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

Ensimmäinen yritykseni oli:

npm install @types/mocha --save-dev

Mutta nyt tsc valittaa, ettei se tunne mocha-funktioita it ja 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'.

Pitkän vedon toivossa ajattelin virheellisesti, että niiden asentaminen globaaleiksi saattaisi ratkaista ongelman:

npm i @types/mocha  -g

Löysin myös tämän ongelman, jossa ratkaisu oli olla sulkematta pois types-kansiota tsconfig.json-tiedostosta:

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

mutta se ei myöskään toiminut minulla, antaen saman virheen.

Lopulta en tiedä, kuinka saavuttaa sama vaikutus, joka typings-paketin globalDevDependencies ja globalDependencies aiheuttivat, kun haluan käyttää vain npm-pakettia ja @types/*-paketteja typings-paketin sijaan.

Vastaus #1

Tämä ketju ohjasi minut oikeaan suuntaan, sillä minun täytyy lisätä tyypit tsconfig.json-tiedostoon:

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

Types-vaihtoehdolla on myös yksityiskohtainen dokumentaatio.