Skip to content

Node

getPkgTool

🧿 获取当前项目的包管理工具

/**
* @func getPkgTool
* @return { 'yarn' | 'pnpm' | 'npm' | 'bun' }
* @desc 📝 获取当前项目的包管理工具
* @example
import { getPkgTool } from './lazy-js-utils'
getPkgTool() // 'pnpm'
*/

jsShell

🧿js 调用 shell 命令

/**
* @func jsShell
* @param { string } cmd shell命令
* @param { string } type ‘pipe’ | ‘inherit’ 在当前进程中执行 | 在新的进程中执行
* @return { code: 0 | 1, result: string }
* @desc 📝 基于node封装的js调用shell命令
* @example
import { jsShell } from './lazy-js-utils'
const { code, result } = jsShell('ls') // 默认在父进程执行,如果不需要在当前终端显示,可使用'pipe'
if(code === 1 ){
// something error
}else {
// execute successfully
const term1 = data?.split('\n').map(item => item).join(' ')
jsShell(`gum choose ${term1}`)
}
*/

fileCopy

🧿 拷贝文件夹及其文件

/**
* @func fileCopy
* @return { code: 0 | 1, result: string }
* @desc 📝 拷贝文件夹及其文件
* @example
import { fileCopy } from './lazy-js-utils'
// 将public和assets下的资源拷贝到dist目录下
const resource = ['../public','../assets']
const { code, result } = fileCopy(resource, '../dist')
if(code === 0){
// success
}else {
// error
throw result
}
*/

transformArgv

🧿 处理命令行参数

/**
* @func transformArgv
* @desc 📝 处理命令行参数
* @return { Object }
* @example
import { transformArgv } from './lazy-js-utils'
// script: build --minify --mode=production --type=es5
const args = transformArgv() // {minify: true, mode: 'production', type: 'es5'}
*/

getExportBundle

🧿 返回 npm 打包文件

/**
* @func getExportBundle
* @return { string }
* @desc 📝 返回npm打包文件
* @example
import { getExportBundle } from './lazy-js-utils'
console.log(getExportBundle('vitest')) // 读取node_modules/vitest/package.json的module字段如果没有才会读取main字段, 返回打包文件的内容
*/

getPkg

🧿 获取 package.json 的 Object 对象

/**
* @func getPkg
* @param { string } url 路径
* @return { Object }
* @desc 📝 获取package.json的Object 对象
* @example
import { getPkg } from './lazy-js-utils'
const pkg1 = await getPkg() // 默认获取当前cwd下的package.json
const pkg2 = await getPkg('../playground/package.json') // 获取playground/package.json
*/

writeFile

🧿 快速修改文件内容,支持多个文件同时修改

/**
* @func writeFile
* @param { string | string[] } filePath 文件路径
* @param { (content: string, index: number) => string } callback 传入文件string类型的内容,可以修改后返回新的内容
* @param { BufferEncoding } encoding 默认utf-8
* @return { void }
* @desc 📝 快速修改文件内容,支持多个文件同时修改
* @example
import { writeFile } from './lazy-js-utils'
writeFile('./a.js', (content) => {
return content.replace('a', 'b')
})
*/

withTaskName

🧿 针对 gulpfile.js 中的 task 添加名称

/**
* @func withTaskName
* @param { string } taskName 任务名称
* @param { async () => void } asyncFunction 异步任务函数
* @return { void }
* @desc 📝 针对gulpfile.js中的task添加名称
* @example
import { withTaskName } from './lazy-js-utils'
import { series } from 'gulp'
export default series(
withTaskName('clean', async () => run('rm -rf dist')),
withTaskName('buildPackages', async () => run('pnpm run --filter "./packages/*" --parallel build')),
)
*/

useNodeWorker

🧿 使用 node worker 父进程

/**
* @func useNodeWorker
* @param { string } url worker文件路径
* @param { any } data 传递给worker的数据
* @return { Promise<any> }
* @desc 📝 node worker封装
* @example
import { useNodeWorker } from './lazy-js-utils'
useNodeWorker('./worker.js', {a: 1}.then(res => console.log(res)) // {a: 5}
*/

useProcressNodeWorker

🧿 使用 node worker 子进程

/**
* @func useProcressNodeWorker
* @param { (data: any) => any } callback 回调函数
* @return { void }
* @desc 📝 node worker封装
* @example
import { useProcressNodeWorker } from './lazy-js-utils'
useProcressNodeWorker((data)=>{
console.log(data) // {a:1}
data.a = data.a * 5
return data
})
*/