We use the globally installed yarn now. The local yarn was used in `check-environment.js` only, which results in the `--integrity` check always failing (if dependencies were installed with the global yarn).
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google Inc. All Rights Reserved.
 | |
|  *
 | |
|  * Use of this source code is governed by an MIT-style license that can be
 | |
|  * found in the LICENSE file at https://angular.io/license
 | |
|  */
 | |
| 
 | |
| 'use strict';
 | |
| 
 | |
| var fs = require('fs');
 | |
| var path = require('path');
 | |
| var childProcess = require('child_process');
 | |
| 
 | |
| var PROJECT_ROOT = path.join(__dirname, '../../');
 | |
| 
 | |
| // tslint:disable:no-console
 | |
| function checkNodeModules(logOutput, purgeIfStale) {
 | |
|   var yarnCheck = childProcess.spawnSync(
 | |
|       'yarn check --integrity', {shell: true, cwd: path.resolve(__dirname, '../..')});
 | |
| 
 | |
|   var nodeModulesOK = yarnCheck.status === 0;
 | |
|   if (nodeModulesOK) {
 | |
|     if (logOutput) console.log(':-) npm dependencies are looking good!');
 | |
|   } else {
 | |
|     if (logOutput) console.error(':-( npm dependencies are stale or in an in unknown state!');
 | |
|     if (purgeIfStale) {
 | |
|       if (logOutput) console.log('    purging...');
 | |
|       _deleteDir(path.join(PROJECT_ROOT, 'node_modules'));
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   return nodeModulesOK;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Custom implementation of recursive `rm` because we can't rely on the state of node_modules to
 | |
|  * pull in existing module.
 | |
|  */
 | |
| function _deleteDir(path) {
 | |
|   if (fs.existsSync(path)) {
 | |
|     var subpaths = fs.readdirSync(path);
 | |
|     subpaths.forEach(function(subpath) {
 | |
|       var curPath = path + '/' + subpath;
 | |
|       if (fs.lstatSync(curPath).isDirectory()) {
 | |
|         _deleteDir(curPath);
 | |
|       } else {
 | |
|         fs.unlinkSync(curPath);
 | |
|       }
 | |
|     });
 | |
|     fs.rmdirSync(path);
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| module.exports = checkNodeModules;
 |