无法使用webpack或TSC编译和发布我的Typescript库

时间:2018-04-07 16:18:57

标签: javascript node.js typescript npm webpack

我创建了一个库,可以帮助使用rx流跟踪对象状态 我试图将它发布到npm社区。

你可以查看In my github repo

我想将我的库编译为单个Javascript文件,并创建一个声明文件" .d.ts"对于Typescript用户。 据我所知,在运行$ npm publish时,我会释放整个存储库。我想要的是使用库源和声明文件释放dist文件夹,这样最终用户就可以通过他们的代码调试我的库,所以我也需要源地图。

所以首先我需要将我的src目录编译为单个javascript文件,我有两种方法可以使用tsc或webpack。

到目前为止我尝试了什么,你应该知道:

我使用了tsconfig.json中配置的模块别名。 我将库的业务逻辑分离为多个文件。 我想使用" @ lib"导入内部库的模块。前缀。

所以在我的tsconfig.json中我添加了:

 "paths": {
      "@lib/*": [
        "src/*"
      ]
    },

仅此一点就会造成一些问题。

首先运行命令:

$ tsc src/index.ts 

根本不起作用,它向我显示错误:

src/index.ts(3,15): error TS2307: Cannot find module '@lib/state-traceable'.
src/index.ts(4,15): error TS2307: Cannot find module '@lib/traceable-decorator'. src/index.ts(5,15): error TS2307: Cannot find module '@lib/effect-decorator'.
src/index.ts(6,15): error TS2307: Cannot find module '@lib/meta'.

然后运行命令:

$ tsc

确实有效,但它编译每个源文件并为每个源文件创建声明文件。 此外,它保留路径别名" @lib / *"而不是将它编译成与相对路径兼容的javscript" ../"," ./"等...

使用网络包:

我成功将我的所有库源捆绑到一个文件中并摆脱了" @ lib"但是我无法创建单个声明文件。 我正在使用" awesome-typescript-loader" webpack的插件。

我创建了一个问题,认为它是一个错误但我收到了他们的任何回复: https://github.com/s-panferov/awesome-typescript-loader/issues/559

还试图从Gitter聊天,Typescript社区," awesome-typescript-loader"获得一些帮助。图书馆没有专门的聊天,但无法找到任何有用的信息。我见过的大多数例子中,Typescript库出版商过去常常在他们的源目录中创建一个文件:" index.ts"它使生活更轻松,因为你可以使用tsc并将该单个文件编译为javascript文件。

我希望我能在这里找到救恩。

有关环境本身的一些一般信息:

操作系统:Windows 10 Pro

节点版本:9.5.0

npm版本:5.6.0

webpack版本:4.2.0

1 个答案:

答案 0 :(得分:0)

请使用下面的路径配置

"paths": {
  "@lib/state-traceable": ["src/state-traceable.ts"],
  "@lib/meta": ["src/meta.ts"],
  "@lib/effect-decorator": ["src/effect-decorator.ts"],
  "@lib/traceable-decorator": ["src/traceable-decorator.ts"],
  "@lib/contracts/*": ["src/contracts/*"],
  "@lib/utils/*": ["src/utils/*"],
  "@lib/rx-operators/*": ["src/rx-operators/*"]
},