@finn-no/cdn-uploader
Version:
Small tool uploading assets to CDN backend (Google Cloud Storage)
101 lines (73 loc) • 3.54 kB
Markdown
> Small tool uploading assets to CDN backend (Google Cloud Storage)
[](https://travis-ci.org/finn-no/cdn-uploader)
[](https://greenkeeper.io/)
## Requirements
You must either specify key-filename or specify credentials which is a base64
encoded `JSON.stringify` version of the JSON based keyfile containing
credentials used when talking to Google Cloud Storage (GCS).
```javascript
//base 64 encoded keyfile
const credentials = require('keyfile.json');
const credentialString = JSON.stringify(credentials);
return new Buffer(credentialString).toString('base64');
```
Install:
```sh-session
$ npm install @finn-no/cdn-uploader -g
```
Actual usage:
```sh-session
$ cdn-uploader /tmp/cdn-assets -a test-app
-- Uploaded assets --
test-app/example.jpg
test-app/css/SDFSDF.finn.css
test-app/js/SDFSDF.finn.js
```
Get help:
```sh-session
$ cdn-uploader -h
cdn-uploader [options] <assetsFolder>
Options:
--app-prefix, -a Application prefix used in the CDN url [string] [required]
--key-filename, -k JSON key file used to authenticate with Google Cloud
Platform.
If not set, the credentials option is used. [string]
--credentials, -c Stringified and base64 encoded version of the JSON key
file used to authenticate with Google Cloud Platform.
Can also be set as CDN_UPLOADER_CREDENTIALS environment
variable [string]
--bucket-name, -b Google Cloud Storage bucket to use.
[] [default: "fiaas-assets"]
--project-id, -p Google Cloud Storage projectId.
[] [default: "fiaas-gke"]
--cache-control Override the cache-control header for the assets
[] [default: "public, max-age=2592000"]
--flatten, -f Flatten filestructure [boolean] [default: false]
--dry-run, -n Print a list of which files would be uploaded [boolean]
--help, -h, -? Show help [boolean]
--version, -v Show version number [boolean]
```
All options can also be set as environment variables, using the `CDN_UPLOADER_`
prefix. E.g.: `CDN_UPLOADER_APP_PREFIX`, `CDN_UPLOADER_CREDENTIALS`, etc.
All files or folder beginning with a "." is automatically excluded (e.g.
`.gitignore`) and will not be uploaded.
### Advanced
You may also override other options if you like (handy for testing)
* `--key-filename` - JSON key file used to authenticate with GCP. If not set
CDN_UPLOADER_CREDENTIALS environment variable is used.
* `--bucket-name` - GCS bucket to use.
* `--project-id` - GCS projectId.
You can also use environment variables for these options, just use the prefix
`CDN_UPLOADER_`.
## Where does my files end up?
The files uploaded to GCS is made available on the public GCS hosting at:
`https://storage.googleapis.com/<bucket-name>/<app-prefix>/<assetName>`
This is again exposed by our CDN at:
`https://static.finncdn.no/_c/<app-prefix>/<assetName>`
## Cache time?
All files uploaded to CDN is configured with
`Cache-Control: public, max-age=2592000`, meaning that clients may cache the
assets for up to 30 days.