DEV Community

Cover image for node js cli app
Andi Ismail
Andi Ismail

Posted on

1

node js cli app

df

mkdir cli_app
npm init

tambahkan 
"type": "module",
Enter fullscreen mode Exit fullscreen mode
//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"
}

Enter fullscreen mode Exit fullscreen mode

tambahkan index.js jalankan dengan node index.js

Image tampilan pertama

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

Image install

`
//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

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
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

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

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)
Enter fullscreen mode Exit fullscreen mode

})
`
hasilnya

Image test.txt

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)
Enter fullscreen mode Exit fullscreen mode

})
`

Image menyimpan file kita ke txt
Terima kasih.
https://github.com/andiks2018/JvalleyNode-cliApp.git

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay