[TOC]
# 开发全局包-命令行工具
## 1,创建一个npm包
## 2, packpage.josn设置命令和指定处理命令的文件
- 设置**bin**参数
```
{
"name": "mulo-cli",
"version": "1.0.1",
"description": "mulo code build tools",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"bin": {
"mulo": "./bin/mulo.js"
},
"keywords": [
"mulo"
],
"author": "",
"license": "ISC",
"dependencies": {
"commander": "^3.0.0",
"mulo-cli-ui": "^0.1.4",
"semver": "^6.3.0"
},
"engines": {
"node": ">=8.9"
}
}
```
```
//本地开发全局包命令,将编辑的包安装到全局
npm link
```
## 添加命令
- 头部声明这个文件用none执行
```
#!/usr/bin/env node
const program = require('commander')
//指定版本号
program.version('0.0.1', '-v, --version')
//help命令后缀操作
program.on('--help', function () {
console.log('no help can use')
});
program.command('create <app-name>')
//说明
.description('create a new project')
//处理函数
.action((name, cmd) => {
console.log('your app name is ' + name);
console.log('your cmd is ' + cmd);
})
/**
* 测试命令
* @demo mulo ui
*
*/
program
.command('test [paths...]')
.description('我的第一个自定义命令')
.option('--mode <mode>')
//参数声明, 参数说明
//参数声明规则: 参数名 <参数>
.option('--rule <ruleName>', 'inspect a specific module rule')
.option('--plugin <pluginName>', 'inspect a specific plugin')
.option('--rules', 'list all module rule names')
.option('--plugins', 'list all plugin names')
.option('-v --verbose', 'Show full function definitions in output')
.action((paths, cmd) => {
var args = cleanArgs(cmd);
console.log(paths);
console.log(args);
})
//-------------------- 辅助函数
/**
* 读取参数
*
* @param {} cmd
*/
function cleanArgs(cmd) {
const args = {}
cmd.options.forEach(o => {
const key = camelize(o.long.replace(/^--/, ''))
// if an option is not present and Command has a method with the same name
// it should not be copied
if (typeof cmd[key] !== 'function' && typeof cmd[key] !== 'undefined') {
args[key] = cmd[key]
}
})
return args
}
/**
* 读取参数名称
* @param {*} str
*/
function camelize(str) {
return str.replace(/-(\w)/g, (_, c) => c ? c.toUpperCase() : '')
}
```
## 测试命令
```
//本地开发全局包命令 运行这个命令, 将这个包安装到全局用于本地测试
npm link
```
- 内容说明
- git的使用
- 常用复制
- mysql
- uniapp
- 学习记录
- 序言 导航栏目
- 1, css flex布局学习
- vscode插件开发
- Yaf框架使用
- 代码编辑器使用
- 企业运营
- vue组件项目使用markdown作为文档
- 使用gulp
- 待学习内容
- 常用业务逻辑
- 定时任务
- 多语言
- 微信支付
- 视频处理
- excel导出导入
- php
- 架构
- 配置
- sysconfig
- 微擎二次开发
- 人人商城后台开发
- 后台管理-菜单权限
- 一些建的表
- 常用
- form
- 常用函数
- 人人商城开发
- FoxUI
- 插件二次开发
- 资金
- 注册推荐人
- 基本
- 后台开发
- thinkcmf-curd
- apis
- thinkcmf
- fastadmin
- swoole
- thinkphp使用swoole
- composer
- 开发composer包
- 错误记录
- laraval框架
- php跨域问题
- nginx
- apache
- EasySwoole的使用
- 学习笔记1
- thinkphp6
- 文件上传
- mysql
- 存储过程
- 日志查询 binlog
- 数据库优化
- php调试
- 开源项目二次开发笔记
- 禾匠
- 订单
- 测试接口
- 知识体系
- php遇到的错误
- php8新特性
- 快速开发-基础包-文档
- vue-open-pc基础架构
- 序言
- 页面创建
- axios接口调用
- vue-open-mobile基础结构
- 序言
- 微擎-应用市场
- mulo-admin-tp
- zoo-admin
- 基础增删改查
- 列表页
- curd
- Popup弹出层
- 项目架构
- 微服务
- nginx
- 常用命令
- 配置说明
- 配置负载均衡
- 代理内网数据库
- 限流
- 变量
- nginx语法
- 项目管理
- 测试体系
- 压力测试
- Jenkins
- 开发环境构建
- 服务器
- linux系统
- linux常用命令
- 日志系统
- 自动化部署
- 宝塔webhook
- 项目部署
- 大数据
- hadoop
- HBase 亿级数据的分布式非关系型数据库
- MaxCompute 阿里云云计算数据库
- Hive 数据库for hadoop
- redis
- linux
- 部署环境常用
- 个人开源npm包-文档
- mulo-test
- mulo-cli包 构建工具
- 命令说明
- mulo-tools 常用js工具整合
- Url
- 辅助函数
- jsx
- FileSystem
- mulo-codes包 我的常用代码 演示包
- mulo-validate 验证类函数
- vscode-codes包 vscode代码片段
- phpdefault
- js
- php-thinkcmf
- mulo-ui
- 代码高亮实现
- 文档功能实现
- css包规则
- mulo
- mulo-admin
- 列表页组件
- 列表页组件-筛选
- vue插件
- npm包学习和使用
- Markdown-it解释器
- cp-cli文件,文件夹复制
- remark markdown的插件
- transliteration 文字转换为拼音
- 常用包
- lerna 代码git库耦合度
- lodash
- web全栈
- vite
- web应用性能优化
- vue3
- vue3组件开发
- 构建工具
- rollupjs
- 前端常见问题
- 创建跨域代理服务
- 背景精灵图制作
- js导出导入excel
- gulp构建工具
- 使用gulp打包scss
- gulp-autoprefixer根据浏览器处理前缀
- gulp-cssmin压缩css
- gulp+browser-sync前端自动化
- 使用记录
- webpack的使用
- 2019年11月4日实战记录
- 2019年11月4知识点
- 浏览器自动刷新 webpack-dev-server
- 被坑日记
- 使用eleme的md加载器
- 加载资源
- 自定义loader
- 使用记录
- 开发library
- 使用jsx
- 动态打包
- vue
- cli3
- 常用复制
- 常用插件的使用
- jquery
- vux状态管理
- [组件库]mint-ui饿了么
- [上拉加载]模块
- bootstrap框架引入
- sass样式
- axios数据交互
- swiper幻灯片插件
- storejs本地存储插件
- vuet状态管理(vux的简化版)
- nuxt服务端渲染
- 基础使用
- vue与后台交互数据
- 创建项目
- 使用常见问题
- 前后端分离权限认证方案
- 使用记录-遇到的问题
- 组件开发
- vue知识map
- 常用组件库
- dev tool
- 常用组件库整理
- angular
- 学习记录-2017
- css样式
- bootstrap笔记
- css3使用
- 使用记录
- 动画
- css单位
- 实例代码
- 悬浮窗
- 被坑日记
- 贝塞尔曲线
- javascript
- javascript高级使用
- javascript写法收集
- 代码记录
- jquery的使用
- 发送验证码倒计时
- js实现addclass removeclass
- 基础
- ES6的新特性
- javascript遇到的坑
- nodejs
- 优秀开源项目
- [框架]express
- 基础
- test
- 进程管理
- knexjs 查询构建
- mogodb
- npm
- 开发npm包
- 开发全局包-命令行工具
- 开发细节记录
- 使用记录
- npm包的依赖说明
- 命令说明
- typescript
- 入门
- typescript基础
- 声明文件呢 types .d.ts
- uni-app
- 使用记录
- 采坑日记
- web技术点
- html meta标签的常用定义
- 强制跳转到https
- 开发library
- babel编译器
- websocket
- socket.io
- CDN
- 正则使用记录
- 创建技术文档
- sveltejs框架
- 测试
- 测试说明
- e2e UI测试
- 参考
- ava
- vue测试
- pc应用electron.js
- 开发资源
- Flutter
- python
- bui
- eslint
- 云开发
- uniCloud
- app开发
- apicloud-app开发
- 常用复制
- uni-app
- 游戏开发
- phaser 2d游戏框架
- 1 基本学习 ,创建游戏,场景,加载资源
- 2 摄像机,舞台,世界,缩放控制
- 3 显示对象,图片 图形 按钮 精灵
- 4 其他
- 5 文字
- 6 组
- 7 动画
- 8,atlas的制作和使用,
- 我的composer包
- mulo-app 应用常用类库
- 更多知识随手记一下
- 教育法
- 物联网
- 51单片机
- arduino单片机
- 被坑日记
