This is a webpack plugin that simplifies deploying Salesforce static resources. The most common use case is when you are working on SPA using modern JavaScript frameworks and want to deploy the bundle right after it was built.
It is great to use the plugin with Webpack --watch
parameter to deploy the application
right after Webpack has updated it.
Maintainer: Ruslan Kurchenko @henkookdev
Install the plugin with npm:
$ npm install webpack-sfdc-deploy-plugin --save-dev
The plugin depends on useful JavaScript library that help to work with Salesforce API - jsforce.
To successfully deploy your resources to Salesforce you need to provide credentials.
Create a .js
file with next format:
module.exports = {
username: '<[email protected]>',
password: '<password>',
token: '<security token>'
};
How to get a security token for your Salesforce org you can see here
You need pass a hash of configuration options to SfdcDeployPlugin
.
Required values are as follows:
credentialsPath
: The relative path to.js
file with credentials to you Salesforce org.filesFolderPath
: The relative path to the folder where placed files that need to be deployed.staticResourceName
: The title name that will be used for creating/updating theStaticResource
on Salesforce org side.
var path = require('path');
var SfdcDeployPlugin = require('webpack-sfdc-deploy-plugin');
var webpackConfig = {
entry: 'index.js',
output: {
path: 'dist',
filename: 'bundle.js'
},
plugins: [
new SfdcDeployPlugin({
credentialsPath: path.resolve(__dirname, 'sfdc-org-config.js'),
filesFolderPath : path.resolve(__dirname, 'dist'),
staticResourceName : 'AwesomeApplication'
})
]
};
This will create/update StaticResource
with the name AwesomeApplication including all files that are in the dist
folder
using Salesforce credentials that are placed in sfdc-org-config.js
file.
The plugin has next optional configuration:
exclude
: The array of Strings/RegExp to exclude files from deploying.include
: The array of Strings/RegExp to include only certain files to deploying. This option overridesexclude
configuration.srcFolderPath
: The relative path to the src folder with Salesforce project metadata. If this option provided the plugin will search for old version of static resource and replace it with a newly bundled. (search forsrcFolderPath
/staticresources/staticResourceName
)
Also, you can provide only String/RegExp instead of array -
exclude: 'vendors.bundle.js'
Examples:
- To exclude all JavaScript map files:
exclude: /.js.map/
- You can mix full file names with RegExp:
exclude: ['vendor.bundle.js', /.js.map/]
- The ability to deploy folders that are placed in deployment folder, for example -
asset
folder - The option to use Salesforce
Tooling API
instead ofMatadata API
- The option to see logs about deployment process
You're free to contribute to this project by submitting issues and/or pull requests. This project uses the semistandard code style.
This project is licensed under MIT.