The Protevus Platform: Unified Full-Stack Development https://protevus.com
Find a file
2017-04-26 18:39:47 -04:00
lib GZIP on streamToIO 2017-04-26 18:39:47 -04:00
test Added caching 2017-02-26 19:19:34 -05:00
.gitignore First commit 2016-04-21 17:27:22 -04:00
.travis.yml Create .travis.yml 2016-11-23 04:35:47 -05:00
LICENSE Initial commit 2016-04-21 17:29:34 -04:00
pubspec.yaml GZIP on streamToIO 2017-04-26 18:39:47 -04:00
README.md GZIP on streamToIO 2017-04-26 18:39:47 -04:00

angel_static

version 1.1.4+1 build status

Static server middleware for Angel.

Installation

In pubspec.yaml:

dependencies:
    angel_static: ^1.1.0

Usage

To serve files from a directory, your app needs to have a VirtualDirectory mounted on it.

import 'dart:io';
import 'package:angel_framework/angel_framework.dart';
import 'package:angel_static/angel_static.dart';

main() async {
  final app = new Angel();

  // Normal static server
  await app.configure(new VirtualDirectory(source: new Directory('./public')));

  // Send Cache-Control, ETag, etc. as well
  await app.configure(new CachingVirtualDirectory(source: new Directory('./public')));

  await app.startServer();
}

Push State Example

var vDir = new VirtualDirectory(...);
var indexFile = new File.fromUri(vDir.source.uri.resolve('index.html'));

app.after.add((req, ResponseContext res) {
  // Fallback to index.html on 404
  return res.sendFile(indexFile);
});

Options

The VirtualDirectory API accepts a few named parameters:

  • source: A Directory containing the files to be served. If left null, then Angel will serve either from web (in development) or build/web (in production), depending on your ANGEL_ENV.
  • indexFileNames: A List<String> of filenames that should be served as index pages. Default is ['index.html'].
  • publicPath: To serve index files, you need to specify the virtual path under which angel_static is serving your files. If you are not serving static files at the site root, please include this.
  • debug: Print verbose debug output.
  • callback: Runs before sending a file to a client. Use this to set headers, etc. If it returns anything other than null or true, then the callback's result will be sent to the user, instead of the file contents.
  • streamToIO: If set to true, files will be streamed to res.io, instead of added to res.buffer.. Default is false.