美文网首页
文件模块

文件模块

作者: kzc爱吃梨 | 来源:发表于2022-01-21 11:08 被阅读0次

创建 Node.js 命令行项目

安装commander

npm install commander
const program = require('commander');

program
  .option('-x, --xxx', 'what the xxx')
  
program           // 这书子命令
  .command('add')
  .description('add a task')
  .action((...args) => {
    console.log(args.args);
      const words = args.slice(0, -1).join(' ')
    console.log(words);
  });
  
program.parse(process.argv);

console.log(program.xxx)
效果图
效果图

实现创建功能

index.js

const db = require('./db')

module.exports.add = async (title)=> {
    // 读取之前的任务
    const list = await db.read()
    // 往里面添加一个 title 任务
    list.push({title, done: false})
    // 储存任务到文件
    await db.write(list)
}

db.js

const homedir = require('os').homedir()
const home = process.env.HOME || homedir
const p = require('path')
const dbPath = p.join(home, '.todo')
const fs = require('fs')

const db = {
    read(path = dbPath) {
        return new Promise((resolve, reject)=> {
            fs.readFile(path, {flag: 'a+'}, (error, data)=> {  // a+表示没有就创建
                if(error) return reject(error)
                let list 
                try {
                    list = JSON.parse(data.toString())
                } catch(err) {
                    list = []
                }
                resolve(list)
            })
        })
    },
    write(list, path = dbPath) {
        return new Promise((resolve, reject)=> {
            const string = JSON.stringify(list)
            fs.writeFile(path, string + '\n', (error)=> {
                if(error) return reject(error)
                resolve()
            })
        })
    }
}

module.exports = db

完成所有功能

yarn add inquirer

用法:

    inquirer
        .prompt({
            type: 'list',
            name: 'index',              //  类型
            message: '请选你想要的操作的任务?',           // 以下是选项
            choices: [{ name: '退出', value: '-1' }, ...list.map((task, index) => {
                return { name: `${task.done ? '[x]' : '[_]'} ${index + 1} - ${task.title}`, value: index.toString() }
            }), { name: '+ 创建任务', value: '-2' }]
        })
        .then((answers) => {
            // console.log(answers);
            const index = parseInt(answers.index)
            if (index >= 0) {
                // 选择了一个任务
                askForAction(list, index)
            } else if (index === -2) {
                // 创建任务
                askForCreateTask(list)
            }
        });

可输入选项实现

inquirer.prompt({
        type: 'input',
        name: 'title',
        message: "新的标题",
        default: list[index].title,
    }).then((answer) => {
        list[index].title = answer.title
        db.write(list)
    });
实现可选列表

发布到npm

修改package.json

"bin": {
    "t": "cli.js"       // 命令入口文件
  },
  "files": [
    "*.js"  // 上传所有的js文件
  ],
  • 把淘宝源切回原生源
  • npm addusernpm publish

相关文章

  • python语法入门四

    文件 os + time模块 pickle模块 异常 文件 os + time模块 pickle模块 异常

  • node模块载入机制

    node内模块以及载入顺序为: 内置模块 文件模块 文件目录模块 node_modules模块 内置模块 http...

  • 3-廖雪峰-node-fs模块

    fs文件读取模块 Node.js内置的fs模块就是文件系统模块,负责读写文件。 和所有其它JavaScript模块...

  • 05-模块的分类

    ###1.1模块的分类 ```模块分为核心模块、文件模块,其中包是一种特殊的文件模块 ``` - 核心模块 + f...

  • 那些年成为node攻城狮的路(二)

    模块加载机制浅析 node中模块分为核心模块和文件模块两大类,核心模块诸如fs、http、util...,文件模块...

  • 解析Python模块与包

    模块 模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块。 import语句...

  • Node.js教程(02)|基础知识篇(下)

    Node.js 模块系统 模块系统,便于各个文件之间的相互调用。在node.js中,模块就是文件,文件也是模块,这...

  • 10 模块与包[python基础]

    python模块介绍 什么时模块? //模块和包就像是文件和文件夹的关系。 //模块就是程序,模块的名...

  • 三:fs模块

    node的fs模块是文件模块,为node自带的模块,负责文件的读写。fs模块可以同步和异步读写文件 1. 异步读取...

  • Python模块与包

    Python模块与包 模块 模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模...

网友评论

      本文标题:文件模块

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