美文网首页web前端
package.json文件怎么生成的?

package.json文件怎么生成的?

作者: 姜治宇 | 来源:发表于2020-12-18 19:08 被阅读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请求信息。

相关文章

网友评论

    本文标题:package.json文件怎么生成的?

    本文链接:https://www.haomeiwen.com/subject/gcsfnktx.html