ค้นหาเว็บไซต์

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"],
    [...]
  }
  [...]
}

บทความที่เกี่ยวข้อง