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 همچنین دارای مستندات مفصل است.
