如何使用 "dart pub global run" 命令 运行 脚本?
How to run a script using "dart pub global run" command?
我的包目录foo
:
pubspec.yaml 文件有:
name: foo
executables:
foo: bar
软件包 foo
使用 dart pub global activate ...
激活,如果我将目录添加到 PATH
环境,则以下命令有效:
foo bar
但如果我删除它,并尝试 运行 dart pub global run
命令,它不起作用。
me@mac foo % dart pub global run foo bar
Could not find bin/foo.dart.
那么,我如何 运行 一个脚本,而不按照建议 here.
使用 dart pub global run
将它添加到 PATH
You can directly run a script from an activated package from the command line. If you are unable to run the script directly, you can also use dart pub global run.
注意:dart pub global run foo:bar
有效,但这与 pubspec.yaml
文件中定义的可执行文件无关。
指定:
executables:
foo: bar
表示当包被激活时,命令foo
将映射到文件bar.dart
。调用时无需指定bar
。
例如,我有这个包裹:
name: dictionary
...
executables:
scrabble:
它定义了一个调用 scrabble.dart
的可执行文件 scrabble
。我这样激活它:
dart pub global activate --source path dictionary
此报告:
...
Installed executable scrabble.
Activated dictionary 1.0.0 at path "[...]\Dart\dictionary".
我可以调用调用 scrabble.dart
的 scrabble
命令。我也可以这样调用它:
dart pub global run dictionary:scrabble
如果我的 pubspec
有:
executables:
dictionary: scrabble
然后命令 dictionary
调用文件 scrabble.dart
.
(不要忘记在 PATH
上包含 pub
缓存。对 Windows 的我来说,这是 C:\Users\pohara\AppData\Roaming\Pub\Cache\bin
。
加法: 继续 dictionary: scrabble
示例,当我激活字典时,我得到:
...
Installed executable dictionary.
Activated dictionary 1.0.0 at path "[...]\Dart\dictionary".
我在 Windows 上的 pub
缓存有这个文件到 运行 dictionary
命令:
> cat C:\Users\pohara\AppData\Roaming\Pub\Cache\bin\dictionary.bat
@echo off
rem This file was created by pub v2.12.2.
rem Package: dictionary
rem Version: 1.0.0
rem Executable: dictionary
rem Script: scrabble
pub global run dictionary:scrabble %*
所以命令 dictionary
显式地 运行 是 dictionary
包中的 scrabble
文件。
这两个命令都失败了:
> dart pub global run dictionary scrabble
Could not find bin\dictionary.dart.
> dart pub global run dictionary
Could not find bin\dictionary.dart.
当然这个成功了:
> dart pub global run dictionary:scrabble
我的包目录foo
:
pubspec.yaml 文件有:
name: foo
executables:
foo: bar
软件包 foo
使用 dart pub global activate ...
激活,如果我将目录添加到 PATH
环境,则以下命令有效:
foo bar
但如果我删除它,并尝试 运行 dart pub global run
命令,它不起作用。
me@mac foo % dart pub global run foo bar
Could not find bin/foo.dart.
那么,我如何 运行 一个脚本,而不按照建议 here.
使用dart pub global run
将它添加到 PATH
You can directly run a script from an activated package from the command line. If you are unable to run the script directly, you can also use dart pub global run.
注意:dart pub global run foo:bar
有效,但这与 pubspec.yaml
文件中定义的可执行文件无关。
指定:
executables:
foo: bar
表示当包被激活时,命令foo
将映射到文件bar.dart
。调用时无需指定bar
。
例如,我有这个包裹:
name: dictionary
...
executables:
scrabble:
它定义了一个调用 scrabble.dart
的可执行文件 scrabble
。我这样激活它:
dart pub global activate --source path dictionary
此报告:
...
Installed executable scrabble.
Activated dictionary 1.0.0 at path "[...]\Dart\dictionary".
我可以调用调用 scrabble.dart
的 scrabble
命令。我也可以这样调用它:
dart pub global run dictionary:scrabble
如果我的 pubspec
有:
executables:
dictionary: scrabble
然后命令 dictionary
调用文件 scrabble.dart
.
(不要忘记在 PATH
上包含 pub
缓存。对 Windows 的我来说,这是 C:\Users\pohara\AppData\Roaming\Pub\Cache\bin
。
加法: 继续 dictionary: scrabble
示例,当我激活字典时,我得到:
...
Installed executable dictionary.
Activated dictionary 1.0.0 at path "[...]\Dart\dictionary".
我在 Windows 上的 pub
缓存有这个文件到 运行 dictionary
命令:
> cat C:\Users\pohara\AppData\Roaming\Pub\Cache\bin\dictionary.bat
@echo off
rem This file was created by pub v2.12.2.
rem Package: dictionary
rem Version: 1.0.0
rem Executable: dictionary
rem Script: scrabble
pub global run dictionary:scrabble %*
所以命令 dictionary
显式地 运行 是 dictionary
包中的 scrabble
文件。
这两个命令都失败了:
> dart pub global run dictionary scrabble
Could not find bin\dictionary.dart.
> dart pub global run dictionary
Could not find bin\dictionary.dart.
当然这个成功了:
> dart pub global run dictionary:scrabble