When you are creating a new wallet, what you are doing is creating an account. Every account has a private key and a public key, and are indexed by an address that is where you send the transaction.
The address is the last 20 bytes of the hash of the public key.
According to the documentation:
Every account is defined by a pair of keys, a private key and public key. Accounts are indexed by their address which is derived from the public key by taking the last 20 bytes. Every private key/address pair is encoded in a keyfile.
ethereumjs-wallet does support HDWallet and let you calculate the address corresponding to an extended public key
var hdkey = require('ethereumjs-wallet/hdkey');
var extPubKey = 'xpub6ERoQFMqiUoTXAL56JpQYLq5FyXaZypJiKdsAbHKzMUQsSiJTNSMnBtYYRXxda9C6fUx6mMMqatUDNFSKxxXcpBcpPkTqVwyethpWiQN8p5';
var hdwallet = hdkey.fromExtendedKey(extPubKey);
var wallet = hdwallet.getWallet();
var address = wallet.getAddress();
console.log(`Address: 0x${address.toString('hex')}`);
Best Answer
finding a solution again thank you everyone