Nodejs 使用 es module 开发 CLI

用户头像
zayfen
关注
发布于: 2020 年 09 月 10 日
Nodejs使用es module开发CLI

Nodejs使用es module开发CLI



这里主要介绍的不是CLI的开发,而是node使用es module开发cli的工程配置和注意事项



一、 package.json的配置



  • bin

bin字段是指定cli的执行文件的. 比如我将bin指定为{“sm-cli": "index.js"}, 那么当用户安装了此工具之后,系统会安装sm-cli这个可执行文件并且加入到系统环境变量中,可以在终端执行

sm-cli命令,当执行这个命令的时候,其实就是运行的index.js文件。



bin字段可以跟上一个执行文件路径字符串,也可以跟上一个json对象,json对象中指定<命令名:执行文件名>。

// 安装之后,执行命令就是package.json中的name字段的值
{
"bin": "./index.js"
}
// 安装之后,执行命令是"sm-cli"
{
"bin": {
"sm-cli": "./index.js"
}
}



  • type

node默认的是cjs模块管理系统,我们可以通过设置type字段来开启使用es的模块管理系统。将type字段设置成"module"

e.g.



{
"type": "module"
}



  • preferGlobal



preferGloabl字段表示改工具模块更加倾向于全局安装,对与CLI工具来说,这个是需要设置成true的。



e.g.

{
"perferGlobal": true
}



二、 入口文件的配置



可执行文件的设置需要注意,因为我们选定了使用es module,但是在npm install -g 安装之后,node会使用commonjs的方式去执行文件,此时文件中的



import xxx from "xxxx"就会无法执行;解决方案是我们需要指定node的 --experimental-modules参数,--experimental-modules表示node的实验中的es 模块功能,指定了这个参数之后,node就可以执行es module文件代码了。



如何指定--experimental-modules呢?



需要在bin指定的文件中增加shebang(aka Hashbang)。shebang是一个由井号和感叹号构成的字符串序列,出现再文本的第一行,写过脚本语言的(比如python)一定对此不陌生。



开启--experimental-modules的shebang:



#!/usr/bin/env node --experimental-modules





三、 编写你的代码



以上的配置完成之后,可以使用es module开发node程序,并且npm install -g之后也能正确的执行,剩下的就是你愉快的开发之旅了!



##Happy Coding##



发布于: 2020 年 09 月 10 日 阅读数: 38
用户头像

zayfen

关注

纸上得来终觉浅,绝知此事要躬行 2018.05.27 加入

少吃多动

评论

发布
暂无评论
Nodejs使用es module开发CLI