美文网首页
使用dart开发命令行工具

使用dart开发命令行工具

作者: soojade | 来源:发表于2016-12-06 19:38 被阅读732次

目录结构

    hello/
        bin/
            main.dart
        pubspec.paml

main.dart函数:

void main(List<String> arguments){
    print("hello world");
}

Pub 命令

  • 使用pub global命令将文件包注册到全局
pub global activate --source path <dart包路径>

运行以上命令显示内容如下:

Activated boilerplate 0.0.1 at path "<path to Dart project>".
  • 使用pub global run命令运行注册的脚本文件
pub global run <package>:<script>
  • 使用pub global list命令查看全局包列表
pub global list
  • 使用pub global deactivate命令释放包
pub global deactivate <package>

使用命令行输入参数

  • 获取args依赖
    使命令行参数可用,需要引入args包:
// pubspec.yaml
dependencies:
    args: '^0.13.2' //冒号后面一定要有空格,否则报错

main.dart中导入:

import 'package:args/args.dart'; // 使用其中两个类ArgParser和ArgResults

ArgResults argResults; // 声明ArgResults类型的全局变量,保存解析的参数结果
                      // 同时,argResults也是ArgResults的实例

void main(List<String> arguments) {
    // 创建ArgParser的实例,同时指定需要输入的参数
  final ArgParser argParser = new ArgParser()
    ..addOption('name', abbr: 'n', defaultsTo: 'World'); // abbr表示缩写或别名,defaultsTo表示默认值

  argResults = argParser.parse(arguments);

  final String name = argResults['name'];

  print("Hello, $name!");
}

运行程序:

pub global run hello:main -n soojade

在命令行中显示help

final ArgParser argParser = new ArgParser()
    ..addOption('name', abbr: 'n', defaultsTo: 'World',
      help: "Who would you like to greet?")
    ..addFlag('help', abbr: 'h', negatable: false,
      help: "Displays this help information.");

“help”参数通过addFlag()定义;flag 是一个特殊的命令行参数,它是一个Boolean值而不是String。如果flag在命令行中出现,它的值是true

如下操作“help”标签:

 if (argResults['help']) {
    print("""
** HELP **
${argParser.usage}
    """);
  }
  // usage显示所有help内容

再次运行程序:

pub global run boilerplate:main --help

结果如下:

** HELP **  
-n, --name    Who would you like to greet?
              (defaults to "World")

-h, --help    Displays this help information.

Hello, World!

通过命令行创建文件及内容

使用命令行创建一个html模板:

// main.dart

import 'dart:io'; // io作为dart标准库,用来操作文件,不需要在pubspec.yaml中声明依赖
import 'package:args/args.dart';

ArgResults argResults;

void main(List<String> arguments) {
  final ArgParser argParser = new ArgParser()
    ..addOption('title', abbr: 't',
      help: "The title will be inserted into the <title> tag.")
    ..addOption('filename', abbr: 'f', defaultsTo: 'index.html',
      help: "Optional. Output file name. (Default: index.html)");

  argResults = argParser.parse(arguments);

  final String title = argResults['title'];

  if (title == null) {
    handleError("Missing required argument: title");
  }
  else {
    final String filename = argResults['filename'];
    final String output = """<!DOCTYPE html>
        <html>
        <head>
          <meta charset="UTF-8">
          <title>$title</title>
        </head>
        <body>
        
        </body>
        </html>
    """;

    new File(filename).writeAsStringSync(output);// 为了简单实用了同步版本
    stdout.writeln("File saved: $filename");
  }
}

// 异步输出错误信息到标准错误流
void handleError(String msg) {
  stderr.writeln(msg);
  exitCode = 2; //当程序退出,虚拟机检查exitCode,0 表示Success,1 表示Warnings,2 表示Errors
}

可执行程序

任何bin目录下的dart脚本可注册为可执行程序,分为两步:

  • pubspec.yaml中添加executables部分
executables:
  包名: main # 要运行的脚本名称,(注意冒号后面的空格)如果有多个脚本,可以添加多个
  • 通过pub global activate 全局注册
pub global activate --source path <包路径>

直接以包名为命令在命令行中输入即可执行。

相关文章

  • Flutter安装--Mac

    前言 Dart SDK包含开发Dart Web,命令行和服务器应用程序所需的库和命令行工具。如果仅开发移动应用程序...

  • 使用dart开发命令行工具

    目录结构 main.dart函数: Pub 命令 使用pub global命令将文件包注册到全局 运行以上命令显示...

  • Dart基础补充(二)

    Dart类与对象 使用命令行工具创建新的工程flutter_oop,创建完成用Android Studio工具打开...

  • Flutter 功能最全的JsonToDart工具

    Windows桌面上功能最全面的Json转换Dart的工具Json To Dart,使用UWP和WPF开发。 为什...

  • wepy框架入门

    安装 wepy 命令行工具。 在开发目录生成开发DEMO。 开发实时编译。 项目目录结构 使用微信开发者工具新建项...

  • Flutter开发--Dart基础

    Dart开发环境安装 概述 Dart可以用来开发移动应用,web应用、开发命令行应用和服务端应用,主要有以下ide...

  • Dart语法笔记

    Dart SDK能开发web,命令行,服务器,移动app,如果只是开发移动应用不需要安装 Dart SDK,只需要...

  • Flutter学习笔记

    Dart基础语法 一、选择开发工具 首先需要安装Dart SDK(https://www.dart-china.o...

  • wepy项目的学习

    使用Promise 开发实时编译 安装依赖 安装(更新) wepy 命令行工具。 生成开发示例 wepy开发文档地...

  • Dart入门

    01.Dart开发环境安装 概述 Dart可以用来开发移动应用、Web应用、开发命令行应用和服务端应用,主要有一下...

网友评论

      本文标题:使用dart开发命令行工具

      本文链接:https://www.haomeiwen.com/subject/uwhqmttx.html