(recommend)
nvm use 12
sh install.sh
sh serve.sh
sh deploy.sh
sh start.sh
- Note: Make sure the connected wallet address on PancakeSwap Frontend Page matches your deployed address.
- Default deployed address:
0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
If you plan to push your local project to the server:
Configuresrc/config/index.ts
=>BASE_URL
to address of the server
cd pancake-frontend
npm run build
local serve:
serve -s build -p 3000
If you want to try out the process of configuring Pancake-frontend for yourself and build your own testnet environment, the following will show you which files need to be modified:
- Clone
pancake-swap-core
git clone git@github.com:pancakeswap/pancake-swap-core.git
yarn install
yarn compile
- Clone
pancake-swap-periphery
git clone git@github.com:pancakeswap/pancake-swap-periphery.git
yarn install
yarn compile
- Clone
pancake-frontend
git clone git@github.com:pancakeswap/pancake-frontend.git
yarn install
tip: If you got a compilation error about: import @uniswap/v2-core/contracts/interfaces/IPancakePair.sol
Please refer to upchain
- The source code for the contract address
https://bscscan.com/address/your_address#code
- Install
hardhat
and editPancakeFactory.sol
;
npm install --save-dev hardhat
;
npx hardhat
(chooseCreate an empty hardhat.config.js
); - Deploy tab => Select
PancakeFactory
-> Fill your address asfeeToSetter
in constructor -> Deploy
creat
scripts/deploy.js
npx hardhat run scripts/deploy.js --network dev
;
Remember to save:INIT_CODE_PAIR_HASH
;
- Install
hardhat
and editPancakeRouter.sol
file;
npm install --save-dev hardhat
;
npx hardhat
(chooseCreate an empty hardhat.config.js
); - In the
PancakeLibrary.sol
to findpairFor
function,readINIT_CODE_PAIR_HASH
-> Copy this hash without prefix0x
; - creat
scripts/deploy.js
npx hardhat run scripts/deploy.js --network dev
(If you got an error about:error:max code size exceeded
,setsolidity->optimizer->runs
to 200);
All the files that need to be modified:
/.env.development
/.env.production
/src/config/constants/networks.ts
/src/config/constants/index.ts
/src/config/constants/tokens.ts
{
Local testnet(e.Hardhat):
/src/config/constants/lists.ts
/public/pancake-default.tokenlist.json
Other testnet:
/src/config/constants/lists.ts
/src/config/constants/tokenlists/pancake-default.tokenlist.json
}
/src/config/constants/contracts.ts
/scr/config/constants/farms.ts
/src/config/constants/pools.ts
/src/config/constants/ifo.ts
/src/config/constants/priceHelperLps.ts
/src/config/constants/types.ts
/src/config/index.ts
/src/config/constants/nftsCollections/index.ts
Switch to the pancake-swap-sdk
directory, and modify the file
cd ../pancake-swap-sdk
Modify the file:
/src/constants.ts
and run:
$ pancake-swap-sdk/
npm run build
cp -r ./dist ./local-pancakeswap-libs/sdk/
cp -r ./local-pancakeswap-libs ../pancake-frontend/node_modules
The following is the specific content to be modified:
ethers.providers.StaticJsonRpcProvider(RPC_URL)
is in thesrc/utils/providers.ts
,that parameter is in theenv.development
ofREACT_APP_NODE_PRODUCTION
;network url
is in thePANCAKE-FRONTEND/src/config/constants/networks.ts
;testnet tokens
configuration is in thesrc/config/constants/tokens.ts
;tokenlist
in thesrc/config/constants/tokenlists/pancake-default.tokenlist.json
(In order to facilitate local access, I copied it topublic/
, you can do the same;PANCAKE_EXTENDED
、PANCAKE_TOP100
is in thesrc/config/constants/lists.ts
,- The configuration of the wallet connection network is in the
src/utils/wallet.ts
ROUTER_ADDRESS
is in thesrc/config/constants/index.ts
;masterChef
、lotteryV2
、multiCall
all thesecontract address
are in thesrc/config/constants/contracts.ts
- The configuration of the
ABI
andaddress
are in theconfig/abi/
,utils/addressHelpers
, the reference insrc/utils/contractHelpers.ts
,src/hooks/useContract.ts
- The configuration of the
priceHelperLps
are in thesrc/config/constants/priceHelperLps.ts
; - In the
src/config/constants/types.ts
aboutaddress
need to be modified; - In the
src/state/farms/hooks.ts
aboutuseFarmFromPid(251)
need to be modified; src/utils/getTokenList.ts
about getting tokenlist, I modified intohttp
to access. If you want to build project to serve, you may modifyurl
intohttps
to get tokenlist. Detailed see annotation that 42 line onsrc/utils/getTokenList.ts
;- In the
src/config/index.ts
aboutBASE_BSC_SCAN_URLS,BASE_URL,BASE_BSC_SCAN_URL
need to be modified; - In the
src/config/constants/nftsCollections/index.ts
aboutaddress
need to be modified; farm
、pools
、ifo
、pricehelper
、contracts
all these aboutchainId
need to be modified, which are in the
src/config/constants/farm.ts
src/config/constants/pools.ts
src/config/constants/ifo.ts
src/config/constants/pricehelper.ts
src/config/constants/contract.ts
- The configuration of
FACTORY_ADDRESS_JSON
andINIT_CODE_HASH_JSON
are in thenode_modules/local-pancakeswap-libs/sdk/dist/sdk.cjs.development.js
, seepancakeswap-frontend-hardhat-testnet/depoly.sh
=>cp -r ./local-pancakeswap-libs ../pancake-frontend/node_modules
;
PS:
- If you want to change it
set These parameters aboutFACTORY_ADDRESS_JSON
INIT_CODE_HASH_JSON
ChainId
inpancakeswap-frontend-hardhat-testnet/pancake-swap-sdk/src/constants.ts
and then
$ pancakeswap-frontend-hardhat-testnet/pancake-swap-sdk/:
npm run build
cp -r ./local-pancakeswap-libs ../pancake-frontend/src/node_modules
- If you want to build frontend project and deploy on your server
FACTORY_ADDRESS_JSON
andINIT_CODE_HASH_JSON
should be hard coded inpancakeswap-frontend-hardhat-testnet/pancake-swap-sdk/src/constants.ts
.