
Research
/Security News
Shai Hulud Strikes Again (v2)
Another wave of Shai-Hulud campaign has hit npm with more than 500 packages and 700+ versions affected.
@handy-common-utils/fs-utils
Advanced tools
File system operations related utilities based on fs-extra
File system operations related utilities without any 3rd party dependency.
First add it as a dependency:
npm install @handy-common-utils/fs-utils
Then you can use it in the code:
import { FsUtils } from '@handy-common-utils/fs-utils';
const [,, filePath, matchPattern, beforeString, afterString] = process.argv;
await FsUtils.addSurroundingInFile(filePath, new RegExp(matchPattern), beforeString, afterString);
You can either import and use the class as shown above, or you can import individual functions directly like below:
import { addSurroundingInFile } from 'fs-utils';
await addSurroundingInFile(README_MD_FILE, /<example>(.*?)<\/example>/gms, '<example><b>', '</b></example>');
There are also several commands you can use directly from your shell/build scripts:
filePath matchPattern replacementmatchPattern replacement file1 file2 file3 ...filePath matchPattern contentFilePathfilePath matchPattern beforeString afterStringƬ FileEncoding: Parameters<Buffer["toString"]>["0"]
Ƭ ReplacementOrBuilder: string | (matchPattern: RegExp, filePath: string) => string | PromiseLike<string>
fs-utils.FsUtils
• new FsUtils()
â–¸ Static addSurroundingInFile(filePath, matchPattern, addBefore, addAfter, fileEncoding?): Promise<void>
Add surrounding content to the matching sections in the text file.
| Name | Type | Default value | Description |
|---|---|---|---|
filePath | string | undefined | path to the file |
matchPattern | RegExp | undefined | RegExp for deciding which section of the file would be processed. You must have a capturing group in the pattern. You may want to use these tricks: m flag, g flag, s flag, [\s\S]*, .*? |
addBefore | string | undefined | the string to be added before the capturing group, no need to escape anything |
addAfter | string | undefined | the string to be added before the capturing group, no need to escape anything |
fileEncoding | undefined | BufferEncoding | 'utf-8' | encoding of the file |
Promise<void>
Promise of void
â–¸ Static changeFileContent(filePath, transformContent, fileEncoding?): Promise<void>
Change the text file content. This function loads the full content of the file into memory as string, so that it is not suitable for huge (for example, > 500MB) files. If the new content and original content are the same, the file won't be touched.
| Name | Type | Default value | Description |
|---|---|---|---|
filePath | string | undefined | path to the file |
transformContent | (originalContent: string, filePath: string) => string | PromiseLike<string> | undefined | function for getting the new file content |
fileEncoding | undefined | BufferEncoding | 'utf-8' | encoding of the file |
Promise<void>
Promise of void
â–¸ Static escapeRegExpReplacement(input): string
Escape the ' sign in the string for using the string as the second argument to String.replace(...)
| Name | Type | Description |
|---|---|---|
input | string | the original string |
string
a new string with all ' in the original string being replaced by '$'
â–¸ Static replaceInFile(filePath, matchPattern, replacementOrBuilder, fileEncoding?): Promise<void>
Replace the matching sections in the text file.
| Name | Type | Default value | Description |
|---|---|---|---|
filePath | string | undefined | path to the file |
matchPattern | RegExp | undefined | RegExp for deciding which section of the file would be replaced. You may want to use these tricks: m flag, g flag, s flag, [\s\S]*, .*? |
replacementOrBuilder | ReplacementOrBuilder | undefined | The replacement string or a function for building the replacement string. Please note that you can use special replacement patterns but also you need to take care of the escaping. For details of special replacement patterns see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace |
fileEncoding | undefined | BufferEncoding | 'utf-8' | encoding of the file |
Promise<void>
Promise of void
â–¸ Static replaceInFileWithFileContent(filePath, matchPattern, contentFilePath, fileEncoding?): Promise<void>
Replace the matching sections in the text file with content from another file.
| Name | Type | Default value | Description |
|---|---|---|---|
filePath | string | undefined | path of the file |
matchPattern | RegExp | undefined | RegExp for deciding which section of the file would be replaced. You must have a capturing group in the pattern. You may want to use these tricks: m flag, g flag, s flag, [\s\S]*, .*? |
contentFilePath | string | undefined | path of the file for getting the replacement content |
fileEncoding | undefined | BufferEncoding | 'utf-8' | encoding of the files |
Promise<void>
Promise of void
â–¸ Static replaceInFiles(matchPattern, replacementOrBuilder, ...filePaths): Promise<void>
Replace the matching sections in multiple utf-8 text files. The replacing opertions on those files happen in parallel.
| Name | Type | Description |
|---|---|---|
matchPattern | RegExp | RegExp for deciding which section of the file would be replaced. You may want to use these tricks: m flag, g flag, s flag, [\s\S]*, .*? |
replacementOrBuilder | ReplacementOrBuilder | The replacement string or a function for building the replacement string. Please note that you can use special replacement patterns but also you need to take care of the escaping. For details of special replacement patterns see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace |
...filePaths | string[] | patsh to the files |
Promise<void>
Promise of void
â–¸ Static replaceInFilesWithEncoding(matchPattern, replacementOrBuilder, fileEncoding, ...filePaths): Promise<void>
Replace the matching sections in multiple text files. The replacing opertions on those files happen in parallel.
| Name | Type | Description |
|---|---|---|
matchPattern | RegExp | RegExp for deciding which section of the file would be replaced. You may want to use these tricks: m flag, g flag, s flag, [\s\S]*, .*? |
replacementOrBuilder | ReplacementOrBuilder | The replacement string or a function for building the replacement string. Please note that you can use special replacement patterns but also you need to take care of the escaping. For details of special replacement patterns see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace |
fileEncoding | undefined | BufferEncoding | encoding of the file, in most of the cases 'utf-8' should be used |
...filePaths | string[] | patsh to the files |
Promise<void>
Promise of void
FAQs
File system operations related utilities based on fs-extra
The npm package @handy-common-utils/fs-utils receives a total of 591 weekly downloads. As such, @handy-common-utils/fs-utils popularity was classified as not popular.
We found that @handy-common-utils/fs-utils demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Another wave of Shai-Hulud campaign has hit npm with more than 500 packages and 700+ versions affected.

Product
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.

Security News
ENISA has become a CVE Program Root, giving the EU a central authority for coordinating vulnerability reporting, disclosure, and cross-border response.