与 VSCode 集成

你可以通过安装 VSCode Solidity 扩展 获得对 Visual Studio Code 的 Solidity 支持。

要使该扩展与 Foundry 协同工作,你可能需要调整一些设置。

1. 重映射

你可能希望将重映射放置在 remappings.txt 中。

如果它们已经在 foundry.toml 中,请将其复制并改用 remappings.txt。如果你只是使用 Foundry 提供的自动生成的重映射,请运行 forge remappings > remappings.txt

2. 依赖项

你可能需要将以下内容添加到你的 .vscode/settings.json 中,以便扩展程序找到你的依赖项:

{
  "solidity.packageDefaultDependenciesContractsDirectory": "src",
  "solidity.packageDefaultDependenciesDirectory": "lib"
}

其中 src 是源代码目录,lib 是你的依赖项目录。

3. 格式化程序

要启用 Foundry 提供的内置格式化程序在保存时自动格式化你的代码,你可以将以下设置添加到你的 .vscode/settings.json 中:

{
  "editor.formatOnSave": true,
  "[solidity]": {
    "editor.defaultFormatter": "JuanBlanco.solidity" 
  },
  "solidity.formatter": "forge",
}

要配置格式化程序设置,请参阅 Formatter 参考。

4. Solc 版本

最后,建议指定一个 Solidity 编译器版本:

"solidity.compileUsingRemoteVersion": "v0.8.17"

要使 Foundry 与所选版本保持一致,请将以下内容添加到 foundry.toml 中的 default 配置文件中。

solc = "0.8.17"

使用 OpenZeppelin 合约和非标准项目布局的示例。

.
└── project
└── contracts
═── lib
│ ═── forge-std
│ └── openzeppelin-contracts
═── script
═── src
└── test

remappings.txt 文件中添加一行 (forge remapping):

@openzeppelin/=lib/openzeppelin-contracts/

.vscode/settings.json 文件中添加一行 (solidity 扩展设置):

{
"solidity.remappings": [
"@openzeppelin/=project/contracts/lib/openzeppelin-contracts/"
]
}

现在可以使用 OpenZeppelin 文档中的所有合约。