我正在尝试开发一个命令行包,所以我按照以下步骤操作:
dart create --template=package-simple package_name
然后使用以下命令全局激活包:
dart pub global activate --source path $(pwd)
请注意,我在文档中没有找到有关
--source path actual_path
的任何内容,但每当我仅将命令与 --source actual_path
一起使用时,我都会得到以下信息:
"/Users/user/Desktop/Workspace/package_name" is not an allowed value for option "source".
因此,在成功激活该包后,我尝试使用以下命令运行它:
package_name
但是我得到了这个:
zsh: command not found: package_name
发现这里的文档已经过时了,搜索本地目录后我发现实际目录是
global_packages
而不是bin
,所以我改变了它。
现在,当我尝试
package_name
时,我得到:
zsh: permission denied: package_name
经过调查,我发现
package_name
是global_packages
目录中的一个目录,并且它只包含pubspec.lock
,所以我在文件和目录上尝试了chmod a+x
,但无济于事。
进一步调查
global_packages
中包含另一个包裹intl_utils
,我发现:
.packages incremental
.dart_tool bin pubspec.lock
但是在终端上运行
intl_utils
也会给我带来同样的错误:
zsh: permission denied: intl_utils
我没有手动安装该包,但 VS Code 扩展 Flutter Intl 却安装了,而且似乎工作得很好。
现在我有两个问题:
bin/my_package.dart
但它没有到达那里,我做错了什么吗?我正在通过 flutter 运行 dart: Flutter(Channel master,2.13.0-0.0.pre.90,macOS 12.3 21E230 darwin-x64,区域设置 en-US)
dart --version
Dart SDK 版本:“macos_x64”上的 2.17.0-202.0.dev (dev)(2022 年 3 月 10 日星期四 20:55:41 -0800)
尝试过
dart pub global run package_name
并且它有效,但似乎它正在再次构建包,但我仍然需要以正确的方式使用它而无需长线。
创建我尝试过的应用程序
dart create -t console-full package_name
但结果仍然相同。
所以在搞乱并改变分支(很多)之后发现问题出在
pubspec.yaml
应该存在的地方:
executables:
package_name: # you can add a custom path here if you want though
我猜文档关于“bin”目录是正确的,但它让我想知道
global_packages
和 intl_utils
我只是想补充一点,我遇到了类似的问题,但已经在 yaml 中声明了
package_name
。原来我必须删除.dart_tool/pub/bin
文件夹。
sudo rm -r ./.dart_tool/pub/bin
我的猜测是我正在运行之前缓存的构建,这导致了问题。