- 输入输出
const readline = require('readline');
// 实例化接口对象
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// 设置rl,提问事件
rl.question("你好",function (answer){
console.log("答复:"+ answer);
// 不加close,则程序不会结束
rl.close();
});
// close事件监听
rl.on('close',function () {
// 结束程序
process.exit(0);
});
- 以上只是一个简单的例子,因为下面例子中会用到这个提问事件。更多事件使用请查看文档
- 学过webpack的同学都会使用npm init命令创建package.json文件。当然还有同学使用npm init -y 自动创建,不用手动填写。
- 示例:模仿创建package.json文件。这个例子就是模仿使用npm init创建package.json文件。
- 导入fs包和readline包,实例化接口对象
// 导入fs包
const fs = require("fs");
// 导入readline包
let readline = require('readline');
// 实例化接口对象
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
- 封装写入文件方法和提问事件
// 封装的写入
function fsWrite(path,content){
return new Promise (function (resolve,reject) {
fs.writeFile(path,content,{flag: 'a',encoding: 'utf-8'},function (err) {
if(err){
// console.log("失败");
reject(err);
}else{
// console.log("成功");
resolve(err);
}
});
});
}
// 封装的提问事件
function htQuestion (question) {
return new Promise(function (resolve,reject){
rl.question(question, function (answer){
resolve(answer);
});
});
}
- 监听close事件,实现创建package.json文件的方法
// close事件监听
rl.on('close',function () {
// 结束程序
process.exit(0);
});
// 创建package.json文件的方法
async function createPackage () {
let name = await htQuestion("package name: ");
let version = await htQuestion("version: ")
let description = await htQuestion("description: ");
let author = await htQuestion("author: ");
let license = await htQuestion("license: ")
let content = `{
"name": "${name}",
"version": "${version}",
"main": "index.js",
"dependencies": {},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "${author}",
"license": "${license}",
"description": "${description}"
}`;
await fsWrite('package.json',content);
// 最终写完内容,关闭输入进程
rl.close();
}
createPackage();
-
运行文件,node index.js。文件自己创建,然后写完运行相应文件就可以。下面是运行的结果。根据提示输入,然后回车。