[英]Custom Typescript NPM Package Won't Generate Types
我已经构建了一个npm包,它是Typescript,由于某种原因,它不能生成类型定义文件,当我尝试运行它时,我得到了经典的Could not find a declaration file for module...
我已经尝试添加types
和typings
,没有运气的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/**/*"]
}
加入declaration
的compilerOptions
你的部分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.