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.
		
		
		
		
			
				
					36 lines
				
				1.0 KiB
			
		
		
			
		
	
	
					36 lines
				
				1.0 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								# fs-write-stream-atomic
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Like `fs.createWriteStream(...)`, but atomic.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Writes to a tmp file and does an atomic `fs.rename` to move it into
							 | 
						||
| 
								 | 
							
								place when it's done.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								First rule of debugging: **It's always a race condition.**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## USAGE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```javascript
							 | 
						||
| 
								 | 
							
								var fsWriteStreamAtomic = require('fs-write-stream-atomic')
							 | 
						||
| 
								 | 
							
								// options are optional.
							 | 
						||
| 
								 | 
							
								var write = fsWriteStreamAtomic('output.txt', options)
							 | 
						||
| 
								 | 
							
								var read = fs.createReadStream('input.txt')
							 | 
						||
| 
								 | 
							
								read.pipe(write)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// When the write stream emits a 'finish' or 'close' event,
							 | 
						||
| 
								 | 
							
								// you can be sure that it is moved into place, and contains
							 | 
						||
| 
								 | 
							
								// all the bytes that were written to it, even if something else
							 | 
						||
| 
								 | 
							
								// was writing to `output.txt` at the same time.
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### `fsWriteStreamAtomic(filename, [options])`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* `filename` {String} The file we want to write to
							 | 
						||
| 
								 | 
							
								* `options` {Object}
							 | 
						||
| 
								 | 
							
								  * `chown` {Object} User and group to set ownership after write
							 | 
						||
| 
								 | 
							
								    * `uid` {Number}
							 | 
						||
| 
								 | 
							
								    * `gid` {Number}
							 | 
						||
| 
								 | 
							
								  * `encoding` {String} default = 'utf8'
							 | 
						||
| 
								 | 
							
								  * `mode` {Number} default = `0666`
							 | 
						||
| 
								 | 
							
								  * `flags` {String} default = `'w'`
							 | 
						||
| 
								 | 
							
								
							 |