From 799949a3f47d7cb4487114cde5198d792740d810 Mon Sep 17 00:00:00 2001 From: Richard Baker Date: Tue, 5 Apr 2022 12:00:26 +0100 Subject: [PATCH] Add .nvmrc & use NVM to manage installed Node version We have decided to use NVM to manage installed Node versions locally and in CI to ensure they match and produce consistent builds. Running `nvm install` will install the Node version specified in the `.nvmrc` file. This is now consistent with Document Download Frontend. See: alphagov/document-download-frontend#114 Signed-off-by: Richard Baker --- .nvmrc | 1 + Makefile | 6 +++--- README.md | 13 +++++++++---- 3 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..0b77208ae --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +16.14.0 \ No newline at end of file diff --git a/Makefile b/Makefile index 851aec5c7..6598f5176 100644 --- a/Makefile +++ b/Makefile @@ -25,8 +25,8 @@ VIRTUALENV_ROOT := $(shell [ -z $$VIRTUAL_ENV ] && echo $$(pwd)/venv || echo $$V .PHONY: bootstrap bootstrap: generate-version-file ## Set up everything to run the app pip3 install -r requirements_for_test.txt - npm install - . environment.sh; npm run build + source $(HOME)/.nvm/nvm.sh && nvm install && npm ci + . environment.sh; source $(HOME)/.nvm/nvm.sh && npm run build .PHONY: watch-frontend watch-frontend: ## Build frontend and watch for changes @@ -56,7 +56,7 @@ generate-version-file: ## Generates the app version file test: ## Run tests flake8 . isort --check-only ./app ./tests - npm test + source $(HOME)/.nvm/nvm.sh && npm test py.test -n auto --maxfail=10 tests/ .PHONY: fix-imports diff --git a/README.md b/README.md index d7437ca8e..35084481c 100644 --- a/README.md +++ b/README.md @@ -13,17 +13,21 @@ GOV.UK Notify admin application - https://www.notifications.service.gov.uk/ At the moment we run Python 3.9 in production. -### NPM packages +### NodeJS & NPM + +If you don't have NodeJS on your system, install it with homebrew. ```shell brew install node ``` -[NPM](npmjs.org) is Node's package management tool. `n` is a tool for managing different versions of Node. The following installs `n` and uses the long term support (LTS) version of Node. +`nvm` is a tool for managing different versions of NodeJS. Follow [the guidance on nvm's github repository](https://github.com/nvm-sh/nvm#installing-and-updating) to install it. + +Once installed, run the following to switch to the version of NodeJS for this project. If you don't +have that version, it should tell you how to install it. ```shell -npm install -g n -n lts +nvm use ``` ### `environment.sh` @@ -75,4 +79,5 @@ To run a specific JavaScript test, you'll need to copy the full command from `pa ## Further docs - [Working with static assets](docs/static-assets.md) +- [JavaScript documentation](https://github.com/alphagov/notifications-manuals/wiki/JavaScript-Documentation) - [Updating dependencies](https://github.com/alphagov/notifications-manuals/wiki/Dependencies)