今天我们要谈论创建 node.js 可执行文件。

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

创建一个 Node.js CLI - 图1

创建一个 Node.js CLI - 图2

目前可以看到我的机器上没有此命令,我们开始动手写一个

开始

准备工程

  1. mkdir node-cli
  2. cd node-cli
  3. touch cli.js
  4. touch bears.txt

bears.txt:

  1. ʕ•ᴥ•ʔ
  2. ˁ˚ᴥ˚ˀ
  3. ʕ·͡ᴥ·ʔ
  4. óÔÔò
  5. (● ̄(エ) ̄ ●)
  6. ⊂(・(ェ)・)⊃
  7. ʕ•͡ ᴥ•͡ ʔ
  8. ʕ•͡ᴥ•ʔ
  9. (●`・(エ)・ ´●)
  10. ʕノ•ᴥ•ʔノ ┻━┻

cli.js

  1. #!/usr/bin/env node
  2. const fs = require("fs");
  3. fs.readFile("bears.txt", (err, data) => {
  4. const bears = data.toString().split("\n");
  5. const bear = bears[Math.floor(Math.random() * bears.length)];
  6. console.log(bear);
  7. });

让我们把所有的代码逐行说说。

  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 结果如下

创建一个 Node.js CLI - 图3

每次随机打印出一个小熊

到现在我们还不能执行这个文件,执行./cli.js 不会有任何结果,这是因为当前文件还是不可执行的。

创建一个 Node.js CLI - 图4

我们通过chmod +x cli.js 来修改当前文件可以执行

创建一个 Node.js CLI - 图5

这个时候我们就可以执行 ./cli.js

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

  1. npm init -y

修改如下:

  1. {
  2. "name": "bearme",
  3. "version": "1.1.0",
  4. "description": "",
  5. "main": "cli.js",
  6. "bin": {
  7. "bearme": "cli.js"
  8. },
  9. "scripts": {
  10. "start": "node index.js",
  11. "test": "node test.js"
  12. },
  13. "preferGlobal": true,
  14. "author": "",
  15. "license": "MIT"
  16. }

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

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

发布 CLI 到 NPM

在部署之前,我们需要在 package.json 中添加一些信息。

  1. "homepage": "YOUR GITHUB REPO OR SITE HERE",
  2. "repository": {
  3. "type": "git",
  4. "url": "git+YOUR GITHUB REPOSITORY HERE"
  5. },
  6. "engines": {
  7. "node": ">=8"
  8. },
  • homepage 和 repository 要填写你自己的 GitHub 项目地址
  • engines 确认 nodejs 版本号,简单地定义了你的项目应该在最小版本的节点上工作。 版本号取决于你用了那些版本的特性。

下面是接下来的步骤。

  • npmjs.com 上创建一个账户(可选,如果有可以忽略)
  • 运行 npm login 命令并输入你的信息
  • 运行 npm publish 命令,它将在几分钟内自动发布。

npm link

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

执行bearme 看看效果

创建一个 Node.js CLI - 图6

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

参考

  1. Creating a Node.js CLI