从 Github repo 导入到 Solidity Contract 的规则(语法)是什么

What are the rules (syntax) for importing from Github repo to Solidity Contract

我在 Solidity 合约中有以下导入语句(有效)。

import "@openzeppelin/contracts/token/ERC20/IERC20.sol"

我正在导入的界面位于以下存储库中:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol

我的问题是,从 github 存储库导入到 Solidity 时,我应该遵循什么语法或规则?导入语句中的@符号是什么意思?

您的代码片段显示 direct import 根据编译器配置在本地目录中搜索文件。

默认来源之一是 node_modules 目录,其中安装了 NPM 个包。

@ 符号只是 NPM 的前缀,允许将更多包分组到同一命名空间(在本例中为 @openzeppelin/<package_name>)。


要从 GitHub 导入合约,您只需传递完整的 URL:

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol";

同样由于默认配置,编译器将远程文件从 GitHub 下载到本地临时目录,并在编译前导入其内容。