# solidity本地编译环境配置

By [xrshao](https://paragraph.com/@shaozhang) · 2022-08-07

---

一般情况都是直接使用remix，除非solidity的项目文件多，相互调用，才需要使用hardhat来自己编译部署!

remix 打开 solidity的文件来 测试简单的！

复杂的还是需要 hardhat 来编译运行！

### 1\. 先安装solidity的解释器

使用brew 安装就可以

*   brew search solidity 可以看到有的
    
*   brew install solidity 安装
    
*   最后使用 solc --version 看下版本号
    
*   Version: 0.8.11+commit.d7f03943.Darwin.appleclang
    

### 2\. 再安装nodejs, 使用nvm来管理nodejs的版本，所以先按照nvm

`brew install nvm`

`mkdir ~/.nvm`

有可能提示存在了，

`vim ~/.bash_profile`

复制下面2行到这个文件：wq保存

    export NVM_DIR=~/.nvm
    source $(brew --prefix nvm)/nvm.sh
    

最后让生效：

`source ~/.bash_profile`

### 3\. 简单测试，使用remix， 我这边统一使用vscode编辑， 然后加上remix插件，基本上和remix差不多！有差异的话。就直接用remix打开本地文件来运行！

安装 配置hardhat。
-------------

    npm install --save-dev hardhat   ## 先安装hardhat
    
    npx hardhat ## 选择创建 简单例子 然后默认安装就行！
    
    contracts目录下，就是存放的sol文件
    scripts目录下，就是部署的js文件
    test目录下，就是测试的js文件， 可以使用web3.js 或者 ethers.js 来调用合约测试
    
    可以先跑一下测试：
    npx hardhat test ## 可以看到，1 passing (995ms) 表示测试通过。
    
    
    正常流程 ，第一步，编译
    npx hardhat compile  ##默认就是编辑contracts目录下的sol文件
    可以在hardhat.config.js 中 设置solidity的版本号
        module.exports = {
          solidity: "0.8.4",
        };
    

### 配置hardhat.config.js 的网络，然后部署

    module.exports = {
      solidity: "0.8.4",
      networks:{
        ganache:{
          url:'http://localhost:8545',
        },
    
      }
    };
    
    然后运行：这里默认的部署js是:
    npx hardhat run --network ganache scripts/sample-script.js
    然后对应下ganache的transactions 就可以看到对应的合约部署地址是一致的
    

### 获得abi

1.hardhat编译部署之后，artifacts/contracts/Greeter.sol/Greeter.json 这个json里面就是对应的abi文件

2.或者手工remix编译，也可以获得abi文件

---

*Originally published on [xrshao](https://paragraph.com/@shaozhang/solidity)*
