Skip to content

Rabbitzzc/tiny-replace-files

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

tiny-replace-files


Like vscode, simple utility to quickly replace text in one or more files.

Travis (.org) npm bundle size npm GitHub issues GitHub stars GitHub license

πŸ“¦ Getting Started

install

# npm 
npm install --save tiny-replace-files fast-glob

# yarn
yarn add tiny-replace-files fast-glob

# pnpm
pnpm install --save tiny-replace-files fast-glob

usage

Sync

import { replaceStringInFilesSync } from 'tiny-replace-files'

const options = {
  files: 'src/targets/index.js',
  from: 'test-plugin',
  to: 'self-name',
}

# await
const result = replaceStringInFilesSync(options)
console.info(result)
/**
[
  {
    file: './ques2.md',
    changed: true,
    matchCounts: 1,
    replaceCounts: 1
  }
]
*/

Async

import replaceStringInFiles from 'tiny-replace-files'

const options = {
  files: 'src/targets/index.js',
  from: 'test-plugin',
  to: 'self-name',
}

# await
const result = await replaceStringInFiles(options)
console.info(result)

# promise
replaceStringInFiles(options).then((res)=>{
    console.info(res)
}).catch(err=>{
    console.info(err)
})

Advanced usage

Replace a single file or glob

const options = {
  files: 'file',
};

Replace multiple files or globs

const options = {
  files: [
    'file1',
    'file2',
    'file3',
  ],
};

const options = {
  files: [
    'file1',
    'file2/**',
  ]
};

Replace by regex

const options = {
  from: /foo/g,
  to: 'bar',
};

from callback

const options = {
  files: 'file',
  from: (file) => new RegExp(file, 'g'),
  to: 'bar',
};

to callback

const options = {
    files: './ques2.md',
    from: 'quest 2',
    to: (match: string) => match.toUpperCase(),
    countMatches: true
}

Ignore file(s) or glob

const options = {
  ignore: './ignored/file',
};

const options = {
  ignore: [
    'path/**',
    'path2/index.html',
  ],
};

Disable globs

do not use fast-glob to get path. if you config this, you can uninstall fast-glob for reduce pkg size.

const options = {
  disableGlobs: true,
};

glob configuration

API passed to the fast-glob:

const options = {
  glob: {
    //Glob settings here
    dot: true, //E.g. to include file names starting with a dot
  },
};

Character encoding

Use a different character encoding for reading/writing files. Defaults to utf-8.

const options = {
  encoding: 'utf8',
};

freeze Run

freeze mode will do not replace & change, just run the process.

const options = {
  freeze: true,
};

βš™οΈ Changelog

See CHANGELOG.

LICENSE

MIT

✈️ TODO

  • init lib
  • support replaceStringInFiles
  • support replaceStringInFilesSync
  • support test