发布package到pub.dev

2022-03-28 09:01:20 浏览数 (1)

最近写了一个SKU筛选器,将SKU的各种逻辑都封装进去了,而且算法上面对于时间和空间复杂度都进行了很长时间的优化,可以说这一款SKU筛选器是我近期最完美的一个作品了。

独乐乐不如众乐乐,所以我计划将其传到pub.dev,以分享给各位伙伴。接下来就以此为例,详细介绍一下如何从头到尾将其打包成package并上传到pub.dev。

创建项目

检查插件名字的唯一性

首先,得给你的插件起一个名字,我这边起的名字是lavie_sku_data_filter。

然后,到https://pub.dev上去搜索一下该名字,看看是否已经被其他人使用了,我的搜索结果如下:

这说明该名称还没被其他人使用过,那么就可以进行接下来的步骤了。如果你的名字已经被其他人使用了,那么就需要换一个名字了。

新建项目

package分为两种,一种是纯Dart包,另外一种是和原生沟通的插件包。我这个SKU筛选器是一个纯Dart包,因此接下来就只介绍Dart包的创建。

首先,来到合适的目录,创建一个纯Dart Package,命令如下:

代码语言:javascript复制
flutter create --template=package lavie_sku_data_filter

执行结果如下:

然后就可以看到,在对应目录下多了一个lavie_sku_data_filter文件夹:

这个时候,项目中还没有example示例工程,所以我们需要再运行一个命令创建示例工程:

代码语言:javascript复制
cd lavie_sku_data_filter
flutter create example

创建成功后就可以看到,lavie_sku_data_filter文件夹下面多了一个example文件夹:

example是示例工程,当将插件发布到pub.dev之后,使用者会通过查看example来学习如何使用。

完善项目

现在,插件的空工程已经创建完毕,接下来我们将插件代码填充进来。

打开项目,在lib文件夹下面新建一个src文件夹,将自己的代码文件放进来:

需要注意的是,如果你自己的插件中需要引入其他的第三方插件,则在上图红框圈中的pubspec.yaml文件中引入,而且引入的第三方插件的版本号必须是向上兼容的,不可以写固定的版本号。

将自己的工具代码导入进来之后,需要在lib文件夹下的lavie_sku_data_filter.dart文件中export需要公开的类:

这里将默认的Calculator类也删掉了,所以需要在lavie_sku_data_filter_test.dart中将对应的测试代码也删掉:

我们写出来的插件是要给别人用的,首先你得告诉人家怎么去使用,所以说你还需要在示例工程中去编写示例代码。

在example文件夹下面的pubspec.yaml文件中添加如下代码:

代码语言:javascript复制
  lavie_sku_data_filter:
    path: ../

然后在实例工程文件中导入,然后就可以编写示例代码了:

代码语言:javascript复制
import 'package:lavie_sku_data_filter/lavie_sku_data_filter.dart';

发布的准备工作

首先来完善下pubspec.yaml中的信息:

  • name,插件的名称,在pub.dev中可以通过该名称进行搜索
  • description,插件的描述,在pub.dev中的插件列表中展示的描述就是该内容
  • version,插件的当前版本号,如果需要新增版本,那么就要更新这里的version
  • homepage,该项目的github地址

接下来完善CHANGELOG.md的内容:

CHANGELOG.md是MarkDown文档,这里面记载的是每一次版本更新的内容,该内容会展示在pub.dev的Changelog栏目下:

后面如果需要新增版本,那么这里也需要将新增的版本内容添加进来。

接下来就是修改中README.md的内容。可以看到,这里面也是一个MarkDown文档,它会完全展示在pub.dev中的Readme栏目下:

在这里面,你可以通过MD语法自定义展示样式和内容。

最后,就是修改LICENSE许可证文件。内容如下:

代码语言:javascript复制
lavie_sku_data_filter


Copyright <2022> <lavie>

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.I

注意,你需要将lavie_sku_data_filter、2022和lavie替换成你自己的插件名称、年份和姓名。 到现在为止,的配置就已经上线了。所有的话我们都是需要访问国外网站的,所以接下来要验证下能不能发布。

控制台输入:

代码语言:javascript复制
 curl www.google.com

如果输出很长的内容,表示成功。

接下来就进入插件工程文件夹目录,终端执行如下命令:

代码语言:javascript复制
flutter packages pub publish --dry-run

如果最后输出如下内容,则说明命令执行成功:

代码语言:javascript复制
Package has 0 warnings.
The server may enforce additional checks.

发布

接下来就开始发布,执行如下命令:

代码语言:javascript复制
flutter packages pub publish --server=https://pub.dartlang.org

之后控制台会出现如下:

输入y。

然后控制台就显示成功上传,此时就已经将我咱们自己的插件传到pub.dev了。

打开看一下:

完美~

0 人点赞