Importer et charger des fichiers sources dans Solidity
Il y a deux raisons principales de charger des fichiers externes dans Remix :
pour importer une bibliothèque ou une dépendance (pour les fichiers que vous ne modifierez PAS)
pour charger des fichiers à manipuler, à éditer et à lire (pour les fichiers que vous pourriez vouloir éditer)
Importation d’une bibliothèque ou d’une dépendance
When importing from NPM, or a URL (like github, an IPFS gateway, or a Swarm gateway) you do not need to do anything more than use the import
statement in your contract. The dependencies do not need to be « preloaded » into the File Explorer’s current Workspace before the contract is compiled.
Les fichiers chargés à partir de l’instruction d’importation sont placés dans le dossier .deps
de l’explorateur de fichiers** de l’espace de travail actuel.
Sous le capot, Remix vérifie si les fichiers sont déjà chargés dans le répertoire .deps. Si ce n’est pas le cas, il les récupère via unpkg s’il s’agit d’une librairie NPM.
Voici quelques exemples de déclarations d’importation :
Importer de NPM
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts@4.2.0/token/ERC20/ERC20.sol";
Note: Dans l’exemple ci-dessus, @openzeppelin est le nom de la bibliothèque npm. Dans l’exemple suivant, le nom de la bibliothèque ne commence pas par un @ - mais Remix ira chercher dans npm une bibliothèque de ce nom.
import "solidity-linked-list/contracts/StructuredLinkedList.sol";
Importer à partir d’une URL Github
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/math/SafeMath.sol";
Vous devez spécifier l’étiquette de la version (lorsqu’elle est disponible), sinon vous obtiendrez le code le plus récent de la branche master. Pour les contrats OpenZeppelin, vous ne devez utiliser que le code publié dans une version officielle. L’exemple ci-dessus importe les contrats OpenZeppelin v2.5.0.
Importer depuis Swarm
import 'bzz-raw://5766400e5d6d822f2029b827331b354c41e0b61f73440851dd0d06f603dd91e5';
Importation à partir d’IPFS
import 'ipfs://Qmdyq9ZmWcaryd1mgGZ4PttRNctLGUSAMpPqufsk6uRMKh';
Importer un fichier local qui n’est pas dans .deps
Pour importer un fichier qui ne se trouve PAS dans le dossier .deps, utilisez un chemin relatif (./). Par exemple, vous pouvez utiliser un chemin relatif (./) :
import "./myLovelyLovelyLib.sol";
Note: Il n’est pas possible d’importer entre les espaces de travail.
Importation d’un fichier à partir du système de fichiers de votre ordinateur
This method uses remixd - the remix daemon. Please go to the remixd docs for instructions about how to bridge the divide between the browser and your computer’s filesystem.
En savoir plus sur le mot-clé import
Pour une explication détaillée du mot-clé import
, voir la [documentation Solidity] (https://docs.soliditylang.org/en/latest/layout-of-source-files.html?highlight=import#importing-other-source-files).
Importing files for manipulation
When importing from the home tab widgets or with a remix command in the console, the files are placed in the root of the current Workspace inside a folder that shows their source - eg github or gists.
Chargement avec une commande remix dans la console
Les 2 commandes remix pour le chargement sont :
remix.loadurl(url)
remix.loadgist(id)
remix.loadurl('https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/math/SafeMath.sol')
remix.loadgist('5362adf2000afa4cbdd2c6d239e06bf5')
Accès aux fichiers chargés à partir de l’onglet Accueil ou d’une commande de remixage
Lorsque vous chargez depuis github, un dossier nommé github
est créé à la racine de votre espace de travail actuel. Pour importer un fichier depuis le dossier github
, vous devez utiliser une commande comme celle-ci :
import "github/OpenZeppelin/openzeppelin-contracts/contracts/math/SafeMath.sol";
Notez que cette déclaration d’importation n’inclut pas les informations de version qui se trouvaient dans la commande remix.load(url). Il est donc recommandé d’utiliser les méthodes décrites en haut de cette page pour importer des dépendances que vous n’avez pas l’intention de modifier.
Supposons que le fichier .sol contenant la déclaration d’importation ci-dessus se trouve dans le dossier contracts. Remarquez que cette instruction d’importation n’a pas besoin de remonter jusqu’au dossier github avec un chemin relatif comme : ../github.