首页 > 其他分享 >静态资源服务器命令行工具

静态资源服务器命令行工具

时间:2024-06-04 10:56:24浏览次数:15  
标签:const 静态 res require server 命令行 debug 服务器 config

目录

一、静态资源服务器命令行工具

#!/usr/bin/env node

// npm i yargs
const yargs = require('yargs')
const Server = require('../src/app')
const argv = yargs
  .option('d', {
    alias: 'root',
    demand: 'false',
    type: 'string',
    default: process.cwd(),
    description: '静态文件根目录'
  })
  .option('o', {
    alias: 'host',
    demand: 'false',
    default: 'localhost',
    type: 'number',
    description: '请配置监听的主机'
  })
  .option('p', {
    alias: 'port',
    demand: 'false',
    type: 'number',
    default: 8080,
    description: '请配置端口号'
  })
  .usage('ll-server [options]')
  .example('ll-server -d / -p 9090 -o localhost', '在本机的9090端口上监听客户端的请求')
  .help('h')
  .argv
console.log(argv)
const server = new Server(argv)
server.start()

/*
1、第一行固定代码:#!/usr/bin/env node
2、package.json添加
{
  "bin": {
    "ll-server": "bin/www.js"
  }
}
3、执行命令:npm link
*/
const config = require('./config')
const http = require('http')
// npm i chalk
const chalk = require('chalk')
const path = require('path')
const url = require('url')
const fs = require('fs')
const {promisify, inspect} = require('util');
const stat = promisify(fs.stat);
const readdir = promisify(fs.readdir);
// npm i mime
const mime = require('mime')
// PowerShell:$env:DEBUG='static:*';node app.js
// process.env.DEBUG = 'static:*'
// npm i debug
const debug = require('debug')('static:app')

class Server {
  constructor(argv) {
    this.config = Object.assign({}, argv, config)
  }

  start() {
    const server = http.createServer()
    server.on('request', this.request.bind(this))
    server.listen(this.config.port, () => {
      const url = `${this.config.host}:${this.config.port}`
      debug(`server started at ${chalk.green(url)}`)
    })
  }

  async request(req, res) {
    const {pathname} = url.parse(req.url)
    const filepath = path.join(this.config.root, pathname);
    try {
      const statObj = await stat(filepath)
      if (statObj.isDirectory()) {
        const files = await readdir(filepath)
        res.setHeader('Content-Type', 'application/json')
        res.end(JSON.stringify(files.map(file => ({
          name: file,
          url: path.join(pathname, file)
        }))))
      } else {
        this.sendFile(req, res, filepath, statObj)
      }
    } catch (e) {
      debug(inspect(e))
      this.sendError(req, res)
    }
  }

  sendFile(req, res, filepath, statObj) {
    res.setHeader('Content-Type', mime.getType(filepath))
    fs.createReadStream(filepath).pipe(res)
  }

  sendError(req, res) {
    res.statusCode = 500
    res.end(`there is something wrong in the server! please try later!`)
  }
}

module.exports = Server
const debug = require('debug')('static:config')
const path = require('path')
const config = {
  host: 'localhost',
  port: 8080,
  root: path.resolve(__dirname, '..', 'public')
}
debug(config)
module.exports = config

标签:const,静态,res,require,server,命令行,debug,服务器,config
From: https://www.cnblogs.com/linding/p/18230364

相关文章

  • 云服务器安装-DDD-部署总结笔记
    DDD部署笔记链接:https://www.yuque.com/zhaozhaozhaozhao-khkij/vxgn28/qct4gxgunq3zhd7r?singleDoc#《2DDD开发运维》这里格式要好点。资料来源:Linux|小傅哥bugstack虫洞栈内容包括开发基础环境、脚手架(项目工程搭建)、发布部署环境等等。2.1基础环境+脚手架●......
  • 安徽京准 NTP时间服务器(网络授时服务器)技术应用方案
    安徽京准NTP时间服务器(网络授时服务器)技术应用方案安徽京准NTP时间服务器(网络授时服务器)技术应用方案京准电子科技官微——ahjzsz摘要:药食品质量安全追溯系统中各计算机设备间必须保持精确的时间同步,才能保证对药品食品各种相关信息的记录准确可靠。基于网络时间协议(NTP),结......
  • Linux使用sz/rz命令在服务器上传下载文件 及 GIF89a图片欺骗攻击导致tmp目录很多php开
    一、Linux下使用sz/rz命令从服务器下载文件或上传文件至服务器    使用secureFX可以直接和LINUX进行文件互传,但有些服务器会要求通过中间服务器连接,无法难过SecureFX直接操作文件了,不过Linux有两个很好用的命令:sz和rzSZ:sz命令就是将服务器上的文件下载到本地电脑。s......
  • 基于React的SSG静态站点渲染方案
    基于React的SSG静态站点渲染方案静态站点生成SSG-StaticSiteGeneration是一种在构建时生成静态HTML等文件资源的方法,其可以完全不需要服务端的运行,通过预先生成静态文件,实现快速的内容加载和高度的安全性。由于其生成的是纯静态资源,便可以利用CDN等方案以更低的成本和更高的......
  • 实验9 静态路由配置
    实验9静态路由配置一、原理描述二、实验目的三、实验内容四、实验配置五、实验步骤一、原理描述网络中的每个路由器都会维护一张路由表或转发表。路由表的表项记录着目的网络信息以及下一跳I地址。路由表可以手动配置,也可以通过路由算法动态生成。静态路由......
  • uni-app项目分包后子包中静态资源丢失
    前情uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app。坑位随着项目越做越大,发现小程序的包体积已经超过了小程序单包最高2M的限制,于是对项目进行了分包处理,在分包过种中真正占项目体......
  • 服务器遭遇挖矿怎么办?
    背景根据某安全公司安全威胁检测到在2019年中,恶意软件拦截量为181.07亿次,其中挖矿类恶意软件感染占比最多(58%),其次为远程木马(占比14%),企业或组织内文件共享等机制也使得感染型病毒的比例在9%左右。恶意软件一哥挖矿软件攻击势头非常猛,加密货币挖矿流量较去年增长约100%,在类型上......
  • 泛微e9阿里云linux服务器部署迁移总结
    1.基础部分,linux基础命令打开指定目录:cd[目录名称]创建目录:mkdir[目录名称]查看目录大小:du-sh[目录名称]启动停止服务:进入目录:cd/weaver/resin4/bin/启动服务:./startresin.sh停止服务:./stopresin.sh编辑文件vim【文件......
  • 京准电子 GPS北斗卫星授时服务器在煤矿数据系统的应用
    京准电子GPS北斗卫星授时服务器在煤矿数据系统的应用京准电子GPS北斗卫星授时服务器在煤矿数据系统的应用京准电子官微——ahjzsz卫星授时服务器在煤矿领域有着重要的应用,主要集中在以下几个方面:煤矿安全监控系统:煤矿通常具有庞大的安全监控系统,包括视频监控、传感器设备等......
  • [MQTT]服务器EMQX搭建SSL/TLS连接过程(wss://)
    目录......