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)