>  기사  >  웹 프론트엔드  >  node.js를 사용하여 명령줄 도구 빌드

node.js를 사용하여 명령줄 도구 빌드

不言
不言원래의
2018-04-10 17:04:451380검색

이 문서의 내용은 node.js를 사용하여 명령줄 도구를 만드는 것입니다. 특정 참조 값이 있습니다. 필요한 친구가 참조할 수 있습니다.


도구 설명

  • inquirer.js: 공통적으로 캡슐화하는 패키지입니다. 사용된 명령 새로운 명령줄 애플리케이션을 쉽게 구축할 수 있는 줄 상호 작용을 위한 node.js 모듈입니다.

  • shell.js: 크로스 플랫폼 유닉스 쉘 명령 모듈.

  • Node 버전: inquirer.js의 비동기 방식은 기본적으로 Promise를 반환하므로 node.js>=8을 사용하는 것이 좋습니다.

목표

온라인에 접속하기 전 마지막 단계에서는 테스트, 컴파일, 버전 번호 업데이트, 제출, 심지어 동일한 명령 실행까지 필요합니다. 한 번의 클릭으로 이러한 단계를 자동화하는 동시에 오류 및 누락을 방지하기 위해 사전 확인이 수행됩니다.

준비

  1. 새 Node.js 프로젝트를 만듭니다.

  2. bin/my-cli.js 파일을 만듭니다. Node.js 프로젝트는 일반적으로 cli 항목을 bin 디렉터리에 배치하고 다른 모듈은 lib 디렉터리에 배치합니다.

  3. bin/my-cli.js 파일 헤더에 #!/usr/bin/env 노드를 추가하세요. #!/usr/bin/env node

  4. 添加  "bin": {"my-cli": "./bin/my-cli.js"},到package.json,声明我们要使用的命令。

  5. 项目根目录下执行npm link,创建一个全局命令my-cli

稍微修改下my-cli.js,添加代码console.log("I am a cli tool!"),然后打开控制台运行my-cli命令,如果看到控制台输出I am a cli tool!就表示成功。

安装依赖

首先安装主要依赖的两个模块(关于这两个模块的使用请参考官方文档)

npm install inquirer shelljs

构建发布流程自动化

接下来首先实现测试、更新版本号、构建、自动提交发布的自动化

const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));

const { version } = await inquirer.prompt([
  {
    type: 'list',
    name: 'version',
    message: '版本号更新方式:',
    choices: [
      {
        name: `v${semver.inc(pkg.version, 'patch')}: Fix Bugs / Patch`,
        value: 'patch'
      },
      {
        name: `v${semver.inc(pkg.version, 'minor')}: Release New Version`,
        value: 'minor'
      },
    ]
  }
]);
// 拉取最新版本
shelljs.exec('git pull');
// 运行测试
shelljs.exec('npm test');
//通过npm version更新版本号,但不自动添加git tag,而是在构建完成后由cli工具添加
shelljs.exec(`npm version ${version} --no-git-tag-version`);
// 构建
shelljs.exec('npm run build');
// 提交发布代码
const nextVersion = semver.inc(pkg.version, version);
shelljs.exec('git add . -A');
shelljs.exec(`git commit -m "build: v${nextVersion}"`)
shelljs.exec(`git tag -a v${nextVersion} -m "build: ${nextVersion}"`);
shelljs.exec("git push")
shelljs.exec("git push --tags");

添加新功能:配置检查

接下来给my-cli添加一个功能:

当检查到package.json的my-cli对象的check-baidu-id属性为true时,检查项目的config.json是否存在baidu-id

package.json에 "bin": {"my-cli": "./bin/my-cli.js"},를 추가하여 사용하려는 명령을 선언하세요.

프로젝트 루트 디렉터리에서 npm link를 실행하여 전역 명령어 my-cli를 생성합니다.

my-cli.js를 약간 수정하고 console.log("I am a cli tool!") 코드를 추가한 다음 console my-cli 명령을 실행합니다. 콘솔 출력 I am a cli tool!이 표시되면 성공을 의미합니다.

종속성 설치

먼저 주요 종속성인 두 모듈을 설치합니다. (이 두 모듈의 사용은 공식 문서를 참조하세요)

npm install inquirer shelljs

빌드 및 릴리스 프로세스 자동화

다음 먼저 테스트 자동화, 버전 번호 업데이트, 빌드, 자동 제출 및 릴리스 구현

if (pkg['my-cli'] && pkg['my-cli']['check-baidu-id']) {
  const configPath = path.join(process.cwd(), 'config.json');
  if (!fs.existsSync(configPath)) {
    shelljs.echo('找不到config.json');
    shelljs.exit(1);
  }
  const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
  if (!config['baidu-id']) {
    shelljs.echo('config.json缺少属性[baidu-id]');
    shelljs.exit(1);
  }
새 기능 추가: 구성 확인

다음으로 my-cli에 기능 추가 >:패키지가 체크되면 json의 my-cli 객체의 check-baidu-id 속성이 true일 때, 프로젝트의 config.jsonbaidu-id 속성이 존재하는지

rrreee🎜마지막 단계🎜🎜이러한 간단한 cli 프로그램이 빌드 및 릴리스 프로세스를 자동화합니다. 빌드 및 릴리스 전에 구성 확인도 수행됩니다. 🎜🎜실제 프로젝트에서는 프로그램의 안정성을 높이기 위해 현재 프로젝트에 package.json 존재 여부 확인, json 파싱 오류 방지, 실행 전 확인 등의 기능 추가도 필요합니다. 샘플 코드. 🎜🎜예제 코드🎜🎜주소: https://github.com/Aturan/node-cli-example🎜🎜결론🎜🎜위 기능은 셸을 사용해도 구현할 수 있지만 코드 작성이 그리 편리하고 빠르지는 않지만, 좀 더 복잡한 문제에 대해서는 셸을 이용해 구현하기가 매우 번거롭고, 유지관리도 문제이다. 🎜🎜PS 실제로 Python도 사용할 수 있습니다. Ubuntu의 경우 시스템이 Python과 함께 제공된다는 점이 장점입니다. 또한 Python에는 Inquirer 모듈도 설치되어 있습니다. 🎜🎜관련 권장 사항: 🎜🎜🎜node.js가 SQL Server 데이터베이스를 얻는 방법에 대한 자세한 예🎜🎜🎜🎜Node.js 모듈 시스템🎜🎜

위 내용은 node.js를 사용하여 명령줄 도구 빌드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.