npm包change-version的编写

来源:互联网 发布:解毒丹 知乎 编辑:程序博客网 时间:2024/06/08 17:10

前端现在大多数项目都是利用npm在管理项目依赖的包,以前都是在自己项目中直接引用其他人写好的包。在这次项目优化中有一个需求:在项目发布到服务器的时候因为是集群部署的手动发布就比较麻烦,于是就想减少人的工作量提高效率。在build打包的时候将生成的dist文件压缩成tar.gz格式的包,然后调用docker-build的cli命令将这个包上传并构建一个docker容器,在其中就要更改package.json文件中的version参数值和修改scripts中的docker-build的包的版本号。开始找了很久没有找到合适的npm包,于是就打算自己写一个。

首先,在github上新建一个change-version的项目,然后clone到本地。在克隆下来的这个本地的文件夹中运行:npm init命令,然后按照提示依次输入对应的参数值,最后在该文件夹下生成一个package.json文件,如下:

{  "name": "change-version",  "version": "1.0.0",  "description": "更改版本号",  "main": "index.js",  "scripts": {    "test": ""  },  "repository": {    "type": "git",    "url": "https://github.com/haiyanglong/change-version.git"  },  "keywords": [    "自动更改package中的版本号",    "版本号",    "version",    "chenge"  ],  "author": "995855294@qq.com",  "license": "ISC"}
然后用自己熟悉的编辑器在该文件夹下的根目录新建一个index.js文件,再在package.json中新添加一个bin参数:

  "bin": {
"change-version":"./index.js"
   }
然后在index.js中编写nodejs代码做自己想要执行的步骤。

首先在第一行加上如下的一行,这是必须的是nodejs写shell命令,当脚本有权限执行的时候告诉PC用什么程序来运行:

#!/usr/bin/env node

然后就是安装commander模块接收参数安装命令:npm install --save commander执行完成以后可以看到在

package.json中自动添加了dependencies参数

"dependencies": {    "commander": "^2.11.0"  }

然后,在index.js中引入该模块,并定义接收参数。commander具体用法请看

https://github.com/tj/commander.js:

var program = require('commander')program    .version(localFile.version)    .allowUnknownOption()    .description('set version and change your package.json file')    .option('-sv, --sv [sv]', 'your version', y+'.'+m+'.'+d)    .option('-db, --db [db]', 'is set docker-build version', 'false')    .option('-evn, --evn [evn]', 'your evn', 'prod')program.parse(process.argv)
这里设置3个可选参数sv,db,evn,然后我们在这个文件下运行命令node index.js change-version -h可以看到

如下帮助文档:

 Usage: change-version [options]  //set version and change your package.json file  Options:    -V, --version      //output the version number    -sv, --sv      //your versionjson    -db, --db [db]     //is set docker-build version    -evn, --evn [evn]  //your evn    -h, --help         //output usage information

再根据传进来的参数实现自己需要实现的逻辑,这样简单的npm cli命令就完成了。最后在运行npm login登录自己

在npm平台的账号和密码,登录成功以后执行npm publish上传到npm服务器就完成了,这样别人直接运行

npm install change-version就可以安装这个依赖包了。

项目中需求具体实现代码请看:https://github.com/haiyanglong/change-version