繁体   English   中英

自定义Typescript NPM软件包不会生成类型

[英]Custom Typescript NPM Package Won't Generate Types

我已经构建了一个npm包,它是Typescript,由于某种原因,它不能生成类型定义文件,当我尝试运行它时,我得到了经典的Could not find a declaration file for module...

我已经尝试添加typestypings ,没有运气的package.json。

package.json

{
  "name": "@org/mypackage",
  "version": "0.0.7",
  "description": "",
  "main": "index.js",
  "transform": {
    "^.+\\.(ts|tsx)?$": "<rootDir>/node_modules/babel-jest"
  },
  "scripts": {
    "build": "tsc"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/sample/sample.git"
  },
  "author": "Ken M",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/sample/sample/issues"
  },
  "homepage": "https://github.com/sample/sample#readme",
  "dependencies": {
    "@types/jest": "^24.0.13",
    "@types/node": "12.0.2",
    "@types/react": "16.8.17",
    "@types/react-dom": "16.8.4",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "react-scripts": "3.0.1",
    "tachyons": "^4.11.1"
  },
  "devDependencies": {
    "@babel/core": "^7.4.4",
    "@babel/preset-react": "^7.0.0",
    "@typescript-eslint/eslint-plugin": "^1.9.0",
    "@typescript-eslint/parser": "^1.9.0",
    "awesome-typescript-loader": "^5.2.1",
    "babel-jest": "^24.8.0",
    "babel-preset-react": "^6.24.1",
    "eslint": "^5.16.0",
    "eslint-config-prettier": "^4.3.0",
    "eslint-plugin-prettier": "^3.1.0",
    "prettier": "^1.17.1",
    "typescript": "^3.4.5"
  }
}

tsconfig.json

请参阅下面的tsconfig.json。 添加declaration: true不会导致生成文件。 就其价值而言, main: index.js也未生成。

{
  "compilerOptions": {
    "target": "es5",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": false,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "outDir": "./dist",
    "jsx": "react",
    "declaration": true
  },
  "include": ["src/**/*"]
}

简短答案

加入declarationcompilerOptions你的部分tsconfig.json文件。

"declaration": true, /* Generates corresponding .d.ts file. */

或者,将build脚本更改为包括--declaration

"build": "tsc --declaration"

这两个选项都将导致npm run build生成声明文件。

然后,通过添加指向主声明文件的types属性来更新package.json文件。 在下面的示例中,我假设您的主声明文件位于./index.d.ts

"main": "index.js",
"types": "index.d.ts",

额外细节

Publishing文档的开头部分提供有关答案的更多详细信息。

这里还有其他编译器选项 以下三种情况可能对您有用:

  • declarationDir生成的声明文件的输出目录。
  • declarationMap生成用于每个对应一个sourcemap .d.ts文件。
  • emitDeclarationOnly仅发出.d.ts声明文件。

如果您已经在使用babel将文件从TypeScript转换为JavaScript,并且只想使用TypeScript生成声明文件并执行类型检查,则列表中的最后一个选项非常方便。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM