Lesson 5 of 21
In Progress

Adding Dependencies and Plugins

One of the key benefits of using Hardhat for decentralized application (DApp) development is its plugin system, which allows you to extend its functionality and integrate with other tools and libraries. In this article, we’ll take a closer look at how to add dependencies and plugins to your Hardhat project, including how to install them, require them in your code, and use them to access additional features and capabilities.

Installing Dependencies and Plugins

To add a dependency or plugin to your Hardhat project, you’ll need to use npm (the Node.js package manager). npm is a command-line tool that allows you to install and manage packages (i.e., code libraries and other assets) that you can use in your project.

To install a dependency or plugin, you’ll need to run the npm install command, specifying the package name as an argument. For example, to install the chai library (a popular assertion library for testing), you would run the following command:

npm install --save-dev chai

This will install the chai library and add it to the devDependencies section of your package.json file. The --save-dev flag tells npm to add the package as a development dependency, which means it will only be installed in your local development environment and not included in the production build of your project.

Requiring Dependencies and Plugins in Your Code

Once you’ve installed a dependency or plugin, you’ll need to require it in your code to be able to use it. In Hardhat, you can require dependencies and plugins in your configuration file (hardhat.config.js) or in your tasks and test files.

To require a dependency or plugin in your configuration file, you’ll need to use the require function, passing in the package name as an argument. For example, to require the chai library, you would add the following line of code to your hardhat.config.js file:

const chai = require("chai");

To require a dependency or plugin in a task or test file, you’ll need to use the same require function. For example, to require the chai library in a test file, you would add the following line of code at the top of the file:

const chai = require("chai");

Using Dependencies and Plugins

Once you’ve required a dependency or plugin in your code, you can use it to access additional features and capabilities. The exact usage will depend on the specific dependency or plugin you’re using.

For example, if you’re using the chai library for testing, you can use it to write assertions and perform tests. Here is an example of a test that uses the chai library:

const { expect } = require("chai");
const { Contract } = require("hardhat");

describe("MyContract", function () {
  it("should do something", async function () {
    // Load the contract
    const myContract = await Contract.fromArtifact("MyContract");

    // Test the contract
    expect(await myContract.someFunction()).to.equal(true);
  });
});

In this example, we are using the expect function from the chai library to write an assertion that checks the return value of the someFunction function in our MyContract contract.

If you’re using a plugin, you’ll need to follow the instructions provided by the plugin developer to use it. Plugins can provide custom tasks, modify the behavior of Hardhat, and access additional features and capabilities.

Conclusion

Adding dependencies and plugins to your Hardhat project can help you extend its functionality and access additional tools and libraries. By installing dependencies and plugins using npm, requiring them in your code, and using them to access their features and capabilities, you can make your Hardhat project even more powerful and flexible.

Exercises

To review these concepts, we will go through a series of exercises designed to test your understanding and apply what you have learned.

What is the command to install a dependency or plugin using npm?

npm install --save-dev [package]

What is the require function used for in JavaScript?

The require function is used to include a module in a JavaScript file. It allows you to use the functions and variables defined in the module in your code.

How do you require a dependency or plugin in a Hardhat configuration file?

To require a dependency or plugin in a Hardhat configuration file, you’ll need to use the require function, passing in the package name as an argument. For example:

const chai = require("chai");

How do you require a dependency or plugin in a Hardhat task or test file?

To require a dependency or plugin in a Hardhat task or test file, you’ll need to use the require function, passing in the package name as an argument. For example:

const chai = require("chai");

How do you use the chai library to write assertions and perform tests?

To use the chai library to write assertions and perform tests, you’ll need to require the chai library and use the expect function. For example:

const { expect } = require("chai");

expect(2 + 2).to.equal(4);

This test will pass, as 2 + 2 does equal 4. If the test failed, it would throw an error.