mirror of
				https://github.com/lingble/twenty.git
				synced 2025-10-29 20:02:29 +00:00 
			
		
		
		
	Add nxw.js file (#8362)
It makes the Nx VS Code extension work on my computer. The generated file says it must be commited.
This commit is contained in:
		 Baptiste Devessier
					Baptiste Devessier
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							b627c55b9a
						
					
				
				
					commit
					452a30fc06
				
			
							
								
								
									
										115
									
								
								.nx/nxw.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								.nx/nxw.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,115 @@ | |||||||
|  | "use strict"; | ||||||
|  | // This file should be committed to your repository! It wraps Nx and ensures | ||||||
|  | // that your local installation matches nx.json. | ||||||
|  | // See: https://nx.dev/recipes/installation/install-non-javascript for more info. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | const fs = require('fs'); | ||||||
|  | const path = require('path'); | ||||||
|  | const cp = require('child_process'); | ||||||
|  | const installationPath = path.join(__dirname, 'installation', 'package.json'); | ||||||
|  | function matchesCurrentNxInstall(currentInstallation, nxJsonInstallation) { | ||||||
|  |     if (!currentInstallation.devDependencies || | ||||||
|  |         !Object.keys(currentInstallation.devDependencies).length) { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |     try { | ||||||
|  |         if (currentInstallation.devDependencies['nx'] !== | ||||||
|  |             nxJsonInstallation.version || | ||||||
|  |             require(path.join(path.dirname(installationPath), 'node_modules', 'nx', 'package.json')).version !== nxJsonInstallation.version) { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |         for (const [plugin, desiredVersion] of Object.entries(nxJsonInstallation.plugins || {})) { | ||||||
|  |             if (currentInstallation.devDependencies[plugin] !== desiredVersion) { | ||||||
|  |                 return false; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |     catch { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | function ensureDir(p) { | ||||||
|  |     if (!fs.existsSync(p)) { | ||||||
|  |         fs.mkdirSync(p, { recursive: true }); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | function getCurrentInstallation() { | ||||||
|  |     try { | ||||||
|  |         return require(installationPath); | ||||||
|  |     } | ||||||
|  |     catch { | ||||||
|  |         return { | ||||||
|  |             name: 'nx-installation', | ||||||
|  |             version: '0.0.0', | ||||||
|  |             devDependencies: {}, | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | function performInstallation(currentInstallation, nxJson) { | ||||||
|  |     fs.writeFileSync(installationPath, JSON.stringify({ | ||||||
|  |         name: 'nx-installation', | ||||||
|  |         devDependencies: { | ||||||
|  |             nx: nxJson.installation.version, | ||||||
|  |             ...nxJson.installation.plugins, | ||||||
|  |         }, | ||||||
|  |     })); | ||||||
|  |     try { | ||||||
|  |         cp.execSync('npm i', { | ||||||
|  |             cwd: path.dirname(installationPath), | ||||||
|  |             stdio: 'inherit', | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     catch (e) { | ||||||
|  |         // revert possible changes to the current installation | ||||||
|  |         fs.writeFileSync(installationPath, JSON.stringify(currentInstallation)); | ||||||
|  |         // rethrow | ||||||
|  |         throw e; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | function ensureUpToDateInstallation() { | ||||||
|  |     const nxJsonPath = path.join(__dirname, '..', 'nx.json'); | ||||||
|  |     let nxJson; | ||||||
|  |     try { | ||||||
|  |         nxJson = require(nxJsonPath); | ||||||
|  |         if (!nxJson.installation) { | ||||||
|  |             console.error('[NX]: The "installation" entry in the "nx.json" file is required when running the nx wrapper. See https://nx.dev/recipes/installation/install-non-javascript'); | ||||||
|  |             process.exit(1); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     catch { | ||||||
|  |         console.error('[NX]: The "nx.json" file is required when running the nx wrapper. See https://nx.dev/recipes/installation/install-non-javascript'); | ||||||
|  |         process.exit(1); | ||||||
|  |     } | ||||||
|  |     try { | ||||||
|  |         ensureDir(path.join(__dirname, 'installation')); | ||||||
|  |         const currentInstallation = getCurrentInstallation(); | ||||||
|  |         if (!matchesCurrentNxInstall(currentInstallation, nxJson.installation)) { | ||||||
|  |             performInstallation(currentInstallation, nxJson); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     catch (e) { | ||||||
|  |         const messageLines = [ | ||||||
|  |             '[NX]: Nx wrapper failed to synchronize installation.', | ||||||
|  |         ]; | ||||||
|  |         if (e instanceof Error) { | ||||||
|  |             messageLines.push(''); | ||||||
|  |             messageLines.push(e.message); | ||||||
|  |             messageLines.push(e.stack); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             messageLines.push(e.toString()); | ||||||
|  |         } | ||||||
|  |         console.error(messageLines.join('\n')); | ||||||
|  |         process.exit(1); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | if (!process.env.NX_WRAPPER_SKIP_INSTALL) { | ||||||
|  |     ensureUpToDateInstallation(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | require('./installation/node_modules/nx/bin/nx'); | ||||||
		Reference in New Issue
	
	Block a user