Ember CLI Deploy Manifest Generator
raw JSON →ember-cli-deploy-manifest is an Ember CLI Deploy plugin designed to generate a manifest file during the application's build process. This manifest lists all versioned asset files, enabling deployment plugins like ember-cli-deploy-s3 to perform efficient, differential uploads. By comparing the current manifest with a previously deployed one, the plugin identifies only the changed files, reducing upload times and bandwidth usage significantly. The current stable version is 3.0.0, released in June 2023. This plugin operates within the ember-cli-deploy ecosystem, specifically implementing `configure` and `willUpload` hooks. Its release cadence appears to be tied to major ember-cli-deploy ecosystem updates or breaking changes in underlying dependencies, with major versions typically several years apart. Its primary differentiator is its integral role in optimizing asset deployments for Ember applications using the `ember-cli-deploy` toolchain.
Common errors
error Error: Node.js v12.x is no longer supported by ember-cli-deploy-manifest. Please upgrade to Node.js v14.x or higher. ↓
error Error: The 'distDir' property was not found in the deployment context. ↓
ember-cli-deploy-build is included in your config/deploy.js pipeline and executes successfully prior to ember-cli-deploy-manifest. error Manifest file is empty or missing expected assets. ↓
filePattern and fileIgnorePattern in config/deploy.js are correct and match your application's built asset names. Check the dist folder to confirm assets are fingerprinted and present. error Error: Cannot find module 'ember-cli-deploy-manifest' ↓
ember install ember-cli-deploy-manifest or yarn add --dev ember-cli-deploy-manifest to install the plugin. Warnings
breaking Version 3.0.0 introduces breaking changes by updating dependencies and significantly increasing the minimum required Node.js version. Projects using older Node.js versions (e.g., Node 12.x) will fail. ↓
breaking Upgrading to v3.0.0 may require updating other `ember-cli-deploy` plugins to ensure compatibility with the updated dependency tree and potentially new internal APIs. ↓
gotcha This plugin relies on the `distDir` and `distFiles` properties being present in the deployment context. These are typically provided by `ember-cli-deploy-build`. If `ember-cli-deploy-build` is not used or misconfigured, the manifest generation will fail or be incorrect. ↓
gotcha The `filePattern` and `fileIgnorePattern` options control which files are included or excluded from the generated manifest. Incorrect patterns can lead to incomplete manifests or the inclusion of unintended files, affecting caching and deployment efficiency. ↓
gotcha As a Node-only Ember CLI addon, this package does not include many files and dependencies required for Ember CLI's typical `ember build` and `ember test` processes. Attempting to run `ember build` or `ember test` directly within the plugin's own directory will likely fail. ↓
Install
npm install ember-cli-deploy-manifest yarn add ember-cli-deploy-manifest pnpm add ember-cli-deploy-manifest Imports
- ember-cli-deploy-manifest wrong
import { ManifestPlugin } from 'ember-cli-deploy-manifest'correctember install ember-cli-deploy-manifest - Configuration options wrong
const config = require('ember-cli-deploy-manifest').config;correctmodule.exports = function(deployTarget) { return { 'ember-cli-deploy-manifest': { filePattern: '**/*.{js,css,json}' } }; }; - Deployment hooks wrong
import { configure, willUpload } from 'ember-cli-deploy-manifest';correctThis plugin automatically implements `configure` and `willUpload` hooks within the ember-cli-deploy pipeline.
Quickstart
yarn add --dev ember-cli-deploy-manifest
ember install ember-cli-deploy-manifest
// config/deploy.js
// Make sure ember-cli-deploy-build runs before this plugin in your deploy.json pipeline.
module.exports = function(deployTarget) {
const ENV = {
build: {
environment: 'production'
},
manifest: {
filePattern: '**/*.{js,css,png,gif,ico,jpg,map,xml,txt,svg,swf,eot,ttf,woff,woff2,json}',
manifestPath: 'manifest.txt' // Default, but can be customized
},
// ... other plugins like s3, redis, etc.
};
if (deployTarget === 'production') {
// Additional production-specific configuration
}
return ENV;
};