namespace :yarn do desc "Ensure Yarn is installed" task :available do unless system("yarn --version", out: File::NULL) warn( "Error: Yarn executable was not detected in the system.".color(:red), "Download Yarn at https://yarnpkg.com/en/docs/install".color(:green) ) abort end end desc "Ensure Node dependencies are installed" task check: ["yarn:available"] do unless system("yarn check --ignore-engines", out: File::NULL) warn( "Error: You have unmet dependencies. (`yarn check` command failed)".color(:red), "Run `yarn install` to install missing modules.".color(:green) ) abort end end desc "Install Node dependencies with Yarn" task install: ["yarn:available"] do unless system("yarn install --pure-lockfile --ignore-engines") abort "Error: Unable to install node modules.".color(:red) end end desc "Remove Node dependencies" task :clobber do warn "Purging ./node_modules directory".color(:red) FileUtils.rm_rf "node_modules" end end desc "Install Node dependencies with Yarn" task yarn: ["yarn:install"]