|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- # serve-favicon
-
- [![NPM Version][npm-image]][npm-url]
- [![NPM Downloads][downloads-image]][downloads-url]
- [![Linux Build][travis-image]][travis-url]
- [![Windows Build][appveyor-image]][appveyor-url]
- [![Test Coverage][coveralls-image]][coveralls-url]
-
- Node.js middleware for serving a favicon.
-
- A favicon is a visual cue that client software, like browsers, use to identify
- a site. For an example and more information, please visit
- [the Wikipedia article on favicons](https://en.wikipedia.org/wiki/Favicon).
-
- Why use this module?
-
- - User agents request `favicon.ico` frequently and indiscriminately, so you
- may wish to exclude these requests from your logs by using this middleware
- before your logger middleware.
- - This module caches the icon in memory to improve performance by skipping
- disk access.
- - This module provides an `ETag` based on the contents of the icon, rather
- than file system properties.
- - This module will serve with the most compatible `Content-Type`.
-
- **Note** This module is exclusively for serving the "default, implicit favicon",
- which is `GET /favicon.ico`. For additional vendor-specific icons that require
- HTML markup, additional middleware is required to serve the relevant files, for
- example [serve-static](https://npmjs.org/package/serve-static).
-
- ## Install
-
- This is a [Node.js](https://nodejs.org/en/) module available through the
- [npm registry](https://www.npmjs.com/). Installation is done using the
- [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
-
- ```sh
- $ npm install serve-favicon
- ```
-
- ## API
-
- ### favicon(path, options)
-
- Create new middleware to serve a favicon from the given `path` to a favicon file.
- `path` may also be a `Buffer` of the icon to serve.
-
- #### Options
-
- Serve favicon accepts these properties in the options object.
-
- ##### maxAge
-
- The `cache-control` `max-age` directive in `ms`, defaulting to 1 year. This can
- also be a string accepted by the [ms](https://www.npmjs.org/package/ms#readme)
- module.
-
- ## Examples
-
- Typically this middleware will come very early in your stack (maybe even first)
- to avoid processing any other middleware if we already know the request is for
- `/favicon.ico`.
-
- ### express
-
- ```javascript
- var express = require('express')
- var favicon = require('serve-favicon')
- var path = require('path')
-
- var app = express()
- app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')))
-
- // Add your routes here, etc.
-
- app.listen(3000)
- ```
-
- ### connect
-
- ```javascript
- var connect = require('connect')
- var favicon = require('serve-favicon')
- var path = require('path')
-
- var app = connect()
- app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')))
-
- // Add your middleware here, etc.
-
- app.listen(3000)
- ```
-
- ### vanilla http server
-
- This middleware can be used anywhere, even outside express/connect. It takes
- `req`, `res`, and `callback`.
-
- ```javascript
- var http = require('http')
- var favicon = require('serve-favicon')
- var finalhandler = require('finalhandler')
- var path = require('path')
-
- var _favicon = favicon(path.join(__dirname, 'public', 'favicon.ico'))
-
- var server = http.createServer(function onRequest (req, res) {
- var done = finalhandler(req, res)
-
- _favicon(req, res, function onNext (err) {
- if (err) return done(err)
-
- // continue to process the request here, etc.
-
- res.statusCode = 404
- res.end('oops')
- })
- })
-
- server.listen(3000)
- ```
-
- ## License
-
- [MIT](LICENSE)
-
- [npm-image]: https://img.shields.io/npm/v/serve-favicon.svg
- [npm-url]: https://npmjs.org/package/serve-favicon
- [travis-image]: https://img.shields.io/travis/expressjs/serve-favicon/master.svg?label=linux
- [travis-url]: https://travis-ci.org/expressjs/serve-favicon
- [appveyor-image]: https://img.shields.io/appveyor/ci/dougwilson/serve-favicon/master.svg?label=windows
- [appveyor-url]: https://ci.appveyor.com/project/dougwilson/serve-favicon
- [coveralls-image]: https://img.shields.io/coveralls/expressjs/serve-favicon.svg
- [coveralls-url]: https://coveralls.io/r/expressjs/serve-favicon?branch=master
- [downloads-image]: https://img.shields.io/npm/dm/serve-favicon.svg
- [downloads-url]: https://npmjs.org/package/serve-favicon
|