建立一个 Node.js CLI

今天咱们要谈论建立 node.js 可执行文件。javascript

我想拥有一个我在个人计算机上打字,而后把它变为其中的一个小熊表情。java

Node.js CLI

Node.js CLI

目前能够看到个人机器上没有此命令,咱们开始动手写一个node

开始

准备工程git

mkdir node-cli
cd node-cli
touch cli.js
touch bears.txt
复制代码

bears.txt:npm

ʕ•ᴥ•ʔ
ˁ˚ᴥ˚ˀ
ʕ·͡ᴥ·ʔ
óÔÔò
(● ̄(エ) ̄ ●)
⊂(・(ェ)・)⊃
ʕ•͡ ᴥ•͡  ʔ
ʕ•͡ᴥ•ʔ
(●`・(エ)・ ´●)
ʕノ•ᴥ•ʔノ ︵ ┻━┻
复制代码

cli.jsjson

#!/usr/bin/env node
const fs = require("fs");

fs.readFile("bears.txt", (err, data) => {
  const bears = data.toString().split("\n");
  const bear = bears[Math.floor(Math.random() * bears.length)];
  console.log(bear);
});
复制代码

让咱们把全部的代码逐行说说。数组

  1. #!/usr/bin/env node 是一个 shebang 行的实例,它告诉咱们的系统用什么解释器来执行该文件
  2. fs.readFile(...) 引用 fs 模块读取文件 bears.txt 内容
  3. const bears = ... 将文件流转换成字符串,用换行符(\n)分割字符串成为数组
  4. const bear = ...bears数组随机取出一个元素
  5. console.log(bear); 在控制台中打印出取出的元素

执行 node cli.js 结果以下bash

Node.js CLI

每次随机打印出一个小熊dom

到如今咱们还不能执行这个文件,执行./cli.js 不会有任何结果,这是由于当前文件仍是不可执行的。工具

Node.js CLI

咱们经过chmod +x cli.js 来修改当前文件能够执行

Node.js CLI

这个时候咱们就能够执行 ./cli.js

回到最初想法,咱们想在命令行输入 bearme 就会执行 cli.js 这时候须要添加package.json 信息

npm init -y
复制代码

修改以下:

{
  "name": "bearme",
  "version": "1.1.0",
  "description": "",
  "main": "cli.js",
  "bin": {
    "bearme": "cli.js"
  },
  "scripts": {
    "start": "node index.js",
    "test": "node test.js"
  },
  "preferGlobal": true,
  "author": "",
  "license": "MIT"
}
复制代码

这个时候还不能全局执行,想要全局能够执行有两种方法

  1. 发布这个包到npmjs.com,而后全局安装 npm i bearme -g
  2. 使用npm link 建立一个全局链接

发布 CLI 到 NPM

在部署以前,咱们须要在 package.json 中添加一些信息。

"homepage": "YOUR GITHUB REPO OR SITE HERE",
"repository": {
  "type": "git",
  "url": "git+YOUR GITHUB REPOSITORY HERE"
},
"engines": {
  "node": ">=8"
},
复制代码
  • homepage 和 repository 要填写你本身的 GitHub 项目地址
  • engines 确认 nodejs 版本号,简单地定义了你的项目应该在最小版本的节点上工做。 版本号取决于你用了那些版本的特性。

下面是接下来的步骤。

  • npmjs.com 上建立一个帐户(可选,若是有能够忽略)
  • 运行 npm login 命令并输入你的信息
  • 运行 npm publish 命令,它将在几分钟内自动发布。

npm link

和上面方法两者选其一,在当前目录下执行 npm link

执行bearme 看看效果

bearme

 就是这样! 动手建立了一个命令行工具

参考

  1. Creating a Node.js CLI
相关文章
相关标签/搜索