# npm packages for creator smart contracts **Published by:** [sweetman](https://paragraph.com/@sweetman/) **Published on:** 2022-07-29 **URL:** https://paragraph.com/@sweetman/npm-packages-for-creator-smart-contracts ## Content Today we help standardize the metadata for music NFTs. Catalog is a dope music NFT company that released a music metadata standard. Today, we’ll extend that standard by putting 100% of the metadata on-chain as a Base64 encoded JSON string. I will teach you how to publish public NPM packages for your solidity smart contracts. The principles I’ll be following here:👁 💛 💿 - built with creators in mind.100% open-source code.MIT license - cc0 technology.I made a goal to publish a package for music NFT metadata (on-chain). https://twitter.com/sweetman_eth/status/1552786690149961728?s=20&t=8v_MRPBJtOYYo3DOirItnQ Here’s the steps I followed:create Github repo.npm init.npm login.npm publish.Import the package into your new music NFTs. 🥳Create Github RepoTo create a Github repo head over to your repositories on Github and create a new repository.Some details I like to include in my repos:MIT license - cc0 philosophy. Anyone can use this code.Public - cc0 philosophy. Anyone can clone this code.Once your Github repo is created, open a terminal and clone your project locally withgit clone npm initNow that we’ve created our Github repo let’s initialize the npm package. This is the first time I’ve ever initialized an npm package so forgiv me if these instructions are unclear: I’m still learning myself. I’m going to use hardhat as the base deployment method for this project so I’ll set up the base contracts structure with npx hardhat init.After setting up my base contract to be included in my NPM package (contracts/)nChainMusicMetadata.sol) I initialize the npm package withnpm init Publish the NPM PackageIt’s typically recommended to test your packages before deploying but my goal is to ship this as fast as possible & iterate with tests later.npm login - logs you in to the NPM package management system.npm publish --access=public - publishes your package publicly for others to use.running npm publish --access=public published my npm package successfully! You can view the NPM package I published here.Import your PackageNow I want to test to make sure the package works. To test, I’ll spin up a separate hardhat repo (following the steps I listed in the “npm init” section). Once I create the new repo, I’ll try installing the package I just created withnpm i onchain-music-metadata Here’s how it looks to inherit my OnChain Music Metadata contract:contract MyMusic is OnChainMusicMetadataSupportI am an independent smart contract engineer. I have a few different options for you to support me as a creator:0.0001 ETH - This article is an NFT. It would really help if you collected this NFT to support my writing of future articles. ✏️Free - follow me on Twitter here. 💬Free - share this article to help propagate the meme. 🦠more coming soon. 🌛 ## Publication Information - [sweetman](https://paragraph.com/@sweetman/): Publication homepage - [All Posts](https://paragraph.com/@sweetman/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@sweetman): Subscribe to updates ## Optional - [Collect as NFT](https://paragraph.com/@sweetman/npm-packages-for-creator-smart-contracts): Support the author by collecting this post - [View Collectors](https://paragraph.com/@sweetman/npm-packages-for-creator-smart-contracts/collectors): See who has collected this post