1.0.1 • Published 4 years ago

static-resource-webpack-plugin v1.0.1

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

Latest Stable Version NPM Downloads License

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-dev

Configuration

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

NameTypeDefaultRequiredDescription
staticResPath{String}./force-app/main/default/staticresourcesfalsepath to your static resource directory
cacheControl{String}PublicfalseSets default cacheControl to Public or Private
excludeList{Array}undefinedfalseList 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
└── .gitignore

webpack.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