【问题标题】:Why bundle NPM packages if they will be bundled by consuming project?如果 NPM 包将被消费项目捆绑,为什么还要捆绑它们?
【发布时间】:2022-07-04 20:18:58
【问题描述】:

我正在构建一个要在 NPM 上发布的 TypeScript 包。我将在未来可能使用 Vite 的 Web 开发项目中使用这个包。当我用这个模块构建未来的网站时,它是否已经捆绑有关系吗?不管 NPM 上的代码是否被捆绑(比如在 lib.esm.js 文件中),Rollup(Vite 用来构建网站)不会捆绑代码吗?为什么不直接使用 TSC(TypeScript Compiler)将 TS 编译为 JS 用于 NPM,然后让消费项目(无论是 Rollup 还是 Webpack 或 Parcel)捆绑它以针对浏览器进行优化?

其他 NPM 作者知道我错过了什么?

注意,我将这个包编写为严格的 ESM 模块(类型:模块),所以我不担心 CJS。

【问题讨论】:

  • 苏格拉底:如果消费者使用 TypeScript,为什么还要编译成 JS? (例如 Deno)
  • @jsejcksn,很好。对于我的用例,我将此代码捆绑到浏览器中,因此需要 JS。

标签: javascript typescript npm rollup vite


【解决方案1】:

你是对的。你不需要捆绑它。只需将每个文件从源目录单独转译到输出目录,然后将 package.json 的 main 指向转译的入口点。直接使用 Babel。

react-markdown 就是一个例子。

【讨论】:

    猜你喜欢
    • 2012-06-29
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 2015-03-12
    • 2015-01-12
    • 1970-01-01
    相关资源
    最近更新 更多