Rust代码格式化插件dprint-plugin-typescript的使用:高效TypeScript/JavaScript代码格式化工具

Rust代码格式化插件dprint-plugin-typescript的使用:高效TypeScript/JavaScript代码格式化工具

dprint-plugin-typescript

这是一个用于dprint的TypeScript格式化插件。它使用Rust编写的swc解析器来处理TypeScript代码,具有极高的速度。

安装

可以通过GitHub发布页面获取安装包。

开发

测试用例位于./tests/specs文件夹中。要运行测试,请执行cargo test命令。

构建Wasm文件

如果你想从源代码构建并试用这个插件:

  1. 运行cargo build --target wasm32-unknown-unknown --release --features "wasm"
  2. 在dprint配置文件中引用./target/wasm32-unknown-unknown/release/dprint_plugin_typescript.wasm文件

完整示例

以下是一个使用dprint-plugin-typescript格式化TypeScript代码的完整示例:

// 首先添加依赖到Cargo.toml
// dprint-plugin-typescript = "0.95.9"

use dprint_plugin_typescript::configuration::ConfigurationBuilder;
use dprint_plugin_typescript::format_text;

fn main() {
    // 创建格式化配置
    let config = ConfigurationBuilder::new()
        .line_width(80)
        .indent_width(2)
        .build();
    
    // 要格式化的TypeScript代码
    let code = r#"function helloWorld(name:string){console.log('Hello, '+name);}"#;
    
    // 格式化代码
    match format_text("file.ts", code, &config) {
        Ok(formatted_code) => {
            println!("Formatted code:\n{}", formatted_code);
        }
        Err(err) => {
            eprintln!("Error formatting code: {}", err);
        }
    }
}

格式化后的输出将是:

function helloWorld(name: string) {
  console.log("Hello, " + name);
}

完整示例demo

// Cargo.toml 依赖配置
// [dependencies]
// dprint-plugin-typescript = "0.95.9"

use dprint_plugin_typescript::configuration::ConfigurationBuilder;
use dprint_plugin_typescript::format_text;
use std::fs;

fn main() {
    // 创建自定义格式化配置
    let config = ConfigurationBuilder::new()
        .line_width(100)  // 设置行宽为100个字符
        .indent_width(4)  // 设置缩进为4个空格
        .prefer_hanging(true)  // 优先使用悬挂缩进
        .prefer_single_line(false)  // 不优先使用单行格式
        .build();

    // 读取TypeScript文件
    let code = match fs::read_to_string("input.ts") {
        Ok(content) => content,
        Err(err) => {
            eprintln!("Error reading file: {}", err);
            return;
        }
    };

    // 格式化代码
    match format_text("input.ts", &code, &config) {
        Ok(formatted_code) => {
            // 将格式化后的代码写入文件
            if let Err(err) = fs::write("output.ts", formatted_code) {
                eprintln!("Error writing formatted code: {}", err);
            } else {
                println!("Code formatted successfully!");
            }
        }
        Err(err) => {
            eprintln!("Error formatting code: {}", err);
        }
    }
}

元数据

  • 版本: 0.95.9
  • 发布时间: 18天前
  • 2021版
  • MIT许可证
  • 大小: 212 KiB

安装方法

在项目目录中运行以下Cargo命令:

cargo add dprint-plugin-typescript

或者在Cargo.toml中添加以下行:

dprint-plugin-typescript = "0.95.9"

文档

可以在docs.rs上查看完整文档。

仓库

项目托管在GitHub上。

所有者

  • David Sherret

1 回复

Rust代码格式化插件dprint-plugin-typescript的使用指南

介绍

dprint-plugin-typescript是一个基于Rust开发的高性能TypeScript/JavaScript代码格式化插件,它是dprint工具生态系统的一部分。相比传统的格式化工具,它具有以下优势:

  • 极快的格式化速度:得益于Rust的高性能实现
  • 一致的格式化结果:避免不同编辑器/IDE之间的格式化差异
  • 高度可配置:支持自定义格式化规则
  • 支持最新语法:持续更新支持最新的TypeScript/JavaScript特性

安装方法

1. 安装dprint核心工具

首先需要安装dprint核心工具:

# 使用cargo安装
cargo install dprint

# 或者使用npm
npm install -g dprint

2. 安装TypeScript插件

dprint plugins install typescript

基本使用

格式化单个文件

dprint fmt path/to/file.ts

格式化整个项目

dprint fmt

检查格式化而不实际修改文件

dprint check path/to/file.ts

配置示例

在项目根目录创建dprint.json配置文件:

{
  "typescript": {
    "lineWidth": 100,
    "indentWidth": 2,
    "semiColons": "asi",
    "quoteStyle": "preferSingle",
    "arrowFunction.useParentheses": "preferNone",
    "trailingCommas": "all",
    "bracePosition": "sameLine",
    "singleBodyPosition": "sameLine"
  }
}

常见配置选项

选项 描述 可选值
lineWidth 每行最大字符数 数字 (默认80)
indentWidth 缩进空格数 数字 (默认2)
semiColons 分号使用规则 “always”, “asi”
quoteStyle 引号风格 “alwaysDouble”, “alwaysSingle”, “preferDouble”, “preferSingle”
trailingCommas 尾随逗号 “always”, “never”, “es5”, “all”
bracePosition 大括号位置 “sameLine”, “nextLine”

与编辑器集成

VS Code集成

  1. 安装VS Code扩展: “Dprint”
  2. 在项目根目录创建.vscode/settings.json:
{
  "editor.defaultFormatter": "dprint.dprint",
  "editor.formatOnSave": true,
  "dprint.path": "node_modules/.bin/dprint",
  "dprint.configPath": "dprint.json"
}

性能对比示例

格式化一个大型TypeScript项目(10,000+行):

传统工具(Prettier): 1.2s
dprint-plugin-typescript: 0.3s

高级用法

只格式化特定文件类型

dprint fmt --include "**/*.{ts,tsx}"

作为项目开发依赖安装

npm install --save-dev dprint dprint-plugin-typescript

然后在package.json中添加脚本:

{
  "scripts": {
    "format": "dprint fmt",
    "format:check": "dprint check"
  }
}

注意事项

  1. 确保Node.js版本 >= 12.0.0
  2. 首次运行可能需要下载插件二进制文件
  3. 对于大型项目,建议在CI/CD中运行格式化检查

完整示例demo

以下是一个完整的TypeScript项目格式化示例:

  1. 首先创建项目结构:
my-project/
├── src/
│   ├── index.ts
│   └── utils.ts
└── dprint.json
  1. 示例index.ts文件内容:
// 未格式化的代码
const greet=(name:string)=>{console.log(`Hello, ${name}`);}
interface Person{firstName:string;lastName:string}
  1. 运行格式化命令:
dprint fmt src/index.ts
  1. 格式化后的index.ts文件:
// 格式化后的代码
const greet = (name: string) => {
  console.log(`Hello, ${name}`)
}

interface Person {
  firstName: string
  lastName: string
}
  1. 检查项目格式化状态:
dprint check
回到顶部