首页 > 解决方案 > 如何使用 Rollup.js 创建一个通用的 js 和命名的导出包?

问题描述

我想使用 Rollup.js 生成一个供 AWS Lambda 使用的文件。捆绑包必须:

  1. 做个普通人;
  2. 已命名出口;
  3. 解析节点包并将所有代码放在一个文件中。

我正在努力实现这一目标,但没有成功。我当前的配置没有将 Day.js 代码添加到最终包中。

我尝试创建了一个存储库

一些注意事项

汇总和包版本

"@rollup/plugin-commonjs": "^17.0.0",
"@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-node-resolve": "^11.0.0",
"@rollup/plugin-typescript": "^8.0.0",
"rollup": "^2.34.2",

最终捆绑

生成的包可以在这里看到。我不希望文件中有这些导入:

const tslib_1 = require("tslib");
const dayjs_1 = tslib_1.__importDefault(require("dayjs"));

相反,我希望所有必要的代码都来自文件tslibdayjs嵌入到文件中。

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs"
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src"]
}

标签: javascriptrollupjs

解决方案


事实是您将文件tsc编译tscommonjs导致问题。这个工作应该是rollup's 代替。

我建议您将编译器留给tscesnextesmrollup需要的),然后您可以将所有东西与cjs样式结合起来。

这是您可能需要更改的内容:

typescript({
  module: 'esnext' // change `commonjs` -> `esnext`
}),

推荐阅读