node.js - วิธีติดตั้งไทพ์ปิ้งส์แบบกำหนดเอง?
ฉันสร้างการพิมพ์แบบกำหนดเองที่มีโค้ดซึ่งฉันต้องการแชร์ในหลายโปรเจกต์ Node.js บน WebStorm ปัญหาคือฉันพยายามหาคู่มือเอกสารที่อธิบายวิธีรวมการพิมพ์นี้ในโปรเจกต์ ฉันลองใช้คำสั่ง npm แต่ไม่ได้เพิ่มโฟลเดอร์ไปยังโฟลเดอร์ @typings ภายใต้โฟลเดอร์ /node_modules นอกจากนี้ เมื่อฉันคอมไพล์โปรเจกต์ที่พยายามเพิ่มการพิมพ์แบบกำหนดเองเข้าไป ฉันได้รับข้อผิดพลาดซ้ำซ้อนสำหรับไลบรารี mongoose ระหว่างโปรเจกต์ที่มีการพิมพ์กับโปรเจกต์ที่ฉันต้องการเพิ่มการพิมพ์ ฉันไม่แน่ใจว่าปัญหาอาจเกิดจากอะไร
tsconfig.json (สำหรับประเภทใหม่):
{
"name": "newcustomtype",
"description": "...",
"version": "1.0.0",
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
"scripts": {
"grunt": "grunt"
},
"dependencies": {
"@types/express": "^4.0.35",
"@types/express-jwt": "0.0.34",
"debug": "^2.2.0",
"dotenv": "^4.0.0",
"mongoose": "^4.9.2",
"tslint": "^4.5.1"
},
"devDependencies": {
"@types/mongodb": "^2.1.41",
"@types/mongoose": "^4.7.9",
"@types/node": "^7.0.10",
"grunt": "^1.0.1",
"grunt-cli": "^1.2.0",
"grunt-contrib-watch": "^1.0.0",
"grunt-ts": "^6.0.0-beta.15",
"grunt-tslint": "^4.0.1",
"nodemon": "^1.11.0",
"ts-node": "^3.0.2",
"tslint": "^4.5.1",
"typescript": "^2.2.1"
}
}
tsconfig.json (ที่ควรติดตั้งการพิมพ์):
{
"compilerOptions": {
"module": "commonjs",
"target": "ES5",
"moduleResolution": "node",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"types": ["reflect-metadata"],
"lib": ["ES6"],
"sourceMap": true,
"inlineSources": true,
"pretty": true,
"outDir": "dist",
"rootDir": "src",
"noLib": false
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules"
],
"compileOnSave": false
}
ผมพยายามตามเอกสารบนเว็บไซต์ TypeScript แต่ยังหาแหล่งข้อมูลที่อธิบายวิธีติดตั้งหลังจากสร้างไม่ได้ แม้ว่า เพื่อให้มันไม่ติดตั้งการพิมพ์แบบกำหนดเอง ผมคิดว่ายังมีปัญหากับไฟล์ tsconfig ของผมด้วย กรุณาตรวจสอบและบอกผมว่าผมพลาดอะไรไป?
ขอบคุณล่วงหน้า
คำตอบ #1
โฟลเดอร์ node_modules/@types มีไว้สำหรับคำจำกัดความที่ติดตั้งโดย npm เท่านั้น สำหรับการกำหนดประเภทเอง ควรระบุ typeRoots ภายใน tsconfig.json ของคุณ ตัวอย่างเช่น:
{
[...]
"compilerOptions": {
[...]
"typeRoots" : ["../path/to/typings", "./node_modules/@types"],
[...]
}
[...]
}
