Pub Global 创建命令行应用程序

文章目录

前言

如果你接触过npm/yarn 应该知道,有一些包可以全局使用,就是安装后可以直接用,比如vue-cli这样的应用,应该是用node开发的

在dart中也可以实现类似的功能, 使用就可以了,在连接中有完整的说明 也有这样的应用程序可以直接使用

我在这里简单的实战一下,实现一个简单的cli应用程序

这个程序没什么多余的功能,就简单的实现输入敲击unix获取时间戳

建立工程前的准备

将dart,pub加入PATH环境变量

需要在环境变量中添加几个东西,添加环境变量的方式自己搜索一下

一个是dart/bin的目录,你需要在命令行中让dart命令可用

1➜  ~ dart --version
2Dart VM version: 2.1.0 (Tue Nov 13 18:22:02 2018 +0100) on "macos_x64"

相对应的dart/bin目录下还会有其他的一些工具,包含了pub,这个工具也是会用到的

1➜  bin pub --version
2Pub 2.1.0

安装dart工程脚手架

$ pub global activate stagehand

将pub-cache/bin目录加入PATH环境变量

这个目录通常是~/.pub-cache/bin目录

验证stagehand可用

 1➜  bin stagehand
 2Stagehand will generate the given application type into the current directory.
 3
 4usage: stagehand <generator-name>
 5    --[no-]analytics    Opt out of anonymous usage and crash reporting.
 6-h, --help              Help!
 7    --version           Display the version for stagehand.
 8    --author            The author name to use for file headers.
 9                        (defaults to "<your name>")
10
11Available generators:
12  console-full   - A command-line application sample.
13  package-simple - A starting point for Dart libraries or applications.
14  server-shelf   - A web server built using the shelf package.
15  web-angular    - A web app with material design components.
16  web-simple     - A web app that uses only core Dart libraries.
17  web-stagexl    - A starting point for 2D animation and games.

建立工程

这一步默认你所有的环境变量都配置完毕,dart pub stagehand 都可用

1mkdir -p /tmp/dart/unix
2cd /tmp/dart/unix
3stagehand console-full
4pub get
5code .

我这里使用vscode打开

文件夹结构是这样的

20190225140500.png

修改两个unix文件

bin/unix.dart

1import 'package:unix/unix.dart' as unix;
2
3main(List<String> arguments) {
4  print(unix.getUnixTimeString());
5}

lib/unix.dart

1String getUnixTimeString() {
2  return DateTime.now().millisecondsSinceEpoch.toString();
3}

执行

1dart bin/unix.dart
1➜  unix dart bin/unix.dart
21551074662254

这样一个简单的应用程序就开发完了

本地安装

参考

1pub global activate --source path /tmp/dart/unix
1➜  unix pub global activate --source path /tmp/dart/unix
2Resolving dependencies...
3Got dependencies!
4Activated unix 0.0.0 at path "/private/tmp/dart/unix".

运行脚本

1➜  .pub-cache pub global run unix
21551076677872

这样就可以运行名为unix的脚本

生成应用程序

修改pubspec.yaml 在结尾处添加如下代码

1executables:
2  unix:

然后在命令行输入

1➜  unix pub global activate --source path /tmp/dart/unix
2Resolving dependencies...
3Got dependencies!
4Package unix is currently active at path "/private/tmp/dart/unix".
5Installed executable unix.
6Activated unix 0.0.0 at path "/private/tmp/dart/unix".

出现 Installed executable unix. 字样,说明可执行文件ok了

再次输入unix

1➜  unix
21551077074760

这样unix这个程序就可以直接运行了

上传应用包

开发完了这个简单的应用包,我们既可以上传到pub了 我们直接使用命令上传应用包,这一步需要保证终端可以科学上网

1pub publish --server https://pub.dartlang.org

使用

1➜ pub global activate unix
2Package unix is currently active at path "/private/tmp/dart/unix".
3Resolving dependencies... (3.5s)
4+ unix 1.0.0
5Downloading unix 1.0.0...
6Precompiling executables...
7Precompiled unix:unix.
8Installed executable unix.
9Activated unix 1.0.0.

这样就代表我从官网获取到了unix这个应用程序

1➜  unix
21551078268562

可以用,说明成功了

后记

对于flutter开发者来说,这个方案可以创建一些自己的应用包,然后可以使用dart语言来做一些快捷的脚本,毕竟dart语言会比较熟悉