我编写了一组Typescript类,我将其作为NPM模块发布到我们的内部包服务器。我的其他项目能够使用NPM检索此依赖项。
我想以这样的方式发布类,我可以通过引用包本身来导入它们,类似于我使用的其他一些包类似Angular。
import { SomeClass } from 'mylibrary'
这是我目前的设置:
我写了一个./mylibrary.d.ts
文件:
export * from './dist/foldera/folderb'
//etc
./package.json
:
"name": "mylibrary",
"main": "mylibrary.d.ts",
"files": [
"mylibrary.d.ts",
"dist/"
],
"types": "mylibrary.d.ts",
//ommitted other settings
src/tsconfig.json
:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "../dist/",
"baseUrl": "src",
"sourceMap": true,
"declaration": true,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2016",
"dom"
]
}
}
当我尝试使用所需的语法导入包时,MS VS Code表示一切正常,但运行我的项目会产生一个相当神秘的错误消息:
Module build failed: Error: Debug Failure. False expression: Output generation failed
我对模块,命名空间和包的术语感到迷茫。非常感谢任何帮助。
答案 0 :(得分:4)
如果将index.ts文件放在包的根文件夹中(与package.json相同),那么它会重新导出src /文件夹中的所有功能,而不是在不构建的情况下将其发布js,请记住它只会用在TS项目中。
这种方法的消极方面是,您的包将每次都与您的项目一起编译,并且TS环境中的可能更改可能导致无法编译整个项目(我在编译我的一个软件包时遇到问题&lt ; 2.4.2,例如)。
lineColor