https://github.com/poppinlp/file-changed
A node module to check and store file changed.
https://github.com/poppinlp/file-changed
chain-operation changed file md5 mtime newer timestamp
Last synced: 4 months ago
JSON representation
A node module to check and store file changed.
- Host: GitHub
- URL: https://github.com/poppinlp/file-changed
- Owner: poppinlp
- License: mit
- Created: 2015-01-23T10:21:32.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2022-12-29T03:42:09.000Z (almost 3 years ago)
- Last Synced: 2025-05-23T23:42:22.506Z (4 months ago)
- Topics: chain-operation, changed, file, md5, mtime, newer, timestamp
- Language: JavaScript
- Homepage: https://github.com/poppinlp/file-changed
- Size: 373 KB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
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]
[](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 existscollectionA.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 notcollectionA.update('test/files/file1'); // Update last modified info for 1 file
collectionA.update(); // Update last modified info for all files in collectionAconst 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 filecollectionA.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
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fpoppinlp%2Ffile-changed?ref=badge_large)