npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

fsxt

v15.2.0

Published

fs module extensions. it's fs-extra on fs-extra

Downloads

71

Readme

fsxt

Improved fork of fs-extra with extra [sic] features! fsxt provides support for Node 16 and above. Node 17 is required for better feature support.

npm Node.js CI GitHub issues GitHub closed issues GitHub pull requests GitHub closed pull requests GitHub contributors Licensed under MIT Maintenance

Installation

npm install fsxt

pnpm install fsxt

yarn add fsxt

Or install with your preferred package manager (yarn, pnpm, ...)

Usage

fsxt is a mostly drop-in replacement for the node.js core fs module. All methods in fs can be used in their standard forms in fsxt, with some improvements.

You don't ever need to include the original fs module again:

const fs = require('fs'); // this is no longer necessary

you can now do this:

const fs = require('fsxt');

or if you prefer to make it clear that you're using fsxt and not fs, you may want to name your fs variable fsxt like so:

const fsxt = require('fsxt');

you can also keep both, but it's redundant:

const fs = require('fs');
const fsxt = require('fsxt');

Breaking changes from node:fs

The callback-based implementation of fs.exists now uses a propper error-first callback system like mz/fs.

Improvements on node:fs

All the improvements from mz/fs are included, which also includes improvements from graceful-fs.

Most methods are async by default, returning a Promise that resolves to the method's result, or rejects if the operation fails.

Sync methods on the other hand will throw if an error occurs, and directly return the resulting value to the caller if the operation succeeds.

You can also use the methods in the legacy node.js form, passing a callback as the last parameter, as a function that takes (error, result) parameters.

Example use:

const fs = require('fsxt');
// or
// import * as fs from 'fsxt';

// Async with promises:
fs.copy('/tmp/myfile', '/tmp/mynewfile')
  .then(() => console.log('success!'))
  .catch(err => console.error(err));

// Async with callbacks:
fs.copy('/tmp/myfile', '/tmp/mynewfile', err => {
  if (err) return console.error(err);
  console.log('success!');
});

// Sync:
try {
  fs.copySync('/tmp/myfile', '/tmp/mynewfile');
  console.log('success!');
} catch (err) {
  console.error(err);
}

// Async/Await:
async function copyFiles() {
  try {
    await fs.copy('/tmp/myfile', '/tmp/mynewfile');
    console.log('success!');
  } catch (err) {
    console.error(err);
  }
}

copyFiles();

Methods

The documentation is available at https://uwx-node-modules.github.io/fsxt/. Also, the package is fully typed with TypeScript.

Third Party

File / Directory Watching

If you want to watch for changes to files or directories, then you should use chokidar.

Misc.

  • mfs - Monitor your fsxt calls.

Hacking on fsxt

Do you want to hack on fsxt? Well, you probably shouldn't. Still, you can go ahead and send a PR.

Please, no changes to anything in the lib folder; the contents of that folder are taken entirely verbatim from fs-extra, so they should be submitted upstream.

Running the Test Suite

fsxt contains like at least 4 tests that pass.

  • npm run lint: runs eslint
  • npm run test: runs the tests
  • npm run test-no-fse: runs the tests, except for fs-extra tests

Windows

If you run the tests on the Windows and receive a lot of symbolic link EPERM permission errors, it's because on Windows you need elevated privilege to create symbolic links. You can either run the tests as Administrator or run npm run test-no-fse to test only fsxt-exclusive methods, which doesn't include symbolic links

Legal

Licensed under MIT. Full license text available at LICENSE.txt

fs-extra is copyright (c) 2011-2017 JP Richardson

fsxt is copyright © 2016-2018 uwx, some rights reserved.

Parts of the documentation were taken from other modules and the Node.js fs module. Relevant licenses are included at the following locations:

fs-extra and fsxt are not endorsed by or affiliated with Joyent or the Node.js Foundation. fsxt is not endorsed by or affiliated with JP Richardson.