web前端

package.json文件怎么生成的?

2020-12-18  本文已影响0人  姜治宇

我们在安装包或运行命令npm init的时候,通常会有一些询问提示信息,当你完成了这些提示信息后,系统会自动生成一个package.json文件,那这个过程是如何实现的呢?
今天我们用node来写一下。

let fs = require('fs');
let readline = require('readline');//逐行读取

var rl = readline.createInterface({ //创建交互
    output: process.stdout,
    input: process.stdin
})
function askQuestion(title){
    return new Promise((resolve)=>{
        rl.question(title,(answer)=>{ //阻塞监听,输入内容后解除阻塞
            resolve(answer);
        });
        

    });
}

rl.on('close',()=>{ //完成后关闭
    process.exit(0);
});
// 写文件
function fsWrite(path,content){
    return new Promise((resolve,reject)=>{
        fs.writeFile(path,content,{flag:'a',encoding:'utf-8'},(err)=>{
            if(err){
                reject(err);
            } else {
                resolve('ok');
            }
        })
    })
}
async function createPackage(){
    let name = await askQuestion('您的包名叫?');
    let main = await askQuestion('主程序入口文件是?');
    let content = `{
        "name": "${name}",
        "version": "1.0.0",
        "description": "",
        "main": "${main}",
        "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1"
        },
        "author": "",
        "license": "ISC"
      } `;
    await fsWrite('./package.json',content);
    rl.close();// 关闭
}
createPackage();

要注意的是,我们一般会将node中的异步操作都用promise封装起来,然后利用async/await请求信息。

上一篇 下一篇

猜你喜欢

热点阅读