diff --git a/README.md b/README.md index 1e64955..af59e42 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,71 @@ [![NPM version](http://img.shields.io/npm/v/create-index.svg?style=flat-square)](https://www.npmjs.org/package/create-index) [![Travis build status](http://img.shields.io/travis/gajus/create-index/master.svg?style=flat-square)](https://travis-ci.org/gajus/create-index) [![js-canonical-style](https://img.shields.io/badge/code%20style-canonical-blue.svg?style=flat-square)](https://github.com/gajus/canonical) + +`create-index` program creates ES6 `./index.js` file in target directories that imports and exports all sibling files and directories. + +## Implementation + +`create-index` program will look into the target directory. + +If there is no `./index.js`, it will create a new file, e.g. + +```js +'create index'; +``` + +Created index file must start with `'create index';\n\n`. This is used to make sure that `create-index` does not accidentally overwrite your local files. + +If there are sibling files, index file will import them and export, e.g. + +```sh +children-directories-and-files git:(master) ✗ ls -lah +total 0 +drwxr-xr-x 5 gajus staff 170B 6 Jan 15:39 . +drwxr-xr-x 10 gajus staff 340B 6 Jan 15:53 .. +drwxr-xr-x 2 gajus staff 68B 6 Jan 15:29 bar +drwxr-xr-x 2 gajus staff 68B 6 Jan 15:29 foo +-rw-r--r-- 1 gajus staff 0B 6 Jan 15:29 foo.js +``` + +Given the above directory contents, index will be: + +```js +'create index'; + +import bar from './bar'; +import foo from './foo.js'; + +export { + bar, + foo +}; +``` + +If there are files with the same name as directories in the same directory, file will take precedence. + +Directories that do not have `./index.js` in themselves will be excluded. + +## Using CLI Program + +```sh +create-index ./directory1 ./directory2 ./directory3 ... +``` + +## Using `create-index` Programmatically + +```js +import { + writeIndex +} from 'create-index'; + +/** + * @type {Function} + * @param {Array} directoryPaths + * @throws {Error} Directory "..." does not exist. + * @throws {Error} "..." is not a directory. + * @throws {Error} "..." unsafe index. + * @returns {boolean} + */ +writeIndex; +``` diff --git a/package.json b/package.json index dde3e02..fb31d95 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,9 @@ { "name": "create-index", - "description": "", + "description": "Creates ES6 ./index.js file in target directories that imports and exports all sibling files and directories.", "version": "0.0.0", "main": "./dist/index.js", + "bin": "./dist/bin/create-index.js", "repository": { "type": "git", "url": "https://github.com/gajus/create-index" @@ -29,6 +30,11 @@ "watch-build": "npm run pragmatist watch-build" }, "devDependencies": { - "pragmatist": "^2.3.67" + "chai": "^3.4.1", + "pragmatist": "^2.3.70" + }, + "dependencies": { + "lodash": "^3.10.1", + "yargs": "^3.31.0" } } diff --git a/src/index.js b/src/index.js index e69de29..43f759e 100644 --- a/src/index.js +++ b/src/index.js @@ -0,0 +1,14 @@ +'create index'; + +import createIndexCode from './createIndexCode.js'; +import readDirectory from './readDirectory.js'; +import validateTargetDirectory from './validateTargetDirectory.js'; +import writeIndex from './writeIndex.js'; + +export { + createIndexCode, + readDirectory, + validateTargetDirectory, + writeIndex +}; +