55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# It Opens Stuff
 | 
						|
 | 
						|
That is, in your desktop environment. This will make *actual windows pop up*, with stuff in them:
 | 
						|
 | 
						|
```bash
 | 
						|
npm install opener -g
 | 
						|
 | 
						|
opener http://google.com
 | 
						|
opener ./my-file.txt
 | 
						|
opener firefox
 | 
						|
opener npm run lint
 | 
						|
```
 | 
						|
 | 
						|
Also if you want to use it programmatically you can do that too:
 | 
						|
 | 
						|
```js
 | 
						|
var opener = require("opener");
 | 
						|
 | 
						|
opener("http://google.com");
 | 
						|
opener("./my-file.txt");
 | 
						|
opener("firefox");
 | 
						|
opener("npm run lint");
 | 
						|
```
 | 
						|
 | 
						|
Plus, it returns the child process created, so you can do things like let your script exit while the window stays open:
 | 
						|
 | 
						|
```js
 | 
						|
var editor = opener("documentation.odt");
 | 
						|
editor.unref();
 | 
						|
// These other unrefs may be necessary if your OS's opener process
 | 
						|
// exits before the process it started is complete.
 | 
						|
editor.stdin.unref();
 | 
						|
editor.stdout.unref();
 | 
						|
editor.stderr.unref();
 | 
						|
```
 | 
						|
 | 
						|
## Use It for Good
 | 
						|
 | 
						|
Like opening the user's browser with a test harness in your package's test script:
 | 
						|
 | 
						|
```json
 | 
						|
{
 | 
						|
    "scripts": {
 | 
						|
        "test": "opener ./test/runner.html"
 | 
						|
    },
 | 
						|
    "devDependencies": {
 | 
						|
        "opener": "*"
 | 
						|
    }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
## Why
 | 
						|
 | 
						|
Because Windows has `start`, Macs have `open`, and *nix has `xdg-open`. At least [according to some person on StackOverflow](http://stackoverflow.com/q/1480971/3191). And I like things that work on all three. Like Node.js. And Opener.
 |