摘要:各种开头的项目,还有些空仓库,啥都没写的。具体的代码,调用,实在简单,看看就好打包发布就这样打包,肯定不会有全局执行文件滴。然后在中,敲下如下代码说明全局执行命令叫是执行文件。
不知什么时候开始,自家github堆满了仓库代码。。。各种demo开头的项目,还有些空仓库,啥都没写的。自然,程序员写的最差的代码就是以前写的代码了,为了维护心中美好的光辉形象,我决定——————
不过,删除过程确实麻烦了些,身为“头脑简单,四肢发达” ,哦不对,“四肢简单,头脑发达”的程序员,怎么会甘心做苦力劳动呢?我决定搞个命令行批量执行下。
要删除当然是要找API啦,不过,我开始想的是用puppeteer无头chrome搞的,后来发现直接有API,就直接用喽。
删除git仓库需要认证权限,我这里直接用Basic Auth验证,简单!Basic验证,简单说就是在请求头里,搞个Authorization:用户名:密码
必须是要美美的命令行优化工具啦,I pick这个inquirer。 有一些带颜色的终端字看着还是ok的,所以还带上了chalk这个库。
just do it具体的代码,调用API,实在简单,看看就好:
#!/usr/bin/env node var inquirer = require("inquirer"); var axios = require("axios"); var chalk = require("chalk"); var log = console.log; var api = { user: async () => { return await axios({ url: "https://api.github.com/user", method: "GET", }); }, repos: async () => { return await axios({ url: "https://api.github.com/user/repos", method: "GET", }); }, deleteRepos: async (user, name) => { return await axios({ method: "DELETE", url: `https://api.github.com/repos/${user}/${name}`, }); }, login: async () => { return await inquirer.prompt([ { name: "username", message: "username?" }, { name: "password", type: "password", message: "password?" } ]); }, listRepos: async (repos) => { var list = []; repos.forEach(v => { var desc = v.description === null ? "" : v.description; list.push({name: v.full_name + " " + desc}); }); return await inquirer.prompt([ { type: "checkbox", name: "rep", message: "select need cleared repos", choices: list } ]); } }; (async () => { var inf = await api.login(); var base64 = new Buffer.from(inf.username + ":" + inf.password).toString("base64"); axios.interceptors.request.use(config => { config.headers = { Authorization: "Basic " + base64 }; return config; }); var user = await api.user(); log(`welcome ! ${chalk.green(user.data.name || user.data.login)}`); var repos = await api.repos(); var selectRepos = await api.listRepos(repos.data); for (var j = 0; j < selectRepos.rep.length; j++) { var name = selectRepos.rep[j].indexOf(" ") === -1 ? selectRepos.rep[j] : selectRepos.rep[j].substring(0, selectRepos.rep[j].indexOf(" ")); await api.deleteRepos(user.data.login, name); } log(chalk.green("successfull!")); })();npm打包发布
就这样打包,肯定不会有全局执行文件滴。
首先你需要在主执行的js的第一行写上#!/usr/bin/env node
大家都知道,这是linux中指定文件执行解释器的意思,windows系统没用,但是配合上npm就有用啦,且先写着。
然后:在package.json中,敲下如下代码:"bin": { "ngit": "index.js" },
ngit说明全局执行命令叫ngit, index.js是执行文件。
ok,最后npm publish发布npm install -g nodejs-github
再到cmd中,输入
ngit
就会直接执行代码啦,呼呼呼呼呼呼~~
github: https://github.com/chendonming/nodejs-github
npm: nodejs-github
各位看官阔以看下。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/104714.html
摘要:如果实在不会安装可以去网上找教程。打开,跳转到刚刚创建的文件夹位置,运行命令然后会在你的文件夹中搭建好了环境配置配置修改一些你的博客名字描述作者等。基于我的个人经验,建议都开启开启标签页命令,在博客目录添加元数据开启分类页命令,在博 Windows环境下Git安装、配置SSH key、安装node.js npm、安装Hexo及配置、发布博客 前言 使用github pages服务搭建博客的...
摘要:本文将介绍如何在一台的云服务器上快速部署博客站点,如何快速发布一篇博文并通过云服务器上的私有仓库部署到服务器目录下。此外,还要在云服务器上安装和两个必备的软件包。在服务器上部署博客以下为文章正文。 推荐理由:Hexo 是用 Node.js 开发的一个静态站点生成器(Static Site Generator),支持 Markdown 语法写作,有着强大的插件系统,而且性能优异。下面我推...
摘要:博客地址这篇文章是我在众成翻译翻译的一篇文章,一篇的入门指南,原文链接的出现使得用写服务端应用成为可能。你可以看到,这个过程也安装了其他的模块,它们都是的所依赖的模块。但是,得到的输出信息会很冗长,我们可以加上来精简一下输出。 github 博客地址: https://github.com/zengxiaota... 这篇文章是我在 众成翻译 翻译的一篇文章,一篇 npm 的入门指南,...
阅读 2241·2023-04-26 01:50
阅读 706·2021-09-22 15:20
阅读 2578·2019-08-30 15:53
阅读 1584·2019-08-30 12:49
阅读 1703·2019-08-26 14:05
阅读 2699·2019-08-26 11:42
阅读 2297·2019-08-26 10:40
阅读 2586·2019-08-26 10:38