Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

vigour-fs

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vigour-fs

node's `fs` module with sugar on top + native support.

  • 1.0.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
9
increased by50%
Maintainers
1
Weekly downloads
 
Created
Source

vigour-fs

node's fs module (graceful-fs, actually) with sugar on top + native support.

Versioning

This module respects the semver versioning methodology

Supported platforms

platformsupport
nodefull
iOSpartial
Androidpartial
Windows Phonepartial
othernone

This document describes only the sugar. For the meat and potatoes, refer to the nodejs docs.

Installation

npm install vigour-fs

Usage

Same as node's fs module, e.g.

var fs = require('vigour-fs');

fs.readFile('somefile.txt', 'utf8', function(err, data) {
  console.log(data, err)
})

fs.writeFile('somefile.txt', 'some data', function(err) {
  console.log(err)
})

Modification to node's fs "API"

All methods provided in vigour-fs that also exist in fs should behave exactly the same, except for these extra features:

mkdirp option

fs.writeFile can accept a mkdirp option, which will create the necessary subdirectories for the specified path to exist (using the mkdirp module).

fs.writeFile("path/with/inexistent/directories/file.txt"
, "Hello World"
, { mkdirp: true }
, function (err) {
  if (!err) {
    console.log("File will be written to specified path, with subdirectories created as needed")
  }
})

read from URL

fs.readFile and fs.writeFile can accept a URL as path, in which case they will perform a GET request to that url.

fs.readFile('http://perdu.com', 'utf8', function (err, data) {
  if (!err) {
    console.log("html from perdu.com", data)
  }
})
fs.writeFile('perdu.html', 'http://perdu.com', 'utf8', function (err) {
  if (!err) {
    console.log("done")
  }
})

This comes with extra options.

OptionPossible valuesDefaultDescription
url
  • true
  • false
trueWhether to treat path as a url. If false, treats path as a local file path. Otherwise, treats path as a url if and only if it starts with http:// or https://
followRedirects
  • true
  • false
trueWhether to follow redirects (301, 302, 303, 305, 307, 308)
maxTriesPositive integer above 01Number of attempts to make in total. If over 1, will retry the request if the response's status code is 500 or 503. Use the retryOn404 option to retry on 404 as well (not recommended).
retryDelayPositive integer500Time to wait before retrying the first time, in milliseconds. Subsequent attempts may use a different delay, dependant on the retryDelayType option. The delay may also be given by a 'retry-after' header accompanying a 503 response (see the respectRetryAfter option). In any case, the delay is capped by the maxRetryDelay option.
retryDelayType
  • exp
  • linear
  • constant
expTime to wait before retrying, in milliseconds, as a function of the attempt number (tryNb) and the original delay (retryDelay) specified in the retryDelay option
exp
retryDelay * 2 ^ tryNb
linear
retryDelay * tryNb
anything else
retryDelay
respectRetryAfter
  • true
  • false
trueWhether to respect the delay provided in a retry-after header when receiving a 503 response. True will respect the received delay, false will ignore it and use the retryDelayType and retryDelay options to determine the delay. In any case, the delay is capped by the maxRetryDelay option.
maxRetryDelayPositive integer above 060000Maximum time to wait before retrying, in milliseconds. Overrides Retry-After response-headers (see the respectRetryAfter) option and normal retry delay increments (see the retryDelay) option.
retryOn404
  • true
  • false
falseWhether to retry when response status code is 404. This looks stupid, and most of the time it will be. It is recommended to leave the default in for this one.
Examples
fs.readFile('http://perdu.com'
  , {
    encoding: 'utf8'
    , maxTries: 5
    , retryDelayType: 'exp'
    , retryDelay: 100
    , retryOn404: true
    , respectRetryAfter: true
  }
  , function(err, str) {
    if (!err) {
      console.log('Contents:', str)
    }
  })
fs.writeFile('file.txt'
  , 'http://perdu.com'
  , {
    encoding: 'utf8'
    , maxTries: 5
    , retryDelayType: 'exp'
    , retryDelay: 100
    , retryOn404: true
    , respectRetryAfter: true
  }
  , function(err) {
    if (!err) {
      console.log("file.txt now contains the html from perdu.com")
    }
  })
fs.writeFile('file.txt'
  ,'http://perdu.com'
  , { url: false }
  , function(err) {
    if (!err) {
      console.log('file.txt now contains the string "http://perdu.com"')
    }
  })

New methods

fs.remove( path, callback )

Remove a file or directory recursively using the rimraf module

ArgumentTypeDescription
pathStringpath
callbackfunction (err)Callback
fs.remove('someDirectory', function(err) {
  if (!err) {
    console.log('success!')
  }
})

fs.remove('someFile.txt', function(err) {
  if (!err) {
    console.log('success!')
  }
})

fs.mkdirp( path, [ options ], callback)

Create any necessary subdirectories to allow path to exist. Also see fs.writeFile's mkdirp option.

ArgumentTypeDefaultDescription
pathStringpath to create
optionsMode0777
callbackfunction (err)Callback
fs.mkdirp('path/with/inexistent/directories', function (err) {
  if (!err) {
    console.log("All subdirectories have been created")
  }
})

fs.readJSON( path, [ options ], callback)

Reads a file and JSON.parses it

fs.readJSON('somefile.json', function (err, obj) {
  if (!err) {
      console.log(obj.key)
  }
})

fs.writeJSON( path, data, [ options ], callback)

JSON.stringifys data and writes the resulting string to path

fs.writeJSON('somefile.json', { key: 'value' }, function (err) {
  if (!err) {
    console.log('somefile.json contains `{"key":"value"}`')
  }
})

fs.editJSON( path, fn, [ options ], callback)

Reads a file, JSON.parses it, passes the result as a single parameter to fn, and writes whatever fn returns to that same file.

fs.editJSON('somefile.json'
, function (obj) {
  obj.x += 1
  return obj
}
, function (err) {
  if (!err) {
    console.log("done")
  }
})

fn can also return a promise

fs.editJSON('somefile.json'
, function (obj) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      obj.x += 1
      resolve(obj)
    }, 500)
  })
})

Supported on native

  • fs.readFile
  • fs.writeFile
  • fs.readdir
  • fs.mkdir
  • fs.rmdir
  • fs.rename
  • fs.unlink
  • fs.exists
  • fs.stat (Only supports creation date, modification date and accessed date, all of which are Date objects)
  • fs.remove

Native only

fs.rootDir

Root directory of the filesystem

console.log(fs.rootDir)

License

ISC

Keywords

FAQs

Package last updated on 26 Aug 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc