salesforce-template-webpack-plugin
Extension of HtmlWebpackPlugin with templates for generating Salesforce metadata.
Install
npm i -D jade jade-loader salesforce-template-webpack-plugin
Example configuration
webpack.config.js
const path = ; const SalesforceTemplateWebpackPlugin = ; const PACKAGE_DIR = path; // ... const webpackConfig = output: path: 'dist' filename: 'index_bundle.js' module: // required for jade templates loaders: test: /\.jade$/ loader: 'jade?pretty=true' plugins: outputDir: PACKAGE_DIR files: template: 'SinglePageApp'
Plugin Options
These are the minimal plugin options. Template-specific options are listed in the following section.
outputDir
: Path to the base output directory for generated files. Required.distDir
: Path to where the plugin will package resources as a StaticResource zip.files
:[...]
An array of template options (see below). Required.meta
:true | false
If true, also generate corresponding*-meta.xml
files andpackage.xml
. Default istrue
Templates
The plugin includes a few default Jade/EJS templates.
template
: Name of a template. Required.apiName
: A unique API name for assigning filenames and any references from within templates. Default is the value oftemplate
apiVersion
: Salesforce API version of the metadata. Default is36.0
A minimal example
files: template: '<template name>' // additional template options
SinglePageApp
A bare-bones Visualforce page and Apex remoting controller for use as a "single page" web app.
title
: Title of the page. Default is'Visualforce App'
mobile
:true | false
Configure the page as mobile-ready. Default isfalse
baseHref
: SetunsupportedBrowser
:true | false
Display a message on unsupported browsers. Default isfalse
appMountId
: Create a div element with the id given.appMountIds
:[...]
Create div elements with the ids given.window
:{...}
Extend the global window object with defined key-values.devServer
: Path to directory wherewebpack-dev-server.js
can be found.googleAnalytics
:{...}
Google Analytics options:trackingId
: The account's tracking ID.pageViewOnLoad
:true | false
Track page views on load. Default isfalse
controller
:{...} | false
Apex controller options:apiName
: API name of the controller. Default is 'Controller' appended to the base API name.sharing
:with | without
Sets with/without sharing on the controller. Default iswith
.testClass
:true | false
Also create a controller test class. Default istrue