Socket
Socket
Sign inDemoInstall

klaw-sync

Package Overview
Dependencies
37
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    klaw-sync

Recursive, synchronous, and fast file system walker


Version published
Weekly downloads
2.3M
increased by0.13%
Maintainers
1
Install size
404 kB
Created
Weekly downloads
 

Package description

What is klaw-sync?

The klaw-sync npm package is a Node.js module that allows users to recursively walk ('klaw') through the file system synchronously. It is useful for tasks such as reading all files in a directory and its subdirectories, filtering files by certain criteria, and obtaining file stats in a synchronous manner.

What are klaw-sync's main functionalities?

Recursive file listing

This feature allows you to list all files and directories within a given directory recursively. The example code lists all paths within '/some/directory'.

const klawSync = require('klaw-sync');
const paths = klawSync('/some/directory');
console.log(paths);

Filtering files

This feature allows you to filter the files and directories based on a custom function. In the example, only '.txt' files are listed.

const klawSync = require('klaw-sync');
const path = require('path');
const filterFn = item => path.extname(item.path) === '.txt';
const txtFiles = klawSync('/some/directory', { filter: filterFn });
console.log(txtFiles);

Including file stats

This feature allows you to include file stats in the output. The example code lists directories (excluding files) within '/some/directory' and includes their stats.

const klawSync = require('klaw-sync');
const pathsWithStats = klawSync('/some/directory', { nofile: true, stats: true });
console.log(pathsWithStats);

Other packages similar to klaw-sync

Readme

Source

klaw-sync

npm Package Build Status windows Build status

Standard JavaScript

klaw-sync is a Node.js recursive file system walker, which is the synchronous counterpart of klaw. It lists all files and directories inside a directory recursively and returns an array of objects that each object has two properties: path and stats. path is the full path of the file or directory and stats is an instance of fs.Stats.

Install

npm i klaw-sync

Usage

klawSync(directory[, options])

  • directory {String}

  • options {Object} optional (all options are false by default)

  • ignore {String | Array<String>} any paths or micromatch patterns to ignore (can be string or an array of strings)

  • nodir {Boolean} return only files (ignore directories)

  • nofile {Boolean} return only directories (ignore files)

  • return: {Array<Object>} [{path: '', stats: {}}]

Examples

var klawSync = require('klaw-sync')
var paths = klawSync('/some/dir')
// paths = [{path: '/some/dir/dir1', stats: {}}, {path: '/some/dir/file1', stats: {}}]

catch error

var klawSync = require('klaw-sync')

var paths
try {
  paths = klawSync('/some/dir')
} catch (er) {
  console.error(er)
}
console.dir(paths)

files only

var klawSync = require('klaw-sync')
var files = klawSync('/some/dir', {nodir: true})
// files = [{path: '/some/dir/file1', stats: {}}, {path: '/some/dir/file2', stats: {}}]

directories only

var klawSync = require('klaw-sync')
var dirs = klawSync('/some/dir', {nofile: true})
// dirs = [{path: '/some/dir/dir1', stats: {}}, {path: '/some/dir/dir2', stats: {}}]

ignore node_modules

var klawSync = require('klaw-sync')
var paths = klawSync('/some/dir', {ignore: 'node_modules'})

ignore node_modules and .git using micromatch patterns

var klawSync = require('klaw-sync')
var paths = klawSync('/some/dir', {ignore: '{node_modules,.git}'})

ignore node_modules, .git and all *.js files using micromatch patterns

var klawSync = require('klaw-sync')
var paths = klawSync('/some/dir', {ignore: ['{node_modules,.git}', '*.js']})

Run tests

lint: npm run lint

unit test: npm run unit

lint & unit: npm test

Performance compare to other similar modules

The bm.js runs some basic benchmark tests for two cases, without --ignore (basic usage) and with --ignore, on these modules:

Just for fun, it turned out (as of January 25, 2017) for the most cases klaw-sync is faster than other modules!

#####run benchmark

To run benchmark, just specify the root --dir=. To ignore paths or patterns, use -i flag.

npm run benchmark -- --dir=/some/dir

npm run benchmark -- --dir=/some/dir -i "node_modules"

npm run benchmark -- --dir=/some/dir -i "node_modules" -i "*.js"

Credit

Special thanks to:

for their contribution and support.

License

Licensed under MIT

Keywords

FAQs

Last updated on 17 Feb 2017

Did you know?

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc