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.
- Host: GitHub
- URL: https://github.com/jonschlinkert/export-files
- Owner: jonschlinkert
- License: mit
- Created: 2014-11-15T09:00:27.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2021-07-20T12:02:22.000Z (almost 5 years ago)
- Last Synced: 2024-10-30T02:18:51.134Z (over 1 year ago)
- Topics: directory, export, files, javascript, node, nodejs, require
- Language: JavaScript
- Size: 53.7 KB
- Stars: 21
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# export-files [](https://paypal.me/jonathanschlinkert?locale.x=en_US) [](https://www.npmjs.com/package/export-files) [](https://npmjs.org/package/export-files) [](https://npmjs.org/package/export-files) [](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._