node js cli app
Published: 2022-11-25 14:14:18

df
```
mkdir cli_app
npm init

tambahkan 
"type": "module",
```

```
//package.json

{
  "name": "cli_app",
  "version": "1.0.0",
  "description": "membuat sebuah aplikasi cli sederhanan ",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "andismail",
  "license": "MIT"
}

```
tambahkan index.js jalankan dengan node index.js

![Image tampilan pertama](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfq83y54qmckt51xg1g6.png)

untuk menampilkan banyak line dengan menggunakan bectick ``.

```
//index.js

//manampilkan teks ke console 
console.clear()
const data = {
    username : "andiismail",
    email : "andi@andi.com",
}

console.log(`
    ===================================
    selamat datang di applikasi saya
    ===================================
    username : ${data.username}
    --------------------------
    email : ${data.email}
    ===================================

`)
```

selanjutnya kita akan mencoba menangkap inputan user dengan packet inquirer

![Image inquirer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gdex7p8gznhxkt17qqmd.png)

![Image install](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qup3h1pedrei6qbqgfyo.png)

```
//index.js

import inquirer from 'inquirer';
console.log(`
    ===================================
    selamat datang di applikasi saya
    ===================================
`)

inquirer.prompt([
    {
        name : "fullname",
        message : "masukkan nama lengkap kamu : "
    },
    {
        name : 'age',
        message : 'Masukan usia kamu: '
    }
])
.then((ans)=>{
    console.log(ans)
})

```
hasilnya : 

![Image selamat datang](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hgxtjudaqcc73g6vdojz.png)

kita sudah berhasil menangkap inputan user di console log selanjutnya kita akan menampilkan hasilnya ke user
`
console.log(`
    --------------------------------
    Nama lengkap    :   ${ans.fullname} 
    Usia            :   ${ans.age}
    --------------------------------
    `)
`

![Image type data ](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/98iogztyl0uomrq91idv.png)
`console.clear()` agar pertanyaan sebelumnya gak muncul

```
//index.js

import inquirer from 'inquirer';
console.log(`
    ===================================
    selamat datang di applikasi saya
    ===================================
`)

inquirer.prompt([
    {
        name : "fullname",
        message : "masukkan nama lengkap kamu : "
    },
    {
        name : 'age',
        message : 'Masukan usia kamu: '
    },
    {
        name : 'married',
        message : 'Apakah kamu sudah menikah ?',
        type : "list",
        choices : ['belum', 'sudah', 'baru mau']
    },
])
.then((ans)=>{
    console.log(`
    --------------------------------
    Nama lengkap    :   ${ans.fullname} 
    Usia            :   ${ans.age}
    Menikah         :   ${ans.married}
    --------------------------------
    `)
})

```

![Image menikah](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/71dqft4lj1ak8d33th4p.png)

sekarang kita buat aplikasi sederhana untuk data warga buat file dataWarga.js

```
//dataWarga.js
// buatlah sebuah aplikasi sederhana untuk data warga
// buat beberapa pertanyaan 
/**
 * 1. Nama lengkap
 * 2. Tempat tanggal lahir 
 * 3. no ktp
 * 4. no telp
 * 5. alamat lengkap
 * 6. status << menggunakan list choice [menikah single, duda/janda]
 * 
 */

//dan tampilkan 

import inquirer from "inquirer";
console.info(`
---------------------------------------------
Aplikasi data- warga
---------------------------------------------
`)

inquirer.prompt([
    {
        name : 'fullname',
        message : 'Name lengkap'
    },
    {
        name : 'ttl',
        message : 'Tempat tanggal lahir'
    },
    {
        name : 'ktp',
        message : 'Nomor KTP'
    },
    {
        name : 'phone',
        message : 'Nomor Telp'
    },
    {
        name : 'fullname',
        message : 'Name lengkap'
    },
    {
        name : 'address',
        message : 'Alamat lengkap'
    },
    {
        name : 'status',
        message : 'Alamat lengkap',
        type : 'list',
        choices : ['sudah', 'belum', 'pernah']
    },
])

.then(ans=>{
    console.clear()
    console.log(`
    --------------------------------------
    Nama lengkap            :   ${ans.fullname}
    Tempat tanggal lahir    :   ${ans.ttl}
    NO KTP                  :   ${ans.ktp}
    Telp                    :   ${ans.phone}
    Alamat                  :   ${ans.address}
    Status                  :   ${ans.status}
    --------------------------------------
    `)
})

```
hasilnya :

