ember-cli-deploy-cloudinary
v0.1.1
Published
An ember-cli-deploy plugin. Upload assets to Cloudinary.
Downloads
2
Maintainers
Readme
ember-cli-deploy-cloudinary
An ember-cli-deploy plugin. Upload assets to Cloudinary CDN.
Compatibility
- Ember.js v3.8 or above
- Ember CLI v2.13 or above
- Node.js v8 or above
This plugin uploads one or more files to an Cloudinary CDN. It could be used to upload the assets (js, css, images etc) or indeed the application's index.html.
What is an ember-cli-deploy plugin?
A plugin is an addon that can be executed as a part of the ember-cli-deploy pipeline. A plugin will implement one or more of the ember-cli-deploy's pipeline hooks.
For more information on what plugins are and how they work, please refer to the Plugin Documentation.
Quick Start
To get up and running quickly, do the following:
Ensure ember-cli-deploy-build is installed and configured.
Install this plugin
$ ember install ember-cli-deploy-cloudinary
- Place the following configuration into
config/deploy.js
ENV.cloudinary = {
cloudName: '<your-cloudynary-cloud-name>'
apiKey: '<your-cloudynary-api-key>',
apiSecret: '<your-cloudynary-api-secret>'
}
- Run the pipeline
$ ember deploy
Installation
Run the following command in your terminal:
ember install ember-cli-deploy-cloudinary
ember-cli-deploy Hooks Implemented
For detailed information on what plugin hooks are and how they work, please refer to the Plugin Documentation.
configure
upload
Configuration Options
For detailed information on how configuration of plugins works, please refer to the Plugin Documentation.
cloudName
The Cloudinary Cloud name. How to integrate Cloudinary
apiKey
The Cloudinary API Key. How to integrate Cloudinary
Default: undefined
apiSecret
The Cloudinary API Secret. How to integrate Cloudinary
Default: undefined
secure
Force HTTPS connection.
Default: true
cdnSubdomain
Cloudynary subdomain. Multiple sub-domains
Default: res
folder
Upload target folder.
Default: ''
timestampSubfolder
Upload to inserted timestamp subfolder of upload target. Possible subfolder types:
timestamp
md5
(a md5 hash from timestamp)
Default:
timestampSubfolder: {
enabled: true,
type: "timestamp" // default, otherwise "md5" - hash from tymestamp
}
filePattern
Files that match this pattern will be uploaded to Cloudinary. The file pattern must be relative to distDir
. For an advanced usage, you may want to check out isaacs/minimatch's documentation.
Default: '**/*.{js,css,png,gif,ico,jpg,map,xml,txt,svg,swf,eot,ttf,woff,woff2,otf,wasm}'
fileIgnorePattern
Files matching this pattern will not be uploaded even if they match filePattern.
Default: null
dotFolders
This is a boolean that can be set to true
to include hidden folders
(that are prefixed with a .
) as folders that can be uploaded to Cloudinary.
Default: false
invalidate
Invalidating cached media assets on the CDN
Default: true
uploadLarge
Change SDK uploader if files larger than 100 MB
Default: false
useFilename
Default: true
uniqueFilename
Default: true
overwrite
Default: true
resourceType
Upload resource type. See Upload API reference
Default: raw
type
Default: upload
accessControl
Default: {access_type: "anonymous"}
accessMode
Default: public
distDir
The root directory where the files matching filePattern
will be searched for. By default, this option will use the distDir
property of the deployment context, provided by ember-cli-deploy-build.
Default: context.distDir
distFiles
The list of built project files. This option should be relative to distDir
and should include the files that match filePattern
. By default, this option will use the distFiles
property of the deployment context, provided by ember-cli-deploy-build.
Default: context.distFiles
manifestPath
The path to a manifest that specifies the list of files that are to be uploaded to CDN.
This manifest file will be used to work out which files don't exist on CDN and, therefore, which files should be uploaded. By default, this option will use the manifestPath
property of the deployment context, provided by ember-cli-deploy-manifest.
Default: context.manifestPath
Additional features
This addon define willBuild
hook and generate fingerprint for prepend assets. Generator based on the
context.config.build.fingerprint.prepend
option and be available from 'context.cdnFingerprintPrepend' and process.env.CDN_FINGERPRINT_PREPEND
. This useful, for example, for set build fingerprint in index.html assets paths.
###Setup example code:
config/deploy.js
if (deployTarget === 'staging' || deployTarget === 'production') {
let assets_prepend = [ ENV.cloudinary.secure ? "https:/" : "http:/",
ENV.cloudinary.cdnSubdomain ? (ENV.cloudinary.cdnSubdomain + ".cloudinary.com") : "res.cloudinary.com",
ENV.cloudinary.cloudName,
"raw/upload",
ENV.cloudinary.folder === "" ? "" : ENV.cloudinary.folder +"/"
].join("/")
ENV.build.fingerprint = {
prepend: assets_prepend
}
}
ember-cli-build.js
const EmberApp = require('ember-cli/lib/broccoli/ember-app');
module.exports = function(defaults) {
let app = new EmberApp(defaults, {
fingerprint: {
prepend: process.env.CDN_FINGERPRINT_PREPEND
}
});
return app.toTree();
};
Prerequisites
The following properties are expected to be present on the deployment context
object:
distDir
(provided by ember-cli-deploy-build)distFiles
(provided by ember-cli-deploy-build)manifestPath
(provided by ember-cli-deploy-manifest)
Tests
yarn test
Why ember build
and ember test
don't work
Since this is a node-only ember-cli addon, this package does not include many files and dependencies which are part of ember-cli's typical ember build
and ember test
processes.