node.js - معادل globalDevDependencies در typings برای پکیجهای npm @types چیست؟


من میخواهم یک پروژه [email را به tsc@2 ارتقا دهم و در این فرآیند typings را از زنجیره ابزارم حذف کنم.

این مشکلی برای وابستگیهای معمول نیست زیرا این وابستگیها از 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"
}

من میتوانم بهراحتی از طریق نصب کنم

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

با این حال من همچنین برخی globalDevDependencies برای تنظیمات تست خود در typings.json دارم:

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

اولین تلاش من این بود:

npm install @types/mocha --save-dev

اما حالا tsc شکایت میکند که توابع mocha یعنی it و 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'.

به عنوان یک احتمال دور، اشتباهاً فکر کردم نصب کردن آنها به صورت سراسری ممکن است مشکل را حل کند:

npm i @types/mocha  -g

من همچنین با این مشکل مواجه شدم که راه حل آن این بود که پوشه types را در tsconfig.json مستثنی نکنم:

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

با این حال، برای من هم کار نکرد و همان خطا را داد.

در نهایت، من نمیدانم چگونه همان تأثیری که typings با globalDevDependencies و globalDependencies داشتند را به دست بیاورم وقتی میخواهم فقط از npm و بستههای @types/* به جای typings استفاده کنم.

پاسخ شماره ۱

این موضوع من را به مسیر درست هدایت کرد، زیرا من باید نوعها را به tsconfig.json اضافه کنم:

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

گزینه types همچنین دارای مستندات مفصل است.