![Image dataWarga](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hqwan0wa0yuby6d1jurk.png)

selanjutnya kita akan menyimpan inputan ini kedalam file txt menggunakan packages `fs` kita buat folder storage, 

```
//dataWarga.js

import inquirer from "inquirer";
import fs from 'fs'

console.info(`
---------------------------------------------
Aplikasi data- warga
---------------------------------------------
`)

inquirer.prompt([
    {
        name : 'fullname',
        message : 'Name lengkap'
    },
    {
        name : 'ttl',
        message : 'Tempat tanggal lahir'
    },
    {
        name : 'ktp',
        message : 'Nomor KTP'
    },
    {
        name : 'phone',
        message : 'Nomor Telp'
    },
    {
        name : 'fullname',
        message : 'Name lengkap'
    },
    {
        name : 'address',
        message : 'Alamat lengkap'
    },
    {
        name : 'status',
        message : 'Alamat lengkap',
        type : 'list',
        choices : ['sudah', 'belum', 'pernah']
    },
])

.then(ans=>{
    console.clear()
    let result = 
    `
    --------------------------------------
    Nama lengkap            :   ${ans.fullname}
    Tempat tanggal lahir    :   ${ans.ttl}
    NO KTP                  :   ${ans.ktp}
    Telp                    :   ${ans.phone}
    Alamat                  :   ${ans.address}
    Status                  :   ${ans.status}
    --------------------------------------
    `

    //menulis data result kedalan file txt
    fs.writeFileSync('./storage/test.txt', result, 'utf-8')

    //tampilkan ke console result
    console.log(result)
})
```
hasilnya

![Image test.txt](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7zvq833alvk1ch0frl22.png)

selanjutnya kita 

```
//dataWarga



import inquirer from "inquirer";
import fs from 'fs'

console.info(`
---------------------------------------------
Aplikasi data- warga
---------------------------------------------
`)

inquirer.prompt([
    {
        name : 'fullname',
        message : 'Name lengkap'
    },
    {
        name : 'ttl',
        message : 'Tempat tanggal lahir'
    },
    {
        name : 'ktp',
        message : 'Nomor KTP'
    },
    {
        name : 'phone',
        message : 'Nomor Telp'
    },
    {
        name : 'fullname',
        message : 'Name lengkap'
    },
    {
        name : 'address',
        message : 'Alamat lengkap'
    },
    {
        name : 'status',
        message : 'Alamat lengkap',
        type : 'list',
        choices : ['sudah', 'belum', 'pernah']
    },
])

.then(ans=>{
    console.clear()
    let result = 
    `
    --------------------------------------
    Nama lengkap            :   ${ans.fullname}
    Tempat tanggal lahir    :   ${ans.ttl}
    NO KTP                  :   ${ans.ktp}
    Telp                    :   ${ans.phone}
    Alamat                  :   ${ans.address}
    Status                  :   ${ans.status}
    --------------------------------------
    `

    //buat nama file
    let fileName = ans.fullname

    //menulis data result kedalan file txt
    fs.writeFileSync(`./storage/${ fileName}.txt`, result, 'utf-8')

    //tampilkan ke console result
    console.log(result)
})
```

![Image menyimpan file kita ke txt](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tx722uggtjluot41mgjn.png)
Terima kasih.
https://github.com/andiks2018/JvalleyNode-cliApp.git