工具集
yuhuo2022-08-18开发库NodeJs库
cross-env
自定义环境变量 cross-env - npm (npmjs.com)
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)
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)
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)
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)
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)
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)
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)
// package.json
{
"scripts": {
"server": "nodemon server.js",
},
}
项目根目录增加 nodemon.json
,配置指定文件忽略变化
{
"ignore": ["src/data/*"]
}