搭建Flutter本地私有库
本文介绍了搭建Flutter私有Pub仓库的完整流程:1)下载MongoDB 5.x版本并配置环境变量;2)启动MongoDB服务;3)安装unpub并修改源码去除Google校验;4)启动unpub服务并访问本地4000端口;5)推送本地插件到私有库;6)在项目中引用私有库插件。整个过程包含了必要的路径配置、服务启动和代码修改说明,为搭建Flutter私有组件库提供了详细指导。
·
一、下载mongodb
需要下载6.x.x版本以下,否则会报错
历史版本下载链接:https://www.mongodb.com/try/download/community-edition/releases/archive
假设下载后放到:/usr/local/
二、配置环境变量
在~/.bash_profile和~/.zshrc中添加如下
# mongodb
export PATH="/usr/local/mongodb-macos-x86_64-5.0.31/bin:$PATH"
操作完记得sorce下
source ~/.bash_profile && source ~/.zshrc
三、启动mongodb服务
1. 创建目录
/usr/local/var/mongodb/、/usr/local/var/log/mongodb/
2. 开启服务
- 命令行输入
mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log - 新开命令行输入:
mongo
四、安装unpub
1. 下载unpub
flutter pub global activate unpub
2. 去掉unpub的google校验
需修改的文件路径:~/.pub-cache/hosted/pub.dev/unpub-2.1.0/lib/src/app.dart
需要将调用_getUploaderEmail的地方去掉,一共三处。
- L241修改成如下
.post('/api/packages/versions/newUpload')
Future<shelf.Response> upload(shelf.Request req) async {
try {
// var uploader = await _getUploaderEmail(req);
var uploader = "";
- L366修改成如下
.post('/api/packages/<name>/uploaders')
Future<shelf.Response> addUploader(shelf.Request req, String name) async {
var body = await req.readAsString();
var email = Uri.splitQueryString(body)['email']!; // TODO: null
// var operatorEmail = await _getUploaderEmail(req);
// var package = await metaStore.queryPackage(name);
// if (package?.uploaders?.contains(operatorEmail) == false) {
// return _badRequest('no permission', status: HttpStatus.forbidden);
// }
// if (package?.uploaders?.contains(email) == true) {
// return _badRequest('email already exists');
// }
await metaStore.addUploader(name, email);
return _successMessage('uploader added');
}
- L384修改成如下
.delete('/api/packages/<name>/uploaders/<email>')
Future<shelf.Response> removeUploader(
shelf.Request req, String name, String email) async {
email = Uri.decodeComponent(email);
// var operatorEmail = await _getUploaderEmail(req);
// var package = await metaStore.queryPackage(name);
// TODO: null
// if (package?.uploaders?.contains(operatorEmail) == false) {
return _badRequest('no permission', status: HttpStatus.forbidden);
// }
// if (package?.uploaders?.contains(email) == false) {
// return _badRequest('email not uploader');
// }
await metaStore.removeUploader(name, email);
return _successMessage('uploader removed');
}
3. 启动unpub
mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log
只要有这个输出,则代表成功
Serving at http://0.0.0.0:4000
4. 访问
地址:http:localhost:4000
最好用Chrome访问
五、推送本地插件到私有库
在pubspec.yaml中添加如下:
publish_to: http://localhost:4000
六、使用私有库插件
test_pub_plugin:
hosted:
name: test_pub_plugin
url: http://localhost:4000
version: ^0.0.1
更多推荐



所有评论(0)