npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

svm-js

v1.0.6

Published

A JavaScript library to download and install different versions of the Soildity Compiler (solc)

Downloads

11

Readme

svm-js

Solidity Version Manager inspired by nvm & jabba. Speeds up Solidity compilation in Truffle projects and allows you to easily install & switch between different versions of the Solidity compiler (solc) from the Terminal.

svm-js is a re-implementation of svm in TypeScript. It is currently in beta and is unstable. It can be used from the command-line in the same way as svm, or included in Truffle projects in order to speed up the truffle compile command significantly by using native solc binaries compiled for your platform of choice, rather than the solcjs implementation.

Installation

Run npm install svm-js if you wish to use svm-js as a library, or npm install -g svm-js if you want to use svm-js from the commandline. Installing using the -g option will add a loader function for svm-js your bashrc/zshrc, allowing you to use the svm command globally. Note that this CLI functionality currently only works on Linux and macOS, with Windows support coming soon.

Usage with Truffle

In your truffle-config.js file, replace the replace the compiler version specifier with useNativeSolidity("<compiler version>"). This will invoke svm-js, which will automatically download and use the correct native compiler version, and add it to the PATH variable for the running Node process, allowing Truffle to use it. Example usage:

const { useNativeSolidity } = require("svm-js");

module.exports = {
  networks: {
      // networks
  },
  compilers: {
    solc: {
      version: useNativeSolidity("0.6.12"),    
    }
  }
}

Usage with your shell

screenshot

svm-js integrates with your shell and provides an svm command. The usage is identical to that of svm.

Executables

Executables used by svm are downloaded using TLS, and are served directly from the Solidity Github releases page for Windows and Linux. Unfortunately native images are not supplied for earlier solc versions on macOS, so they are downloaded from this repository.

Notes:

svm-js should be compatible with Node versions 10+. It also exposes useful functionality to download arbitary versions of Solidity when used as a library, beyond just the useNativeSolidity command. Using svm-js in Hardhat projects is not needed, as it already downloads & uses native solc binaries.