工具集

yuhuo2022-08-18开发库NodeJs库

cross-env

自定义环境变量 cross-env - npm (npmjs.com)open in new window

npm install --save-dev cross-env
cross-env NODE_ENV=production node demo.js
// 自定义环境变量:NODE_ENV
process.env.NODE_ENV;

minimist

命令行参数解析 minimist - npm (npmjs.com)open in new window

npm install minimist
node demo.js one --two=2 --three
const  parseArgs = require('minimist')

let args = parseArgs(process.argv.slice(2));
// { 
//     _: [ 'one' ], 
// 	two: 2, 
// 	three: true 
// }

inquirer

命令行输入交互 inquirer - npm (npmjs.com)open in new window

npm install inquirer@^8.0.0
const inquirer = require("inquirer");

var questions = [
    {
        type: "input",
        name: "name",
        message: "你叫什么名字?",
    },
    {
        type: 'confirm',
        name: 'sure',
        message: '你确定吗?',
        default: false,
      },
];
inquirer.prompt(questions).then((answers) => {
    console.log(answers);
    // { name: '羊村扛把子', sure: true }
});

progress

打印进度条 progress - npm (npmjs.com)open in new window

npm install progress
const ProgressBar = require('progress');

const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
  	bar.tick();
  	if (bar.complete) {
    	clearInterval(timer)
  	}
}, 100);

fs-extra

fs 模块加强版 fs-extra - npm (npmjs.com)open in new window

const fs = require('fs-extra')
// 异步,删除非空文件夹
fs.remove('./aaa').then(()=>{});

// 同步,复制文件夹(src文件夹里的所有内容复制到dest文件夹中,并非src文件夹本身)
fs.copySync('./src', './dest');
// 如果想让src文件夹本身整个复制到dest文件夹中,可以如下:
fs.copySync('./src', './dest/src');

// 同步,复制文件
fs.copySync('./file.js', './file2.js');

open

打开网址,软件,图片等 open - npm (npmjs.com)open in new window

const open = require('open');

// 在默认图像查看器中打开图像
open('unicorn.png', {wait: true});

// 在默认浏览器中打开URL
open('https://sindresorhus.com');

// 在指定浏览器中打开URL
open('https://sindresorhus.com', {app: {name: 'firefox'}});

// 携带参数打开浏览器
open('https://sindresorhus.com', {app: {name: 'google chrome', arguments: ['--incognito']}});

// 打开应用
open.openApp('xcode');

// 携带参数打开应用
open.openApp(open.apps.chrome, {arguments: ['--incognito']});

shelljs

shell 操作 shelljs - npm (npmjs.com)open in new window

const shell = require("shelljs");

// 删除文件夹或文件
// -f:强制删除文件(默认);
// -i:删除之前先询问用户;
// -r:递归处理目录;
// -v:显示处理过程;
shell.rm('-r', "foo");

// 创建文件夹
shell.mkdir("foo");

// 复制文件夹或文件到指定文件夹
shell.cp('-r', "foo", "bar");

// 切换当前工作目录
shell.cd("foo");

// 遍历文件路径
shell.ls("foo/*.txt").forEach(function(file) {
    // foo/b.txt
    console.log(file)
    // 替换文件内容
    shell.sed('-i', 'version', 'v0.1.2', file);
})

// 返回指定命令对象,可以用来判断命令是否存在
shell.which('git');

// 打印指定内容
shell.echo("hello world");

// 返回多个文件内容组合的 ShellString 对象
let shellString = shell.cat("foo/*.txt");
// 返回字符串
shellString.stdout;
// 把当前内容覆盖写入指定文件
shellString.to("foo/c.txt");
// 把当前内容追加写入指定文件
shellString.toEnd("foo/c.txt");

// 返回当前工作目录(同 process.cwd())
shell.pwd().stdout;

// 执行命令,返回状态码:0 成功,1 失败
shell.exec('node -v').code;

// 退出当前进程
shell.exit(2);

nodemon

监听工作区变化并重启 nodemon - npm (npmjs.com)open in new window

// package.json
{
	"scripts": {
    	"server": "nodemon server.js",
  	},
}

项目根目录增加 nodemon.json,配置指定文件忽略变化

{
    "ignore": ["src/data/*"]
}
Last Updated 2024/4/10 18:49:04