# file-changed

> A node module to check and store file changed.

Latest version **1.4.1** (published 2018-09-12) · MIT license · 0 weekly downloads

## Install

```sh
npm install file-changed
pnpm add file-changed
yarn add file-changed
bun add file-changed
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.4.1 |
| Published | 2018-09-12 |
| First published | 2015-01-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >= 6 |
| Dependencies | 2 |
| Unpacked size | 22.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 7 |
| Author | PoppinL |
| Maintainers | poppinl |
| Keywords | newer, node, file, changed, mtime, timestamp, md5 |

## Links

- npm: https://www.npmjs.com/package/file-changed
- Repository: https://github.com/poppinlp/file-changed
- Homepage: https://github.com/poppinlp/file-changed#readme
- Issues: https://github.com/poppinlp/file-changed/issues
- npm.io page: https://npm.io/package/file-changed

## Dependencies (2)

- [glob](https://npm.io/package/glob.md) ^7.1.3
- [chalk](https://npm.io/package/chalk.md) ^2.4.1

## Alternatives

- [unionfs](https://npm.io/package/unionfs.md) — 2.2M weekly downloads
- [path-starts-with](https://npm.io/package/path-starts-with.md) — 35.9K weekly downloads
- [redzip](https://npm.io/package/redzip.md) — 1.2K weekly downloads
- [vscode-anymatch](https://npm.io/package/vscode-anymatch.md) — 848 weekly downloads
- [@ledgerhq/coin-filecoin](https://npm.io/package/@ledgerhq/coin-filecoin.md) — 793 weekly downloads

## Recent versions

- 1.4.1 (latest) — 2018-09-12
- 1.4.0 — 2018-09-12
- 1.3.0 — 2018-05-02
- 1.2.1 — 2017-10-08
- 1.2.0 — 2017-08-03
- 1.1.2 — 2017-07-24
- 1.1.1 — 2017-07-23
- 1.1.0 — 2017-07-19
- 1.0.0 — 2017-05-24
- 0.1.0 — 2015-03-30
- 0.0.7 — 2015-03-27
- 0.0.6 — 2015-02-16
- 0.0.5 — 2015-02-01
- 0.0.4 — 2015-02-01
- 0.0.3 — 2015-02-01
- … 2 more at https://npm.io/package/file-changed/versions

## README

# file-changed

[![Build Status][ci-img]][ci-url]
[![Code coverage][cov-img]][cov-url]
[![Code style][lint-img]][lint-url]
[![Dependency Status][dep-img]][dep-url]
[![Dev Dependency Status][dev-dep-img]][dev-dep-url]
[![NPM version][npm-ver-img]][npm-url]
[![NPM downloads][npm-dl-img]][npm-url]
[![NPM license][npm-lc-img]][npm-url]
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fpoppinlp%2Ffile-changed.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fpoppinlp%2Ffile-changed?ref=badge_shield)

A node module to check and store file changed.

## Install

By npm:

```shell
npm i file-changed --save
```

By yarn:

```shell
yarn add file-changed
```

## Class

This package export a class since version 1.0.0 which means you could have multiple instances and save the information where you like.

### constructor([dbPath])

#### Arguments

##### dbPath {string}

* Default: `./\_timestamp.json`

Path to save collection informations on disk.

#### Return

Collection instance.

## Instance Methods

### get(file[, type])

Access to a file last modified information.

#### Arguments

* file {string}: The target file path
* type {string}: The information type
  * `ts`: timestamp (default)
  * `md5`: md5 hash

#### Return

* `false` {boolean}: no such file in collection
* timestamp or md5 {string}: depends on `type`

### list()

Get all file paths in collection.

#### Return

* file paths {array}

### addFile(path[, path2 ... pathN])

Add files to collection.

#### Arguments

* path {string}: the target file path or glob

#### Return

* `this` {object}: for chain operation

### rmFile(path[, path2 ... pathN])

Remove files from collection.

#### Arguments

* path {string}: the target file path or glob

#### Return

* `this` {object}: for chain operation

### check([path1 ... pathN])

Check collection files changed or not.

#### Arguments

* no arguments: check all files.
* path {string}: the target file path or glob

#### Return

* changed files {array}

### update([path1 ... pathN])

Update files last modified information.

#### Arguments

* no arguments: update all files
* path {string}: the target file path or glob

#### Return

* `this` {object}: for chain operation

### clean()

Clean files in collection which could not found.

#### Return

* `this` {object}: for chain operation

### save()

Save collection information onto disk.

#### Return

* `this` {object}: for chain operation

## Usage Examples

```js
const Fc = require('file-changed');
const collectionA = new Fc('./path/to/save/info'); // Create collection instance whill will load modified info from that path if that path exists

collectionA.addFile('test/files/file1', 'test/files/file2'); // Add 2 files in collectionA

const fileList = collectionA.list(); // Get file list in collectionA

collectionA.rmFile('test/files/file1'); // Remove 1 file from collectionA

collectionA.addFile('test/files/*'); // Add file by glob

const modifiedList1 = collectionA.check('test/files/file1'); // Check 1 file modified or not
const modifiedList2 = collectionA.check()); // Check all files in collectionA modified or not

collectionA.update('test/files/file1'); // Update last modified info for 1 file
collectionA.update(); // Update last modified info for all files in collectionA

const lastModifiedTS = collectionA.get('test/files/file1'); // Get last modified timestamp for that file
const lastModifiedMD5 = collectionA.get('test/files/file1', 'md5'); // Get last modified md5 for that file

collectionA.save(); // Save collectionA modified info to disk
```

## Test

```shell
npm test
```

[ci-img]: https://img.shields.io/travis/poppinlp/file-changed.svg?style=flat-square
[ci-url]: https://travis-ci.org/poppinlp/file-changed
[cov-img]: https://img.shields.io/coveralls/poppinlp/file-changed.svg?style=flat-square
[cov-url]: https://coveralls.io/github/poppinlp/file-changed?branch=master
[lint-img]: https://img.shields.io/badge/code%20style-handsome-brightgreen.svg?style=flat-square
[lint-url]: https://github.com/poppinlp/eslint-config-handsome
[dep-img]: https://img.shields.io/david/poppinlp/file-changed.svg?style=flat-square
[dep-url]: https://david-dm.org/poppinlp/file-changed
[dev-dep-img]: https://img.shields.io/david/dev/poppinlp/file-changed.svg?style=flat-square
[dev-dep-url]: https://david-dm.org/poppinlp/file-changed#info=devDependencies
[npm-ver-img]: https://img.shields.io/npm/v/file-changed.svg?style=flat-square
[npm-dl-img]: https://img.shields.io/npm/dm/file-changed.svg?style=flat-square
[npm-lc-img]: https://img.shields.io/npm/l/file-changed.svg?style=flat-square
[npm-url]: https://www.npmjs.com/package/file-changed

## License

[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fpoppinlp%2Ffile-changed.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fpoppinlp%2Ffile-changed?ref=badge_large)

---
_Source: https://npm.io/package/file-changed · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
