• This repository has been archived on 01/Sep/2022
  • Stars
    star
    312
  • Rank 129,642 (Top 3 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created almost 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🧢 Manage multiple versions of Yarn (deprecated)

Yarn Version Manager (yvm) - (deprecated)

⚠️ Deprecation Notice (2022-02-20) ⚠️

yvm has been deprecated in favour of corepack which is distributed by default with NodeJS v14, and is available in older versions by installing the corepack npm package globally.

With corepack, you specify your package manager and version via the packageManager field in your project's package.json file (see example).

What does it mean to be deprecated? yvm will no longer receive updates (except for critical security vulnerabilities) and the repository will eventually be archived.


Logo

YVM Latest Version Minimum Node Version Builds codecov semantic-release Dependencies Dependabot All Contributors Discord Maturity badge - level 3 Pull Reminders

Overview

Pesky yarn versions got you down? Automatically and easily manage those versions.

YVM will automatically use the correct yarn version when you run any yarn commands in any folder with a package.json, .yvmrc or any other supported configuration file. Otherwise, it will use you a globally set version of yarn.

Motivation

Manually managing different yarn versions across projects is a pain. This fixes that.

Installation

Node: >=10.0.0

Homebrew

Installs the latest stable version.

brew install tophat/bar/yvm --without-node

NOTE: Remove the flag --without-node to install with the node dependency.

Windows

TODO: #435

Node

Execute the following in your terminal:

curl -s https://raw.githubusercontent.com/tophat/yvm/master/scripts/install.js | node

Or to install a specific version:

curl -s https://raw.githubusercontent.com/tophat/yvm/v3.2.1/scripts/install.js | INSTALL_VERSION="v3.2.1" node

Script

Some older versions of yvm do not have the node installer enabled. If so the shell script installer can be used.

curl -s https://raw.githubusercontent.com/tophat/yvm/v2.4.3/scripts/install.sh | INSTALL_VERSION="v2.4.3" bash

Manual

Navigate to yvm releases and download the yvm.js file for the latest release into your desired yvm install directory.

Typically .yvm your home directory, then run the following command to configure your shell.

node ./home/joe_user/.yvm/yvm.js configure-shell

You will need to reload the shell to get yvm, or source the generated yvm.{sh,fish} scripts.

Upgrade

To upgrade yvm to the lastest version either install as normal, or run

yvm update-self

Usage

Automagic

Run any yarn command and watch it automagically use the correct version of yarn.

Yarn is shimmed to use the default version or the version defined your current directory config file.

yarn --version

Basic

To download and install a specific version of yarn, run:

yvm install <version>

To get the latest version of Yarn, run:

yvm install latest

Execute an arbitrary command using a specific version of yarn:

yvm exec <version> <command>

Additional commands

Switch the current yarn versions:

yvm use <version>
yarn --version

NOTE: The above disables yarn shimming until a new shell is loaded.

Control version aliasing:

yvm alias stable
# stable β†’ 1.13.0 (1.13.0)

yvm alias default stable
# default β†’ stable (1.13.0)

yvm alias
# default β†’ stable (1.13.0)
# latest β†’ 1.14.0 (1.14.0)
# stable β†’ 1.13.0 (1.13.0)
# system β†’ 1.13.0 (1.13.0)

yvm alias default '^1.7'
# default β†’ ^1.7 (1.14.0)

Show path to version used:

yvm which

List installed yarn versions:

yvm list

Full list of available commands:

yvm --help

Configuration file

Yvm defaults to using the yarn version in your package.json engines. Otherwise you can create a .yvmrc file containing the version number of yarn in your project's root directory. Afterwards, yvm use, yvm install and yvm exec will use the version specified in the config file if no version number is supplied to the command. You can also declare the version using other configuration files

Custom Bootstrapping

When using yvm exec, the appropriate yarn version is executed using the node available in the current context. This can be explicitly specified using the YVM_BOOTSTRAP_EXEC_PATH environment variable.

Example: if you are using nvm, you can avoid having to execute nvm use before using yvm exec:

export YVM_BOOTSTRAP_EXEC_PATH=~/.nvm/nvm-exec
yvm exec my-command

You can set this environment variable globally in your preferred shell's setup script (e.g. bashrc/zshrc).

The script referenced via the exec path must be executable. It receives the yarn executable as its first argument, and should forward the remaining arguments to yarn.

Additional reference

A full list of commands is on the api reference page

Have questions? List of common questions and answers

Removing

To remove yvm simply execute

rm -rf $YVM_DIR

Next, edit $HOME/.bashrc and $HOME/.zshrc and remove those lines:

export YVM_DIR=/home/joe_user/.yvm
[ -r $YVM_DIR/yvm.sh ] && . $YVM_DIR/yvm.sh

Remove in $HOME/.config/fish/config.fish for fishers:

set -x YVM_DIR /home/joe_user/.yvm
[ -r $YVM_DIR/yvm.fish ]; and source $YVM_DIR/yvm.fish

In case you had older version of yvm installed, there could also be a line like

source /home/joe_user/.yvm/yvm.sh

or those lines could be in $HOME/.bash_profile instead of $HOME/.bashrc.

Contributing

We welcome contributions from the community, Top Hatters and non-Top Hatters alike. Here are some guidelines to help you get started!

Basic development flow

  1. Ensure the problem you are solving is an issue or you've created one
  2. Clone the repo
  3. We use make. make help will show you a list of development commands
  4. make install-watch will install yvm on your shell and update when you make changes. Make sure to only run this in the root yvm directory, it will fail elsewhere.
  5. make test and make lint are also commonly helpful

Make sure all changes are well documented. Our documentation can be found inside the docs section of this repo. Be sure to read it carefully and make modifications wherever necessary. You can also access the documentation on our website

Please make sure to look over our Code of Conduct as well!

Manual testing command contributions

make install
yvm <your-command-here>

Technologies to Familiarize Yourself with

Contributors

Thanks goes to these wonderful people (emoji key):


Francois Campbell

πŸ’»

Jake Bolam

πŸ“– πŸ’» πŸš‡

Brandon Baksh

πŸ’»

Milan Milojic

πŸ’»

Umar Ahmed

πŸ’»

Nicholas Dujay

πŸ’»

Aser Eldamaty

πŸ’»

Michael Rose

πŸ’»

Sanchit Gera

πŸ“–

sdcosta

πŸ“–

Siavash Mahmoudian

πŸš‡

greenkeeper[bot]

πŸš‡

Jay Crumb

πŸ“–

Michael LunΓΈe

πŸ“–

Yash Shah

πŸ’»

WacΕ‚aw Schiller

πŸ’»

yvm-bot

πŸš‡

Emmanuel Ogbizi

πŸ’» ⚠️ πŸ“–

Martin Lai

πŸ’»

Marc Cataford

πŸ’»

Ahmed Elkady

πŸ‘€

Noah

πŸ’» πŸš‡

Derek Delaney

πŸ“–

dependabot[bot]

πŸš‡

allcontributors[bot]

πŸ“–

Umar Ahmed

πŸ›

Abi Noda

πŸ“– πŸ“†

Josh Dean

πŸ“–

akeshk

πŸš‡ πŸ”§ πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

Credits

Thanks to Carol Skelly for donating the github organization!

More Repositories

1

RichTextView

iOS Text View (UIView) that Properly Displays LaTeX, HTML, Markdown, and YouTube/Vimeo Links
Swift
1,156
star
2

syrupy

πŸ₯ž The sweeter pytest snapshot plugin
Python
449
star
3

monodeploy

🚝 Like semantic-release and Lerna, but for Yarn modern workspaces
TypeScript
104
star
4

with-immutable-props-to-js

😈 A higher-order component for keeping Immutable objects outside your presentational components
JavaScript
76
star
5

sanity-runner

Automate your sanity tests against a chrome browser running in AWS Lambda. Can be implemented into deployment pipelines for easy post-deploy tests or can be run on the regular to determine if your site starts regressing
TypeScript
40
star
6

codewatch

[deprecated] Monitor and manage deeply customizable metrics about your python code using ASTs
Python
38
star
7

jenkins-timeline-plugin

A build timeline to facilitate the inspection of Jenkins pipelines and identify bottlenecks.
JavaScript
34
star
8

dont-waste-your-ducking-time

πŸ“ An opinionated guide on how to test Redux ducks
JavaScript
27
star
9

yarn-plugin-licenses

Audit your dependency licenses with this yarn berry plugin
TypeScript
26
star
10

django-training

🐍 Master the Django ORM for fun and profit
Python
23
star
11

ormar-postgres-extensions

Extensions to the Ormar ORM to support PostgreSQL specific types
Python
21
star
12

semantic-release-firefox-add-on

🦊 A Semantic Release plugin to sign Firefox Add Ons using web-ext
JavaScript
17
star
13

serverless-slack-invite

A serverless service providing badge and invitation gateway for public Slack channels
JavaScript
10
star
14

eslint-config

🦈 Top Hat's shareable eslint configuration
TypeScript
9
star
15

commit-utils

πŸ’¬ Top Hat's commitlint config, including a commitizen adapter and conventional changelog preset
TypeScript
9
star
16

getting-started

Home for Top Hat Open Source's contributing docs and policies
8
star
17

opensource.tophat.com

Open source portal
TypeScript
5
star
18

react-vector-graphics

βš›οΈ Transform SVGs into React components
TypeScript
4
star
19

networkjs

A utility that monitors a browser's network and emits connectivity events
JavaScript
3
star
20

yarn-plugin-semver-up

Yarn plugin to update dependencies while respecting range restrictions
TypeScript
3
star
21

commit-watch

Project has been moved to https://github.com/tophat/commit-utils
JavaScript
3
star
22

new-project-kit

Some odds and ends to help you get started with new Top Hat Open Source repos quickly
3
star
23

ghost-imports-buster

πŸ‘» Root out imports that are either unused or undeclared in your package.json πŸ‘»
TypeScript
2
star
24

lms-connector

Generic gateway interface for connecting to different learning management systems
Python
2
star
25

oss-metrics-dashboard

Python
2
star
26

eslint-import-resolver-require

JavaScript
1
star
27

yvm-github-gateway

yvm github gateway for yvm (to avoid GitHub rate limiting)
JavaScript
1
star
28

homebrew-bar

🍺 Top Hat Homebrew Open Bar
Ruby
1
star