@fab/compile
Compiles a FAB intermediate directory into a single .FAB file
Last updated 5 months ago by evanderkoogh .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @fab/compile 
SYNC missed versions from official npm registry.

name: "@fab/compile" route: "/packages/fab-compile" menu: Packages

???? @fab/compile

yarn global add @fab/compile
npm install -g @fab/compile
fab-compile
  -i, --input=input          [default: .fab/intermediate] Intermediate FAB directory
  -b, --build-dir=build-dir  [default: .fab/build] Working FAB directory
  -o, --output=output        [default: fab.zip] Output FAB file

FAB Intermediate Directory

@fab/compile operates on an "intermediate directory", by default located at .fab/intermediate, consisting of the following:

.fab/intermediate
  ├── _server
  │   ├──index.js       (server entry point)
  │   ├──production-settings.json
  │   └── **            (any other files needed for compilation)
  ├── _assets           (directory of assets for this release)
      └── **            (all files passed through untouched)
  └── **/*              (any other assets handled as "public")

_assets vs public assets

Any file that's not in _server or _assets will be treated as a "public asset". During compilation, these files are fingerprinted and copied into the FAB under the _assets/_public directory, and server code is injected to map the old paths to the new ones:

// .fab/intermediate/some-dir/some-file.xyz
//             copied to:
// .fab/build/_assets/_public/some-dir/some-file.a7b29c34fd.xyz

const render = async (request, settings) => {
  if (pathMatches(request, '/some-dir/some-file.xyz')) {
    // Fetch the asset using its /_assets/_public URL
    const response = await fetch(`https://your.app/_assets/_public/some-dir/some-file.a7b29c34fd.xyz`)
    // Delete its cache control header, since only _assets 
    // are safe to cache forever
    response.headers.delete('cache-control')
    // Pass through the response
    return response
  }
  
  // For all other requests, forward them to your app as expected
  return your_app.render(request, settings)
}

This has a nice consequence—any static asset file structure can be compiled to a FAB, but those that make proper use of the _asset directory will have far better performance and caching behaviour.

_server/index.js and _server/production-settings.json

These two files get compiled together to produce the two exports for a FAB's server.js file: render and getProdSettings. This process is done using a minimal Webpack configuration, so require-ing other files (potentially generated ones) is supported, but more complex source transformations (like using Babel) are not. If needed, pre-compile your source code before placing it in .fab/intermediate.

Current Tags

  • 0.3.1                                ...           latest (5 months ago)
  • 0.3.0-0                                ...           prerelease (7 months ago)

26 Versions

  • 0.3.1                                ...           5 months ago
  • 0.3.0                                ...           5 months ago
  • 0.3.0-0                                ...           7 months ago
  • 0.2.2                                ...           8 months ago
  • 0.2.1                                ...           9 months ago
  • 0.2.0                                ...           9 months ago
  • 0.2.0-0                                ...           9 months ago
  • 0.1.6                                ...           10 months ago
  • 0.1.5                                ...           10 months ago
  • 0.1.4                                ...           10 months ago
  • 0.1.3                                ...           10 months ago
  • 0.1.2                                ...           10 months ago
  • 0.1.1                                ...           10 months ago
  • 0.1.0                                ...           10 months ago
  • 0.0.12                                ...           10 months ago
  • 0.0.11                                ...           10 months ago
  • 0.0.10                                ...           a year ago
  • 0.0.9                                ...           a year ago
  • 0.0.8                                ...           a year ago
  • 0.0.7                                ...           a year ago
  • 0.0.6                                ...           a year ago
  • 0.0.5                                ...           a year ago
  • 0.0.4                                ...           a year ago
  • 0.0.3                                ...           a year ago
  • 0.0.2                                ...           a year ago
  • 0.0.1                                ...           a year ago
Maintainers (2)
Downloads
Today 0
This Week 0
This Month 1
Last Day 0
Last Week 1
Last Month 1
Dependencies (16)
Dev Dependencies (8)

Copyright 2014 - 2016 © taobao.org |