An open API service indexing awesome lists of open source software.

https://github.com/jonschlinkert/export-files

node.js utility for exporting a directory of files as modules.
https://github.com/jonschlinkert/export-files

directory export files javascript node nodejs require

Last synced: about 1 year ago
JSON representation

node.js utility for exporting a directory of files as modules.

Awesome Lists containing this project

README

          

# export-files [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/jonathanschlinkert?locale.x=en_US) [![NPM version](https://img.shields.io/npm/v/export-files.svg?style=flat)](https://www.npmjs.com/package/export-files) [![NPM monthly downloads](https://img.shields.io/npm/dm/export-files.svg?style=flat)](https://npmjs.org/package/export-files) [![NPM total downloads](https://img.shields.io/npm/dt/export-files.svg?style=flat)](https://npmjs.org/package/export-files) [![Tests](https://github.com/jonschlinkert/export-files/actions/workflows/test.yml/badge.svg)](https://github.com/jonschlinkert/export-files/actions/workflows/test.yml)

> node.js utility for exporting a directory of files as modules.

Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.

## Install

Install with [npm](https://www.npmjs.com/) (requires [Node.js](https://nodejs.org/en/) >=10):

```sh
$ npm install --save export-files
```

## Heads up!

Currently this library only works with `require`.

## Usage

Specify the directory with files to export:

**Example**

Given that `__dirname` has three files, `a.js`, `b.js`, and `c.js`:

```js
module.exports = require('export-files')(__dirname);
//=> { a: [getter], b: [getter], c: [getter] }
```

The second argment may be an object to intialize with. This is useful when you want to use export-files to extend an existing object.

```js
const utils = {};
utils.doSomething = () => {};
module.exports = require('export-files')(__dirname, utils);
//=> { doSomething: [function], a: [getter], b: [getter], c: [getter] }
```

## Options

### .ignoreDirs

Directories to ignore.

**Type:** `string|array`

**Default:** `['.git', 'node_modules', 'test', 'tmp', 'temp', 'vendor']`

**Example**

The following examples shows how to override the default values and, in this case, not ignore any directories.

```js
const requires = require('export-files');
module.exports = requires(__dirname, undefined, { ignoreDirs: [] });
```

### .recursive

Recurse into child directories.

**Type:** `boolean`

**Default:** `false`

**Example**

```js
const requires = require('export-files');
module.exports = requires(__dirname, undefined, { recursive: true });
```

### .filter

Function to exclude files from the result.

**Type:** `function`

**Default:** Excludes files named `index.js`

**Example**

```js
const requires = require('export-files');
module.exports = requires(__dirname, undefined, file => file.name !== 'a.js');
```

### .case

Modify the casing of keys for exported files.

**Type:** `string`, `array`, or `function`

`.case` may be defined as a function to use custom casing on exported names.

If defined as an array or string, valid values are any of the following:

* `stem` - the file name without modification, excluding file extension
* `name` - alias for `stem`
* `basename` - the full file name, including file extension
* `pascal` - pasacal case `stem`, useful for class names
* `camel` - camel case `stem`
* `lower` - lower case `stem`
* `snake` - snake case `stem`
* `auto` - (default) attempts to automatically determine casing when exports might be a mixture of casings, like class names and camel case method names.

You may define multiple cases.

**Default:** `auto`

**Example**

```js
const requires = require('export-files');
module.exports = requires(__dirname, undefined, { case: ['camel', 'pascal'] });
```

## Changes

**v3.0.0 - breaking changes**

* Improvements were made to support recursion and renaming keys. See readme for more details and available options.

**v0.2.0 - breaking changes**

* Non-javascript files are no longer handled. That functionality was moved to [to-exports](https://github.com/jonschlinkert/to-exports). This decision was made to keep this lib as fast as possible.
* This library no longer takes any arguments besides the directory to read.

## About

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).

Running Tests

Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:

```sh
$ npm install && npm test
```

Building docs

_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_

To generate the readme, run the following command:

```sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
```

### Related projects

You might also be interested in these projects:

* [export-dirs](https://www.npmjs.com/package/export-dirs): Export directories and their files as node.js modules. | [homepage](https://github.com/jonschlinkert/export-dirs "Export directories and their files as node.js modules.")
* [file-reader](https://www.npmjs.com/package/file-reader): Read a glob of files, dynamically choosing the reader or requiring the files based on… [more](https://github.com/jonschlinkert/file-reader) | [homepage](https://github.com/jonschlinkert/file-reader "Read a glob of files, dynamically choosing the reader or requiring the files based on the file extension.")
* [map-files](https://www.npmjs.com/package/map-files): Return an object for a glob of files. Pass a `rename` function for the keys… [more](https://github.com/jonschlinkert/map-files) | [homepage](https://github.com/jonschlinkert/map-files "Return an object for a glob of files. Pass a `rename` function for the keys, or a `parse` function for the content, allowing it to be used for readable or require-able files.")
* [to-exports](https://www.npmjs.com/package/to-exports): Create exports from a directory of non-javascript or javascript files. | [homepage](https://github.com/jonschlinkert/to-exports "Create exports from a directory of non-javascript or javascript files.")

### Contributors

| **Commits** | **Contributor** |
| --- | --- |
| 43 | [jonschlinkert](https://github.com/jonschlinkert) |
| 4 | [doowb](https://github.com/doowb) |

### Author

**Jon Schlinkert**

* [GitHub Profile](https://github.com/jonschlinkert)
* [Twitter Profile](https://twitter.com/jonschlinkert)
* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)

### License

Copyright © 2021, [Jon Schlinkert](https://github.com/jonschlinkert).
Released under the [MIT License](LICENSE).

***

_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 27, 2021._