无法使用esm和umd汇总版本以及Typescript插件和声明?

问题描述

我想使用汇总来构建我的库的两个版本,一个UMD版本和一个从不ESM版本

使用非官方插件rollup-plugin-typescript2时,我的配置看起来像这样:

import typescript from 'rollup-plugin-typescript2'
import pkg from '../package.json'
export default {
  input: 'src/index.ts',output: [
    {
      file: pkg.main,format: 'umd',name: pkg.name,sourcemap: true
    },{
      file: pkg.module,format: 'esm',],plugins: [
    typescript({
        tsconfig: "src/tsconfig.json",useTsconfigDeclarationDir: true
    }),}

在我的json包中,我有:

  (...)
  "scripts": {
    "build": "rollup -c ./scripts/dist.js",},"main": "dist/index.js","module": "dist/index.esm.js","files": [
    "dist"
  ],(...)

在我的tsconfig.json中,我有:

  (...)
  "compilerOptions": {
    "rootDir": "./src","outDir": "./dist","declaration": true,"declarationDir": "./dist/@types/chrisweb-utilities",(...)

结果是“在2.6s内创建了dist / index.js,dist / index.esm.js” ...一切都很好

在以下位置创建的文件:

/dist
|-@types
 |-index.d.ts
|-index.js
|-index.esm.js
|-index.esm.js.map
|-index.js.map

今天,我尝试改用官方插件@rollup/plugin-typescript(因为我在其他项目中使用了该插件,因为我只做一个ESM构建,并且工作正常,所以我想一直使用相同的插件)我所有的项目)

由于配置属性,我遇到了第一个错误,只有rollup-plugin-typescript2可以理解: “(!)插件打字稿:@ rollup / plugin-typescript TS5023:未知的编译器选项'useTsconfigDeclarationDir'。”

所以我将其删除,从而解决了该问题...

但是我遇到另一个错误:“ [!](插件打字稿)错误:@ rollup / plugin-typescript:指定了“ outDir”时必须使用“ dir”。”

因此我将dir添加到我的配置中,然后如下所示:

import typescript from '@rollup/plugin-typescript';
import pkg from '../package.json'
export default {
  input: 'src/index.ts',sourcemap: true,dir: "dist",plugins: [
    typescript({
        tsconfig: "tsconfig.json",}),}

不会,出现下一个错误:“ [!]错误:生成单个文件时,您必须为单个文件构建设置“ output.file”,或为“ output.dir”设置。”

实际上,我什至不想生成块,我只用一个文件就可以了,但是我删除了dir,回到了先前的错误。所以我想做的下一件事是保留“ dir”而不是删除“ file”

这行得通,或者至少我收到了一条成功消息:“在2.6s内创建了dist,dist”,但是现在的问题是,我没有一个版本,而是只有一个“ dist / index.js”, UMD的第一个版本被ESM的第二个版本覆盖。

我认为可以做的最后一次尝试是,在/ dist的子文件夹中输出UMD版本,在另一个文件夹中输出ESM版本,因此我将配置更改为:

  (...)
  output: [
    {
      format: 'umd',dir: "dist/umd",{
      format: 'esm',dir: "dist/esm",(...)

这也失败了:(这次出现此错误:“ [!](插件打字稿)错误:@ rollup / plugin-typescript:'outDir'必须位于'dir'内。”所以我的outDir是“ ./ dist”,它不在dir中:“ dist / umd”了,我在tsconfig中只有一个outDir,所以它不能出现在每个汇总output.dir中,还是我在这里错过了什么?

哦,我实际上还尝试了其他操作,请记住先前的错误,汇总错误告诉我“指定了'outDir'时必须使用'dir'”,所以我从tsconfig.json中删除了outDir,然后看到另一个汇总错误(在这一点上,我认为我得到了所有可能的汇总错误;)),如下:“ [!](插件打字稿)错误:@ rollup / plugin-typescript:当指定'declarationDir'时,必须使用'dir'。

所以我还注释了tsconfig中的“ declarationDir” ...没有更多错误,但这并不是真正的解决方案,因为现在我没有生成任何打字稿类型定义文件。

我来回尝试了数小时的所有组合,但到目前为止还没有运气...

所以我很困惑,想知道是否有人可以帮助我?也许您有这个或类似的问题?我会丢失某些东西,或者是一个错误,在这种情况下,我会在几天内打开一张票。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...