tiny-replace-files
Like vscode, simple utility to quickly replace text in one or more files.
📦 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
✈️ TODO
- [x] init lib
- [x] 完成 replaceStringInFiles 函数开发
- [x] 完成同步函数开发
- [x] 完成测试
- [ ] 生命周期??
- [ ] cli???