代码之家  ›  专栏  ›  技术社区  ›  gfmio

TypeScript NPM包的目标体系结构

  •  1
  • gfmio  · 技术社区  · 7 年前

    我正在使用TypeScript开发许多NPM包,我想知道支持不同目标体系结构的最佳方法。

    如果编译到ES3,您将获得最广泛的支持,但也有额外的兼容性样板(大小,部分无法解析)。如果以esnext为目标,基本上没有样板(干净的输出代码!),但支持非常有限。

    问题是TypeScript编译器无法传输JS代码或任何来自 node_modules 一般来说因此,如果您将一个库编译为ES6,而有人想在其浏览器应用程序中使用它(针对ES3或ES5),那么他们将无法仅使用该库。

    这里的最佳做法是什么?我应该如何配置 package.json tsconfig.json ?如果图书馆用户需要做些什么,这里的首选方式是什么?

    非常感谢!

    1 回复  |  直到 7 年前
        1
  •  0
  •   Pavel    7 年前

    我认为可以妥协。对我来说,在库中使用es6的主要原因是支持rollup的树抖动。为此,请参阅程序包。json有选项 module :

    "main": "dist/alina-core.js",
    "module": "dist/alina-core-es.js",
    

    当用户使用rollup时,无论如何都需要在树抖动后传输到ES5,所以,在 module 指定的ES6版本。但如果库用户使用旧的构建管道,他将得到 main 已传输ES5版本。