You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							50 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							50 lines
						
					
					
						
							1.2 KiB
						
					
					
				'use strict'
 | 
						|
 | 
						|
const path = require('path')
 | 
						|
const Handlebars = require('handlebars')
 | 
						|
 | 
						|
const fastify = require('fastify')({ logger: { level: 'trace' } })
 | 
						|
 | 
						|
// Handlebar template for listing files and directories.
 | 
						|
const template = `
 | 
						|
<html>
 | 
						|
  <body>
 | 
						|
    dirs
 | 
						|
  <ul>
 | 
						|
    {{#dirs}}
 | 
						|
      <li><a href="{{href}}">{{name}}</a></li>
 | 
						|
    {{/dirs}}
 | 
						|
  </ul>
 | 
						|
 | 
						|
  list
 | 
						|
 | 
						|
  <ul>
 | 
						|
    {{#files}}
 | 
						|
      <li><a href="{{href}}" target="_blank">{{name}}</a></li>
 | 
						|
    {{/files}}
 | 
						|
  </ul>
 | 
						|
  </body>
 | 
						|
</html>
 | 
						|
`
 | 
						|
const handlebarTemplate = Handlebars.compile(template)
 | 
						|
 | 
						|
fastify
 | 
						|
  .register(require('..'), {
 | 
						|
    // Array of absolute paths containing static files to serve
 | 
						|
    root: [path.join(__dirname, '/public'), path.join(__dirname, '/public2')],
 | 
						|
    // Do not append a trailing slash to prefixes
 | 
						|
    prefixAvoidTrailingSlash: true,
 | 
						|
    // Return a directory listing with a handlebar template
 | 
						|
    list: {
 | 
						|
      // html or json response? html requires a render method.
 | 
						|
      format: 'html',
 | 
						|
      // A list of filenames that trigger a directory list response.
 | 
						|
      names: ['index', 'index.html', 'index.htm', '/'],
 | 
						|
      // You can provide your own render method as needed.
 | 
						|
      render: (dirs, files) => handlebarTemplate({ dirs, files })
 | 
						|
    }
 | 
						|
  })
 | 
						|
  .listen(3000, err => {
 | 
						|
    if (err) throw err
 | 
						|
  })
 |