我已经构建了一个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/**/*"]
}
发布于 2019-06-13 05:45:16
简短的回答
将declaration
添加到tsconfig.json
文件的compilerOptions
部分。
"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",
更多细节
the Publishing docs的开篇部分提供了更多关于答案的详细信息。
还有一些额外的compiler options here。这里有三个在你的情况下可能有用的方法:
生成声明的
declarationDir
输出目录files.declarationMap
为每个相应的file.emitDeclarationOnly
生成一个源地图,.d.ts
只发出.d.ts
声明文件。当您已经在使用babel
将文件从TypeScript转换为JavaScript,并且只想使用TypeScript生成声明文件和执行类型检查时,列表中的最后一个选项很方便。
https://stackoverflow.com/questions/56568958
复制相似问题