使用rollup打包自己的vue3
那直接开始打包流程吧:
1 我们先安装rollup 运行 yarn add rollup --dev
2 我们先给src加上一个打包的入口,在src下新增一个index.ts
3 然后创建rollup.config.js,主要配置入口,出口,还有plugins插件(使用到ts,所以我们要下载一下@rollup/plugin-typescript这个插件,运行yarn add @rollup/plugin-typescript --dev)
4 在package.json中配置打包运行的命令 "build": "rollup -c rollup.config.js"
5 当我们运行打包命令的时候,他爆了没有tslib这个模块的错误,通过 yarn add tslib --dev安装我们的tslib
6 然后再次运行,其实是可以打包成了,但是它爆了一个警告,我们可以通过配置tsconfig.json来消除警告,当我们配置完再次运行的时候警告就消除了
7 然后可以看到我们打包后的文件都是空的,是由于我们刚刚创建的出口文件中没有导出任何东西,所以也就都是空的。回顾我们创建app的时候,我们使用到了createApp和h函数等。但是你发现我们的h函数其实还没有实现的,其实h函数就是一个创建节点的功能而已,我们创建一个h.ts然后在里面导入vnode的createVNode,如图:
8 接着我们就可以把他们给导出,因此我们在得先在runtime-core的index中把这两个函数导出,然后再去src下的index中使用 export * from './runtime-core' 把runtime-core中所有的都导出,如图:
8 这次yarn build之后就可以看到我们导出的函数都被打包进来了
9 这时候就终于可以在我们的helloworld例子中去使用这些函数了(string转化为element)
10 这样我们的项目就可以run起来了,然后打开控制台其实你是可以看到它报错了的,如图
至于为什么会报错,是因为我们执行patch的时候,只写了处理组件的操作,然后当组件拆箱完毕需要渲染element的时候,我们还是走了processComponent,所以就会说render不是一个函数,如图
可能出现报错处理:
当你yarn build打包的时候,出现说
RollupError: Node tried to load your configuration file as CommonJS even though it is likely an ES module. To resolve this, change the extension of your configuration to ".mjs", set "type": "module" in your package.json file or pass the "--bundleConfigAsCjs" flag.
Original error: Cannot use import statement outside a module
这时候你只需要,去package.json中添加type为module就可以了,如图
还有优化出现的问题(这个问题我自己也还没有解决,因此这个优化我还没做,有知道解决的大佬可以评论一下):
就是在rollup.config.js中output的file文件字段由package.json引入,如图
但是这个就会有一个报错:
import typescript from "@rollup/plugin-typescript"; ^^^^^^ SyntaxError: Cannot use import statement outside a module
我看了一下是由于我刚刚在处理上一个报错的时候去package.json中添加type为module的原因,但是我不添加上面那个type,也同样会报错,我添加了,他又不能使用import 导入语法,搞了很久最后还是暂时放弃了这个优化。