cli 질문
0
cli
inquire 를 만들었습니다.
그런데 cli 명령어를 칠 경우 해당명령어가 없다고 나옵니다.
아무래도 소스에서 이부분이 문제가 되고 있는거 같습니다.
if (args) {
console.log('해당 명령어를 찾을 수 없습니다.');
program.help();
}
전체 소스
#!/usr/bin/env node
const { program } = require('commander');
const fs = require('fs');
const path = require('path');
const inquirer = require('inquirer');
const htmlTemplate = `
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Template</title>
</head>
<body>
<h1>Hello</h1>
<p>CLI</p>
</body>
</html>
`;
const routerTemplate = `
const express = require('express');
const router = express.Router();
router.get('/', (req, res, next) => {
try {
res.send('ok');
} catch (error) {
console.error(error);
next(error);
}
});
module.expores = router;
`;
const exist = (dir) => { // 폴더 존재 확인 함수
try {
fs.accessSync(dir, fs.constants.F_OK | fs.constants.R_OK | fs.constants.W_OK);
return true;
} catch (e) {
return false;
}
};
const mkdirp = (dir) => { // 경로 생성 함수
const dirname = path
.relative('.', path.normalize(dir))
.split(path.sep)
.filter(p => !!p);
dirname.forEach((d, idx) => {
const pathBuilder = dirname.slice(0, idx + 1).join(path.sep);
if (!exist(pathBuilder)) {
fs.mkdirSync(pathBuilder);
}
});
};
const makeTemplate = (type, name, directory) => { // 템플릿 생성 함수
mkdirp(directory);
if (type === 'html') {
const pathToFile = path.join(directory, `${name}.html`);
if (exist(pathToFile)) {
console.error('이미 해당 파일이 존재합니다.');
} else {
fs.writeFileSync(pathToFile, htmlTemplate);
console.log(pathToFile, '생성 완료');
}
} else if (type === 'express-router') {
const pathToFile = path.join(directory, `${name}.js`);
if (exist(pathToFile)) {
console.error('이미 해당 파일이 존재합니다.');
} else {
fs.writeFileSync(pathToFile, routerTemplate);
console.log(pathToFile, '생성 완료');
}
} else {
console.error('html 또는 express-router 둘 중 하나를 입력하세요.');
}
};
program
.version('0.0.1', '-v, --version')
.name('cli')
program
.command('template <type>')
.usage('<type> -- filename [filename] --path [path]')
.description('템플릿을 생성합니다.')
.alias('tmpl')
.option('-f --filename [filename]', '파일명을 입력하세요', 'index')
.option('-d --directory [path]', '생성 경로를 입력하세요', '.')
.action((type, options) => {
makeTemplate(type, options.filename, options.directory);
});
program
.action((cmd, args) => {
if (args) {
console.log('해당 명령어를 찾을 수 없습니다.');
program.help();
} else {
inquirer.prompt([{
type: 'list',
name: 'type',
message: '템플릿 종류를 선택하세요.',
choices: ['html', 'express-router'],
}, {
type: 'input',
name: 'name',
message: '파일의 이름을 입력하세요.',
default: 'index',
}, {
type: 'input',
name: 'directory',
message: '파일이 위치할 폴더의 경로를 입력하세요.',
default: '.',
}, {
type: 'confirm',
name: 'confirm',
message: '생성하시겠습니까?',
}])
.then((answers) => {
if (answers.confirm) {
makeTemplate(answers.type, answers.name, answers.directory);
console.log('터미널을 종료합니다.');
}
});
}
})
.parse(process.argv);
답변 1
리눅스 노드 설치시 패키지
0
159
0
socket.js 에서 referer로부터 roomId를 가져올 때
0
905
3
스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문
0
2281
2
a[title] 질문드립니다
0
375
1
리뉴얼 강의 및 공부 방법
0
581
1
jwt decode
0
1128
1
node.js 교과서 3판 질문드립니다
0
391
1
passport와 jwt
0
432
1
리뉴얼 강의
0
417
2
혹시 Node.js 교과서 3판 이북은 언제 나오나요?
0
353
1
몽고디비 사용자도 MYSQL부분을 들어야 하나요???
0
481
1
sql 쿼리 로그는 어떤 모듈이 작성하나요?
0
505
2
nunjucks res.render('error'); 작동을 안합니다.
0
511
1
질문있습니다.
0
346
1
multer 한글 파일 업로드시 파일명이 깨져요.
1
3535
1
수업자료는 어디있나요?
0
366
1
질문 있습니디
0
235
1
multer 사용시 file 외 name값은 못받나용?
0
416
1
코드 중복 부분 질문드립니다.
0
298
1
api 만드는 이유 질문드립니다.
0
286
1
Strategy의 done에 대해 질문드립니다.
0
361
1
안녕하세요 fs 권한 관련 질문드립니다
0
446
1
시퀄라이즈 연결질문...
0
492
2
res.setHeader vs res.cookie
0
1785
3





