Swift 编写的 Prettier 代码格式化工具的包装器。该包在 Apple 的 JavaScriptCore 中运行代码格式化工具。所有必要的 JavaScript 文件都与此包捆绑在一起。
可能可以。该包使用了所有依赖项的稳定版本,我计划在即将到来的项目中使用它。但使用风险自负。
Prettier 使用 Swift Package Manager 分发。通过在您的 Package.swift 清单文件中将其添加为依赖项,或通过项目设置中的“Package Dependencies”来在您的项目中安装它。
let package = Package(
dependencies: [
.package(url: "git@github.com:simonbs/Prettier.git", from: "0.1.0")
]
)
要开始使用 Prettier,您必须首先导入模块。
import Prettier
现在您可以创建 PrettierFormatter 的实例。
let formatter = PrettierFormatter(plugins: [BabelPlugin()], parser: BabelParser())
我们需要传递要与 Prettier 一起使用的插件。有些文档可以使用单个插件进行格式化,而有些文档如果包含多种语言的混合,则可能需要多个解析器。HTML 文档就是一个例子,它可能包含 HTML、CSS 和 JavaScript。
接下来,我们传递要用于格式化代码的解析器。
要格式化 HTML,我们将如下所示创建 PrettierFormatter。
let formatter = PrettierFormatter(plugins: [HTMLPlugin(), PostCSSPlugin(), BabelPlugin()] , parser: HTMLParser())
请参阅支持的语言列表,查看所有插件和解析器。
创建 PrettierFormatter 的实例后,您必须在格式化代码之前准备格式化器。
formatter.prepare()
这通过从磁盘加载捆绑的 JavaScript 文件并在 JavaScriptCore 中评估它们来准备实例。建议尽早执行此操作,以便您准备好稍后格式化代码。
准备好 PrettierFormatter 实例后,您可以开始格式化代码。
// 💩 This is some poorly formatted JavaScript that we'll format.
let script = """
if(hello=="world"){
return"Hello world"
}
"""
// Earlier we have created and prepared our instance of Prettier. We're ready to format the JavaScript code.
let result = formatter.format(script)
switch result {
case .success(let formattedCode):
print(formattedCode)
// ✨ Here's our formatted code. Looks great!
// if (hello == "world") {
// return "Hello world";
// }
case .failure(let error):
// Perform proper error handling.
print(error)
}
可以通过调用 -format(:limitedTo:)
来仅格式化输入字符串中的特定范围。
let result = formatter.format(script, limitedTo: 20 ... 39)
switch result {
case .success(let formattedCode):
break
case .failure(let error):
// Perform proper error handling.
print(error)
}
您还可以指定要从未格式化的代码转换为格式化代码的位置。这对于在开发文本编辑器时移动光标很有用。
let result = formatter.format(script, withCursorAtLocation: 38)
switch result {
case .success(let formatResult):
print(formatResult.formattedString)
print(formatResult.cursorOffset)
case .failure(let error):
// Perform proper error handling.
print(error)
}
请注意,-format(:withCursorAtLocation:)
返回的结果与 -format()
和 -format(:limitedTo:)
返回的结果不同,因为此结果包含格式化字符串中的位置。
有几个属性可以用来调整格式化后的代码。这些选项与 JavaScript 实现的 Prettier 中的选项 1:1 映射。有关选项的更多信息,请查看 PrettierFormatter.swift 以及 JavaScript 实现的 Prettier 的文档。
此包捆绑了 Prettier 库以及对以下语言和框架的支持。下表显示了语言名称和要用于格式化该语言代码的解析器。一个解析器可以支持多种语言。
包 | 解析器 | |
---|---|---|
PrettierBabel | BabelFlowParser, BabelParser, BabelTSParser, JSON5Parser, JSONParser, JSONStringifyParser | BabelParser 可用于解析 JavaScript。 |
PrettierEspree | EspreeParser | |
PrettierFlow | FlowParser | |
PrettierGlimmer | GlimmerParser | 用于 Handlebars。 |
PrettierGraphQL | GraphQLParser | |
PrettierHTML | AngularParser, HTMLParser, LWCParser, VueParser | 包含 BabelParser 和 CSSParser 以解析整个 HTML 文档。HTMLParser 可用于解析 Vue。 |
PrettierMarkdown | MarkdownParser, MDXParser | |
PrettierMeriyah | MeriyahParser | |
PrettierPHP | PHPParser | |
PrettierPostCSS | CSSParser, LessParser, SCSSParser | |
PrettierTypeScript | TypeScriptParser | |
PrettierYAML | YAMLParser |
该包使用以下依赖项。