开发一个属于自己的 web 服务器

勾勾的前端世界

共 2114字,需浏览 5分钟

 ·

2020-12-20 22:06

嗨,我是你稳定更新、持续输出的勾勾。




周二,又是分外充实的一天,在写代码——改代码——写代码中平稳度过。


今天在搭建业务的时候,又需要使用 web 服务器。


这一看,又得从 0 开始。从下载搭建开始,反反复复,真的太浪费时间和精力了。


为了以后能愉快地摸鱼提升效率,心一狠,算了,自己手动撸一个发布到 npm 官网去,然后全局安装下,下次使用就可以直接指令启动了。


创建开始目录


创建一个文件夹,起个花名 cwj-serve ,在这个目录下创建一个 bin 文件夹,里面新建一个 serve.js 文件,内容如下:


#!/usr/bin/env node//-----package---const boxen = require("boxen")const express = require("express")const app = express()app.use(express.static(process.cwd()));//---let message = `    Serving!                                            - Local:            http://localhost:9000    Copied local address to clipboard!`app.listen(9000,()=>{    console.log(boxen(message,{        padding: 1,        borderColor: 'green',        margin: 1    }))})


这里是结合 express 搭建的 web server。它轻小便捷,且业务层面都已开发出来,所以就直接上手了,小伙伴们可以按自己的需要来。当然,思路都是一致的。


在这里强调一行代码。

app.use(express.static(process.cwd()));


这行代码的意思就是把当前启动的终端目录设定为静态目录。


完事之后,通过 npm init -y 创建一个 package.json 文件,然后在这个 json 文件里补充一个 bin 字段,属性值是 “./bin/serve.js”,如下面内容所示:

{  "name""cwj-serve",  "version""1.0.0",  "description""",  "main""index.js",  "bin": {    "cwj-serve""./bin/serve.js"   //需要手动添加  },  "scripts": {  },  "keywords": [],  "author""",  "license""ISC",  "dependencies": {    "boxen""^4.2.0",    "express""^4.17.1"  }}


在终端下载 express boxen;下载指令  npm install express boxen


本地测试


代码完成之后,暂时不要着急发布,需要本地测试一下,看是否成功。


通过 npm link 软连接到本地的 npm 目录下,在桌面建立一个文件夹,命名为 demo。在面添加一个 index.html 文件,写个 hello world 就行。


在这个 demo 文件夹下启动终端直接输入 cwj-serve 



回到浏览器输入 http://localhost:9000 效果如下:



正式发布


测试没有问题之后,下一步就是发布到 npm 官网了。操作步骤流程如下:


  • 先去 npm 官网注册一个账号

  • 回到 cwj-serve 目录的终端

    • npm login 登录 npm

    • npm publish 直接发布


注意:发布之前一定要检查自己的 .npmrc 的镜像是不是 npm 的,一般都是淘宝镜像。



成功之后,在浏览器的 npmjs.com 官网中找到个人中心,稍等几分钟就能找到自己发布的这个 cwj-serve 包了。


测试是否成功


  • 在桌面随便创建一个文件夹,打开终端全局安装 cwj-serve  npm i cwj-serve -g

  • 再添加一个 index.html 文件写点内容

  • 终端 cwj-serve 回车


效果如上图 hello world 所示,那就表示成功了。


你就拥有了一个自己的专属服务器(。・∀・)ノ゙。


推荐阅读:

是我 Web 端配不上阿里了。

女娲大战虫族,背后到底有多少故事?

现代版战国七雄争霸,买菜大战何时休?

别再复制粘贴了!高效工作神器—— plop

API 终结者 —— 杀手 Reflect

前端人因为 Vue3 的 Ref-sugar 提案打起来了!

CRA 为什么要做成“黑盒”


点点“”和“在看”,保护头发,减少bug。

浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报