static-resource-webpack-plugin
v1.0.1
Published
webpack plugin that reads the static resource directory of your sfdx project and creates the needed xml files required to deploy to salesforce
Maintainers
Readme
Static Resource Webpack Plugin
This is a Webpack plugin that watches your configured output path in your static resource directory of your Salesforce SFDX project and automatically creates the necessary MetaData XML files in order to deploy/push to a Salesforce Org.
If there is already a .resource-meta.xml for an item in the directory w/ the corresponding name, it is ignored.
Once created, the plugin doesn't overwrite the previously created file. To reset the resulted xml file, delete manually and re-run your webpack build.
Requirements
- Node and npm installed on your machine
- Your SFDX Project is in source format
Install
npm i static-resource-webpack-plugin --save-devConfiguration
webpack.config.js
const StaticResourcePlugin = require('static-resource-webpack-plugin')Then pass in a object w/ property name staticResPath
webpack.config.js
const path = require('path')
const StaticResourcePlugin = require('static-resource-webpack-plugin')
module.exports = {
entry: './src/index.js',
output: {
filename: '[name].bundle.js',
path: './force-app/main/default/staticresources',
},
plugins: [
new StaticResourcePlugin()
],
}Options
| Name | Type | Default | Required | Description |
| :----------------: | :----------: | :---------: | :------: | :----------------------------------------------------------------- |
| staticResPath | {String} | ./force-app/main/default/staticresources | false | path to your static resource directory |
| cacheControl | {String} | Public | false | Sets default cacheControl to Public or Private |
| excludeList | {Array} | undefined | false | List of file names to ignore and not create an equivalent file for |
{
staticResPath: '', // set the path to the folder to watch and create xml files for
exclude: [''], // list of files/directories to exclude and not create a xml file for
cacheControl: 'Private'
}Example
Project Structure (Before)
** Project **
├── src
│ ├── app
│ │ ├── index.js
├── force-app
│ ├── main
│ │ ├── default
│ │ │ ├── staticresources
│ │ │ │ ├── dist
│ │ │ │ │ ├── vendor.bundle.js
│ │ │ │ │ ├── main.bundle.js
├── README.md
├── package.json
└── .gitignorewebpack.config.js
new StaticResourcePlugin({
staticResPath: path.resolve("./force-app/main/default/staticresources")
})Resulting File(s)
dist.resource-meta.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<StaticResource xmlns="http://soap.sforce.com/2006/04/metadata">
<cacheControl>Public</cacheControl>
<contentType>application/zip</contentType>
</StaticResource>Project Structure (After)
** Project **
├── src
│ ├── app
│ │ ├── index.js
├── force-app
│ ├── main
│ │ ├── default
│ │ │ ├── staticresources
│ │ │ │ ├── dist
│ │ │ │ │ ├── vendor.bundle.js
│ │ │ │ │ ├── main.bundle.js
│ │ │ │ │ dist.resource-meta.xml /* created xml file */
├── README.md
├── package.json
└── .gitignore