2.1.0 • Published 6 years ago

fx43 v2.1.0

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

fx43-node

MEAN Module Build Status npm version Node.js Version

Detecting changed files via caching file modification time.

Installation

# npm
npm install --save fx43

# yarn
yarn add fx43

Run tests:

# npm
npm test

# yarn
yarn test

Usage

Fx43 offers 3 ways to track files:

  • All files mode: all files are tracked.
  • Ignore file mode: like .gitignore, tracks files in respect to nested ignore files.
  • Custom mode: tracks files filtered by custom JavaScript functions.

All files mode

import { startAllFilesModeAsync } from 'fx43';
// ES5: const startAllFilesModeAsync = require('fx43').startAllFilesModeAsync;

startAllFilesModeAsync(
  rootDirectory: string,
  cacheDirectory: string,
  ignoreCache: boolean = false,
): Promise<string[]>;

Ignore file mode

import { startIgnoreFileModeAsync } from 'fx43';
// ES5: const startIgnoreFileModeAsync = require('fx43').startIgnoreFileModeAsync;

startIgnoreFileModeAsync(
  rootDirectory: string,
  ignoreFiles: string[],   // e.g. ['.myignore', '.gitignore']
  cacheDirectory: string,
  ignoreCache: boolean = false,
): Promise<string[]>;

Custom mode

import { startCustomModeAsync } from 'fx43';
// ES5: const startCustomModeAsync = require('fx43').startCustomModeAsync;

startCustomModeAsync(
  rootDirectory: string,
  cacheDirectory: string,
  ignoreCache: boolean = false,
  // use this to filter files
  fileFilter: ((fileName: string) => boolean) | null = null,
  // use this to filter directories
  dirFilter: ((dirName: string) => boolean) | null = null,
): Promise<string[]>;

Example

Suppose you have some files in a directory named data:

- data/
  index.html
  main.js
  style.css
  lib/
    lib.js

You need to track all changed .js files. In this case, you can use ignore file mode. Define an ignore file like .gitignore, for example, .myignore with the following contents:

# .myignore
# put this file to the root folder of the project

# ignore html and css files
*.html
*.css

Then call fx43 APIs like this:

import { startIgnoreFileModeAsync } from 'fx43';

async function printChangedFiles() {
  const files = await startIgnoreFileModeAsync('./data', ['.myignore'], './.cache');
  console.log(`${files.length} file(s) changed.\n${files}`);
}

(async () => {
  await printChangedFiles();
})();
# run the program
node example.js
# output
2 file(s) changed.
main.js
lib/lib.js

# run the program
node example.js
# output
0 file(s) changed.

# modify and create some files
touch ./data/lib/lib.js
touch ./data/new.js
# run the program
node example.js
# output
2 file(s) changed.
lib/lib.js
new.js

# modify an irrelevant file
touch ./data/style.css
# run the program
node example.js
# output
0 file(s) changed.

For more examples, see examples.

2.1.0

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.0.1

6 years ago

0.0.11

7 years ago

0.0.10

7 years ago

0.0.9

7 years ago

0.0.8

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago