关于vue打包组件库,从而在另一个项目中引用

217 阅读1分钟

哎呀,经过了两天的耗时,终于迎接来了接下来的结果:

image.png

好,现在来讲讲,打包步骤以及遇到的坑。

components下创建文件index.js:

image.png

// 导入组件,组件必须声明 name
import PlTable from './PlTable.vue'

// 为组件提供 install 安装方法,供按需引入
PlTable.install = function (Vue) {
  Vue.component(PlTable.name, PlTable)
}

// 默认导出组件
export default PlTable

如上,需要注意的是,一定要生命组件的name!!!

接着,package.json中添加如下指令:
name后的名字可自定义

 "build:lib": "vue-cli-service build --mode prod --target lib --name PlTable --dest lib src/components/index.js"

接着

yarn build:lib

然后你会遇到如下的报错:

 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

原因:node内存泄漏耗尽

修改办法:
全局安装 increase-memory-limit

yarn global add increase-memory-limit

成功后再次

yarn build:lib

发现又有了一个崭新的报错:

image.png

const requiredVersion = require('../package.json').engines.node --max-old-space-size=10240

SyntaxError: Unexpected identifier

so...继续尝试搜索,最后得到的解决方案是:
打开这个文件,删掉 --max-old-space-size=10240

然后再次

yarn build:lib

进入了漫长的等待...

大概耗时1h30m...

最终皆大欢喜:

image.png

然后我们得到了如下的文件:

image.png

将lib复制到新项目的public文件夹下,在main.js只引入:

import PlTable from "../../public/lib/PlTable.common.js";

......

Vue.use(PlTable)

然后就可以在父项目中随意使用了,注意这里组件名字对于子项目中抛出的组件名

-- 好了朋友们,我失败了,原因是引入的时候也内存溢出了。
组件中引入的时候也报错了,说是没找到声明...
目前正在尝试第二种方案,敬请期待...