You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

precheck.js 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const npmCheck = require('npm-check')
  2. const compareVersions = require('compare-versions');
  3. const exec = require('child_process').exec;
  4. npmCheck()
  5. .then(currentState => {
  6. packages = currentState.get('packages')
  7. packages.forEach(p => {
  8. const { moduleName, latest, installed } = p
  9. if (moduleName === 'expo' && compareVersions(latest, installed) >= 1) {
  10. console.log('\x1b[31m', `Latest version of expo is ${latest}, but you are running ${installed}. Please run: expo upgrade`, '\x1b[0m')
  11. }
  12. })
  13. })
  14. .then(() => new Promise((resolve) => {
  15. exec('node -v', (err, nodeVersion, stdErr) => {
  16. nodeVersion = nodeVersion.trim().substring(1)
  17. const supportedNode = '14.17.0'
  18. if (compareVersions(supportedNode, nodeVersion) >= 1) {
  19. console.log('\x1b[31m', `You should have node version ${supportedNode} or later. Please download the latest version`, '\x1b[0m')
  20. process.exit(1)
  21. }
  22. resolve()
  23. })
  24. }))
  25. .then(() => new Promise((resolve) => {
  26. exec('npm -v', (err, npmVersion, stdErr) => {
  27. npmVersion = npmVersion.trim()
  28. const supportedNpm = '7.16.0'
  29. if (compareVersions(supportedNpm, npmVersion) >= 1) {
  30. console.log('\x1b[31m', `You should have npm version ${supportedNpm} or later. Please run: npm install -g npm@latest`, '\x1b[0m')
  31. process.exit(1)
  32. }
  33. resolve()
  34. })
  35. }))
  36. .then(() => new Promise((resolve) => {
  37. exec('expo-cli --version', (err, expoCliVersion, stdErr) => {
  38. const supportedExpoCli = '4.5.2'
  39. expoCliVersion = expoCliVersion.trim()
  40. if (err || compareVersions(supportedExpoCli, expoCliVersion) >= 1) {
  41. console.log('\x1b[31m', `You should have globally installed expo-cli version ${supportedExpoCli} or later. Please run: npm i -g expo-cli@latest`, '\x1b[0m')
  42. process.exit(1)
  43. }
  44. resolve()
  45. })
  46. }))