GithubHelp home page GithubHelp logo

fs-extra-promise's Introduction

fs-extra-promise.js

Node file system library and fs-extra module promisified with bluebird

Current status

NPM version Build Status Dependency Status Dev dependency Status Coverage Status

API is stable. No tests at present but it seems to work fine!

Usage

This module is a drop-in replacement for the native node file system module and the augmented fs-extra module.

Additionally, it creates promisified versions of all fs's and fs-extra's async methods, using bluebird. These methods are named the same as the original fs/fs-extra methods with 'Async' added to the end of the method names.

So instead of:

var fs = require('fs');
fs.readFile(path, function(err, data) {
	console.log(data);
});

You can now:

var fs = require('fs-extra-promise');
fs.readFileAsync(path).then(function(data) {
	console.log(data);
});

All original fs and fs-extra methods are included unmodified.

isDirectory() methods

For convenience, additional methods isDirectory(), isDirectorySync() and isDirectoryAsync() are provided.

These are are shortcuts for doing fs.stat() followed by running isDirectory() on the result returned by stat().

usePromise() method

Creates a new instance of fs-extra-promise, which uses the Promise implementation provided.

var Bluebird = require('bluebird');
var fs = require('fs-extra-promise').usePromise(Bluebird);

// now use `fs-extra-promise` in the usual way
var promise = fs.readFileAsync(path);

console.log(promise instanceof Bluebird); // true

This can be useful for:

  • using a different version of bluebird
  • using a Promise implementation that supports cls
  • using an augmented version of Bluebird like bluebird-extra

useFs() method

Creates a new instance of fs-extra-promise, promisifying the provide version of fs-extra.

Most useful if you want to use a specific version of fs-extra.

var fs = require('fs-extra-promise').useFs(require('fs-extra'));

Tests

Use npm test to run the tests. Use npm run cover to check coverage.

There aren't any tests at present, except for running jshint on the code.

Changelog

See changelog.md

Issues

If you discover a bug, please raise an issue on Github. https://github.com/overlookmotel/fs-extra-promise/issues

fs-extra-promise's People

Contributors

overlookmotel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

fs-extra-promise's Issues

Use with TypeScript!?

I can't seem to figure out how to use this library with TypeScript (and async/await) .
I'm told either that it returns void or that it returns a promise which then seems to resolve to void when I await for it. Please advice.

import { readJson, readJsonSync } from 'fs-extra-promise';

  // sync
  loadPackage() : Object {
    try {
      return readJsonSync(this.path);
    } catch (err) {      
    }  
  }

Trying with async:

  async loadPackage() : Promise<Object> {
    try {
      return readJson(this.path);
    } catch (err) {
      return {};      
    }  
  }

Also tried return readJson(this.path).then(obj => return obj); to no avail.

writeFile, writeJson resolve before finishing writing

When I try to use these methods they will work, but they call resolve before they actually write their files. So what happens is that the next chain expects the file to be there, and work on it, except I get a ENOENT.

The only way I cant get this to work is to go back to default fs.

var Promise = require("bluebird")

var fs = require("fs");
//works
return new Promise(function(resolve, reject){
    fs.writeFile(currentJsonPath, "{}", function(e, data){
        if (e){
            reject(e)
        } else {
            resolve()
        }
    });
});

//writes file eventually, but calls resolve early
var fsExtra = Promise.promisifyAll(require("fs-extra"));
return fsExtra.writeFile(currentJsonPath, "{}");

//writes file eventually, but calls resolve early
var fsExtraPromise= require("fs-extra-promise");
return fsExtraPromise.writeFile(currentJsonPath, "{}");

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on all branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because we are using your CI build statuses to figure out when to notify you about breaking changes.

Since we did not receive a CI status on the greenkeeper/initial branch, we assume that you still need to configure it.

If you have already set up a CI for this repository, you might need to check your configuration. Make sure it will run on all new branches. If you don’t want it to run on every branch, you can whitelist branches starting with greenkeeper/.

We recommend using Travis CI, but Greenkeeper will work with every other CI service as well.

Weird bug: promisify .readJson individually fixes problems

I was surprised to see that fs-extra-promise promisifies methods individually, because I am experiencing problems with the .readJson method from fs-extra-promise, but the problem goes away if I use the fs package and promisify that method individually. See my thread at jprichardson/node-fs-extra#156

Is someone able to reproduce my problem and figure out what is going on?

Note that I am using promises with async/await functions in Babel. That shouldn't matter though.

Update fs-extra to ^3.0.0

fs-extra has been updated yet again. Please update!

PS: They have added a promise implementation but I do not think it conflicts with the one here.

.moveAsync options ignored

Hi,

using fs.moveAsync, options { overwrite: true } are ignored, so if the destination exists, it reject with error EEXIST

please fix like follow

fs.moveAsync = function(src, dst, options) => {
  return new Promise((resolve, reject) {
    fs.move(src, dst, options, (err) => {
      if (err) {
        reject(err)
        return 
      }
      resolve()
    })
  })
}

With co, fs.copyAsync cause CPU 100%

I use co to make use of yield

co(function*(){
  yield fs.copyAsync(target, destination);
})()

but fs.copySync works fine
fs-extra-promise version: 0.1.0

Update fs-extra version to latest

fs-extra used by this module is currently v0.30.0. This is now well behind - current is v2.1.2.

Need to update the dependency, but problem is that it needs checking first if any new methods have been added that need to be promisified / any sync methods that need to be excepted from promisification.

@CyberiumShadow, @andyhu, @rifler, @ReFruity you all expressed interest in the update in PR #21. Would any of you have any time to investigate.

I'm really keen to get this done, but completely tied up and not sure when I'll get to it myself.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.