1.commander
const commander = require("commander"); // 第三方包
const chalk = require("chalk");
console.log(chalk.green("====参数的解析和commander的简单使用===="));
commander.name("node"); // 名字介绍
commander.usage("<path file>"); // 使用方式介绍
commander.version("1.0.0"); // 版本
commander.option("-p --port <v>", "设置端口号"); // 参数介绍
commander.option("-c --config <v>", "配置文件"); // 参数介绍
// 创建指令 <>表示变量参数
commander
.command("create <item>")
.description("创建项目的指令")
.action((item) => {
// 行为
console.log(chalk.red("创建项目 --- " + item));
});
// 格式化参数 返回参数的配置
const args = commander.parse(process.argv);
2.npm的介绍
// package.json中 main是入口 bin里面一般是处理全局命令的
// 升级版本号+1 npm version major/minor/patch (这种如果有git tag的话,会自动修改git的tag)
// major/minor/patch 对应 v2.0.0 的三位 大版本/小版本/补丁
// 版本号(安装适应规则最新的版本)
// ^2.2.0 限定的是大版本 后面两位不确定
// ~2.2.0 限定前两个版本(大版本,小版本) 最后一个不确定,比0大即可
// >=2.0 大于等于2.0版本
// <=2.0 小于等于2.0
// 1.0.0 - 2.0.0 版本区间
// 预发版本(一般升级不会安装,除非你@指定)
// alpha 预览版,内部测试 beta 测试版 公开测试版 rc 最终测试版本
/* package.json 的scripts
1. 配置脚本文件, 类似于快捷键
2. 执行命令 会将当前node_modules下的.bin文件夹放到全局中(所以第三方可以直接使用)
*/
// npx和scripts一样,可以帮我们直接运行.bin目录下的内容
// npx如果.bin目录下存在对应的脚本,则会执行,如果没有,会下载在执行,执行完成后再删除,可以理解就是临时下载 比如:npx create-react-app project
// 源的切换 (npm, nrm(切源) ,nvm(用于多个node版本))
// npm i nrm -g
// nrm ls/ nrm use
// 包的发布
// 注册npm账号
// 发布的时候,源一定要在官方源上
// npm addUser 添加用户
// npm publish 发布
// peerDependencies 前置包,比如有些包要依赖一些包,可以用peerDependencies要求安装这些依赖包
// bundledDependencies 这里面的包在打包构建的时候,也会打包进node_modules里面,就是打包也会连依赖一起打包
3.全局命令
#! /usr/bin/env node
// 上面是表示 当前环境是node环境
const commander = require("commander");
const Server = require("../main");
commander.name("n-server");
commander.usage("<path file>");
commander.option("-p --port <v>", "set port");
commander.version("1.0.0");
commander
.command("n-server <path>")
.description("创建项目的指令")
.action((path) => {
console.log(chalk.red("创建项目 --- " + item));
});
const args = commander.parse(process.argv);
new Server(args).start();
本地调试可以在根目录(package.json的位置),使用npm link连接npm官网,这样就可以在本地使用全局命令