A CLI and templating toolkit to streamline development of Veeva CLM Presentations.
If you're developing and managing multiple Veeva CLM projects, it can be time-consuming to manage consistent code and workflows. This package centralizes core functionality for building and deploying Veeva CLM Presentations.
- π Centralized configuration via
configuration.yml
- π§© Template and partial support using Handlebars
- π¨ Sass compilation (minified and unminified)
- π Relative link conversion to
veeva:
protocol links - πΌοΈ Automatic screenshot, thumbnail, and zip generation
- π§Ύ iRep control file generator
- π Vault Multichannel Loader CSV file generator
- π Development mode with live reload and file watching
- Getting Started
- File Structure
- Working with Source Files
- Configuration Options
- CLI Tasks & Workflow
- Troubleshooting & FAQ
Ensure the following dependencies are installed:
-
- macOS:
brew install imagemagick
- Ubuntu:
apt-get install imagemagick
- Windows: Download
- macOS:
npm install veeva --save
Place the following structure in your project root directory:
root/
βββ app/
β βββ assets/
β β βββ scss/
β β βββ js/
β βββ templates/
β βββ data/
β β βββ clm.yml
β βββ includes/
β βββ layouts/
β βββ pages/
β βββ shared/
β β βββ fonts/
β β βββ images/
β β βββ isi.hbs
β β βββ terms.hbs
β βββ home/
β βββ overview/
β βββ resources/
β βββ sitemap/
βββ configuration.yml
βββ package.json
Key Message naming convention: product-name-key-message-name
- Located in
app/assets/scss
- Compiles to minified and unminified CSS
- Located in
app/assets/js
- Located in
app/templates
- Supports Handlebars Helpers
Define Key Messages under the clm
node:
clm:
product:
name: 'Product-Name'
suffix: '-'
primary:
name: 'CLM-Presentation-ID'
key_messages:
- key_message: 'home'
description: 'Home'
display_order: '0'
slides:
- slide: 'home'
id: '0'
- key_message: 'overview'
description: 'Veeva Test Overview'
display_order: '1'
slides:
- slide: 'Veeva Test Overview'
id: '2-0'
- key_message: 'sitemap'
description: 'Sitemap'
display_order: '2'
slides:
- slide: 'Sitemap'
id: '0-1'
Update paths in configuration.yml
as needed:
paths:
src: "app"
dist: "build"
deploy: "deploy"
tmp: "build/.tmp"
pages: "app/templates/pages"
layouts: "app/templates/layouts"
π‘ Tip: YAML files must use spaces (not tabs).
veeva --help
Command | Description |
---|---|
veeva |
Starts dev mode: builds, watches, reloads |
veeva build |
Production build: compiles/minifies everything |
veeva stage |
Builds + generates zip/ctl files per Key Message |
veeva deploy |
Uploads zip/ctl files via FTP (requires config) |
veeva vault-stage |
Generates Vault Multichannel CSV file |
Option | Description |
---|---|
-a , --all-key-messages |
Include hidden Key Messages |
-c , --config |
Show merged configuration |
-d , --dry-run |
Preview commands without execution |
-e , --debug |
Output error tracebacks |
-h , --help |
Print help message |
-k , --key-message |
Run tasks for a single Key Message |
-v , --version |
Show version number |
-V , --verbose |
Enable verbose output |
- Make sure you're using a compatible Node.js version (check
package.json
) - Ensure
configuration.yml
is valid YAML (use a linter if needed) - Screenshots only process
.html
files; static assets like.pdf
require manual thumbnails
Submit issues or feature requests via GitHub Issues.
Pull requests are welcome! For major changes, please open an issue first to discuss what youβd like to change.
For more examples, see the CLM Example Project.