作为一名扑朔迷离的开发人员,必须一直为您的项目创建目录和文件确实很麻烦。根据您喜欢使用的体系结构,每个颤音项目通常都会具有类似的目录或文件。
在本教程中,我们将学习如何使用GO为您的新Flutter项目生成自定义目录和文件。 𧾻
什么是Golang? ð
golang是一种静态键入的编译编程语言,旨在简单,效率和易用性。它由Google工程师创建,并于2009年首次发布。Golang通常用于各种类型的应用程序,包括Web开发,系统编程,云服务,网络服务等。
我们将利用Golang的系统编程功能来创建所需的目录和文件。系统编程是软件开发的专业领域,专注于创建与基础硬件和操作系统紧密相互作用的程序。
设置Golang
如果您已经在系统上设置了SDK设置,则可以跳过此步骤。如果您是Golang的新手,则需要从其official website下载并安装SDK。 Golang SDK可用于MACOS,Linux和Windows。下载和安装SDK后,运行此命令以验证SDK是否已成功安装。
go version
这应该打印出您系统上当前安装的SDK版本。
重要包装
我们将利用Golang中一些内置包装。我们将使用的重要软件包之一是os软件包。该软件包允许我们将文件和目录作为实体操纵。
fmt软件包允许我们在GO中广泛打印和格式。
编写我们的代码ð—¾â»»
首先,我们将创建一个名为generator.go
的新文件,该文件将包含我们程序的所有必要功能。
首先,我们导入所有必要的软件包:
package main
import(
"fmt"
"os"
)
var directories map[string][]string = map[string][string]{
"features": {},
"shared": {},
"theme": {
"colors.dart",
"theme.dart",
"styles.dart"
},
"utils": {
"storage.dart",
"utils.dart",
"validator.dart"
},
"/features/auth": {},
"features/auth/views": {},
}
-
import
语句用于导入我们程序运行所需的所有必要软件包。 -
我们创建了一个键值变量,名为
map[string][]string
类型的目录。键表示目录的名称,值表示要在目录中创建的文件列表。
func CreateDirectory(path string) error {
_, err := os.Stat(path)
if err == nil {
return nil
}
if os.IsNotExist(err) {
err := os.MkdirAll(path, os.ModePerm)
if err != nil {
return err
}
}
return nil
}
- 我们创建了一个名为
CreateDirectory
的函数,该函数将字符串path
作为参数。path
字符串代表我们要创建所有自定义目录的父目录。 -
os.Stat
函数用于获取我们目录的文件信息。 -
os.IsNotExist
函数用于检查目录是否已经存在。如果不存在,请使用os.MkdirAll(path, os.ModePerm)
函数创建一个新目录。 -
os.MkdirAll
提出了两个论点。第一个参数是应创建目录的路径,第二个参数是创建目录所需的权限。
func CreateDartFile(path, filename string) error {
_, err := os.Create(fmt.Sprintf("/%v/%v", path, filename))
if err != nil {
return err
}
return nil
}
- 我们创建了一个名为
CreateDartFile
的新函数,该功能需要两个参数。第一个参数是应创建文件的路径,第二个参数代表文件名。 -
os.Create
函数采用一个参数,该参数指定了应创建文件的目录。 -
fmt.Sprintf
用于组合路径和文件名,然后返回字符串。 -
os.Create
返回两个值。第一个值表示文件,第二个值如果未成功创建文件,则返回错误。 - 我们检查
os.Create
功能是否会引发错误并将其返回到CreateDartFile
函数。 - 如果
os.Create
没有丢失错误,我们返回nil
接下来,我们将查看我们的main
函数。
func main() {
if len(os.Args) != 2 {
fmt.Println("Please provide a parent directory")
os.Exit(1)
}
parentPath := os.Args[1]
for directory, files := range directories {
err := CreateDirectory(fmt.Sprintf("/%v/%v", parentPath, directory))
if err != nil {
fmt.Printf("Failed to create directory: %v\n", directory)
}
for _, fileName := range files {
err := CreateDartFile(fmt.Sprintf("/%v/%v", parentPath, directory), fileName)
if err != nil {
fmt.Printf("Failed to create file: %v\n", fileName)
}
}
}
fmt.Println("All directories & files generated successfully 🚀")
}
- 当我们从终端运行
go run
时,使用os.Args
函数来指定目录。该参数代表将创建我们所有自定义目录的父目录。 - 创建一个新的变量
parentPath
,以从终端保存指定的目录。 - 使用
for
循环通过目录变量迭代并使用您先前创建的CreateDirectory
函数创建每个目录。 -
CreateDirectory
采用一个参数,该参数代表应创建目录的完整路径。我们将parentPath
和directory
字符串结合在一起以获取完整的路径。 - 创建另一个
for
循环以通过目录映射中的每个文件迭代。 - 使用我们之前创建的
CreateDartFile
函数来创建每个文件。将完整的路径和文件名作为参数传递给函数。
接下来,在您的文档文件夹中创建一个名为test_app的新的flutter项目。
现在,我们需要运行我们的Generator.go文件以为我们的Flutter Project生成我们的自定义目录。打开终端并键入go run generator.go ~/documents/test_app/lib
您应该看到消息“成功生成的所有目录和文件”。
是的!我们所有的自定义目录和文件均已成功生成。
结论ð
我们已经学会了如何为我们的Flutter项目生成自定义目录和文件。您可以调整此GO代码并使用它,但是必须为您的项目创建自定义目录或文件。