在vite的源码src/node/preview.ts中,有import sirv from 'sirv' 的代码,
所以就单独查下这个npm包的用法。
下面给出一个较详细的sirv使用教程:
安装
npm install -g sirv
命令行参数
sirv [path] [options]
path: 需要serve的目录(默认当前目录)
可选项:
-
-p, --port: 端口号(默认端口5000) -
-s, --single: 单页应用模式 -
-e, --empty-path: 移除index文件的路由 -
-c, --no-cache: 禁用缓存 -
-a, --assets: 仅serve静态资源,不编译js/css -
-i, --index: 指定index文件(默认index.html) -
-w, --watch: 监视文件变更并live reload -
-r, --rewrite: 重写路径规则(默认hash路由) -
-b, --browse: 启动浏览器 -
-h, --help: 查看帮助
使用示例
sirv
默认port:5000,目录:当前目录
sirv docs
serve文档目录docs
sirv build -p3000
serve编译目录,设定port为3000
sirv src -e
serve源码目录,index路径重定向
sirv public -a
只serve静态资源目录public
变更监听
sirv src -w
监听文件变更并live reload
OK,根据sirv package的npm文档,将主要API的用法用例子表示如下:
sirv
sirv(options)
返回一个Server实例:
const sirv = require('sirv');
const server = sirv({
src: 'public',
port: 8080
});
server.listen(port, callback)
启动服务器:
server.listen(8080, () => {
console.log('Listening on 8080');
});
server.getRoute(url)
获取url对应的文件路由:
const route = server.getRoute('/about.html');
server.use(fn)
添加中间件:
server.use((req, res, next) => {
// ...
next();
});
server.set('etag', false)
设置etag标识:
server.set('etag', false);
server.rewrites
重写规则:
server.rewrites.push({
source: '/old-page',
target: '/new-page'
});
等等,这些都是sirv API的主要用法,通过例子来说明具体怎么使用。希望可以帮助理解sirv!