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.
		
		
		
		
			
				
					72 lines
				
				2.6 KiB
			
		
		
			
		
	
	
					72 lines
				
				2.6 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								# arch [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[travis-image]: https://img.shields.io/travis/feross/arch/master.svg
							 | 
						||
| 
								 | 
							
								[travis-url]: https://travis-ci.org/feross/arch
							 | 
						||
| 
								 | 
							
								[npm-image]: https://img.shields.io/npm/v/arch.svg
							 | 
						||
| 
								 | 
							
								[npm-url]: https://npmjs.org/package/arch
							 | 
						||
| 
								 | 
							
								[downloads-image]: https://img.shields.io/npm/dm/arch.svg
							 | 
						||
| 
								 | 
							
								[downloads-url]: https://npmjs.org/package/arch
							 | 
						||
| 
								 | 
							
								[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
							 | 
						||
| 
								 | 
							
								[standard-url]: https://standardjs.com
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Better `os.arch()` for node and the browser -- detect OS architecture
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[](https://saucelabs.com/u/arch2)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This module is used by [WebTorrent Desktop](http://webtorrent.io/desktop) to
							 | 
						||
| 
								 | 
							
								determine if the user is on a 32-bit vs. 64-bit operating system to offer the
							 | 
						||
| 
								 | 
							
								right app installer.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In Node.js, the `os.arch()` method (and `process.arch` property) returns a string
							 | 
						||
| 
								 | 
							
								identifying the operating system CPU architecture **for which the Node.js binary
							 | 
						||
| 
								 | 
							
								was compiled**.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This is not the same as the **operating system CPU architecture**. For example,
							 | 
						||
| 
								 | 
							
								you can run Node.js 32-bit on a 64-bit OS. In that situation, `os.arch()` will
							 | 
						||
| 
								 | 
							
								return a misleading 'x86' (32-bit) value, instead of 'x64' (64-bit).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Use this package to get the actual operating system CPU architecture.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**BONUS: This package works in the browser too.**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## install
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								npm install arch
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## usage
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								var arch = require('arch')
							 | 
						||
| 
								 | 
							
								console.log(arch()) // always returns 'x64' or 'x86'
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In the browser, there is no spec that defines where this information lives, so we
							 | 
						||
| 
								 | 
							
								check all known locations including `navigator.userAgent`, `navigator.platform`,
							 | 
						||
| 
								 | 
							
								and `navigator.cpuClass` to make a best guess.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If there is no *affirmative indication* that the architecture is 64-bit, then
							 | 
						||
| 
								 | 
							
								32-bit will be assumed. This makes this package perfect for determining what
							 | 
						||
| 
								 | 
							
								installer executable to offer to desktop app users. If there is ambiguity, then
							 | 
						||
| 
								 | 
							
								the user will get the 32-bit installer, which will work fine even for a user with
							 | 
						||
| 
								 | 
							
								a 64-bit OS.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								For reference, `x64` means 64-bit and `x86` means 32-bit.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Here is some history behind these naming conventions:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- https://en.wikipedia.org/wiki/X86
							 | 
						||
| 
								 | 
							
								- https://en.wikipedia.org/wiki/IA-32
							 | 
						||
| 
								 | 
							
								- https://en.wikipedia.org/wiki/X86-64
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Node.js proposal - `os.sysarch()`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Note: There is
							 | 
						||
| 
								 | 
							
								[a proposal](https://github.com/nodejs/node-v0.x-archive/issues/2862#issuecomment-103942051)
							 | 
						||
| 
								 | 
							
								to add this functionality to Node.js as `os.sysarch()`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## license
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								MIT. Copyright (c) [Feross Aboukhadijeh](http://feross.org).
							 |