问题描述
我想使用汇总来构建我的库的两个版本,一个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 (将#修改为@)