uni-app HBuilderX项目转为cli项目及踩坑记录

uni-app有两种创建创建项目的方式,通过HBuilderX可视化界面进行创建和通过vue-cli命令行,两者的区别可以参考uni-app官网-可视化方式的区别

其中cli项目是可以直接运行在hx中的,相比hx项目,cli的好处还有可以自定义环境变量和自定义h5、app资源的打包输出、实现持续集成等

步骤1

新建vue-cli项目

vue create -p dcloudio/uni-preset-vue my-project

默认会安装最新的编译器版本,如果与离线打包的sdk版本不同,需要修改依赖为指定版本,如

npx @dcloudio/uvm 3.6.4.20220922

注意这里一定是完整的版本号

步骤2

迁移代码到cli项目

cli项目是传统的node项目结构,工程代码都在src目录下,将hx工程文件拷贝至src目录,除unpackage、nativeplugins和工程化的文件eslint、pretty、node_modules等

步骤3

将项目中的依赖的包汇总到cli项目的package.json中,重新安装包依赖

步骤4

cli项目支持env,同vue项目一致Vue2Vue3,可按需求添加

注意事项

如果项目之前在hx中打开过,转换成cli项目后需要重新导入,或者重启hx,好让hx正确识别manifest.json,否则无法使用hx运行。

转为cli项目后scss的编译会有区别,深度选择器不支持/deep/,需要使用::v-deep,vue中,>>>、/deep/、::v-deep都是>>>的别名

打包后的产物默认在根目录下的dist文件夹,自定义基座路径为dist/debug

踩坑记录

1.Syntax Error: Error: Node Sass version 5.0.0 is incompatible with ^4.0.0

node-sass的版本要与node版本对应起来,见node-sass - npm

本地node是v14,改为node-sass@~4.14.0

2. Node Sass could not find a binding for your current enviroment

该问题出现在hx中运行h5,hx是自带了node的环境的,mac系统上路径为/Applications/HBuilderX.app/Contents/HBuilderX/plugins/node,而且这个是v12版本(查看自己hx对应的node版本,到这个目录下执行./node -v),再降低node-sass版本到~4.12.0

3.Internal Babel error: path is not in loop. Please report this as a bug

汇总依赖包时候babel的问题,有些已经集成到cli的项目中,建议以cli项目的为准,如果有缺少的再做补充

4.ios真机运行问题

 转为cli项目后debug包的路径发生变化,虽然选了自定义基座,实际并读取不到,重新生成自定义基座或是复制unpackage/debug到dist/debug

猜你喜欢

转载自blog.csdn.net/cscj2010/article/details/128471399