@acdf/build
Version:
Build dependency for Adobe Campaign Developer Framework projects
53 lines (36 loc) • 2.22 kB
Markdown
## Namespace
The concept of a namespace is already used in Campaign with regards to the database to protect your tables from conflicting with native ones if they share the same name. ACDF uses a similar concept with regards to Javascript.
The project namespace is essentially just an object which will serve as a container for your custom code. In order to avoid conflicts, you should always envelop your scripts in an [IIFE](https://developer.mozilla.org/en-US/docs/Glossary/IIFE) and then assign those entities which you *do* want to use outside of a script to the namespace. See the section below on libraries for a more in-depth explanation.
## Filenames
ACDF uses filenames to determine how a file should be processed.
### Javascript
Format:`{name}.{suffix}.js`
The name can be anything you want it to be. The suffix will tell ACDF how to process your file during the build. Here is a breakdown of the different suffixes and what they represent:
#### Libraries
Libraries allow you to organise and/or reuse your code. In concept, it corresponds to the `xtk:javascript` entity in Campaign. A library should export the functions and objects which you want to use elsewhere by assigning them to your namespace.
For example, if you wanted to create a reusable function and call it in a workflow activity:
**hello.library.js**
```js
(() => {
// This defines a function without saving it in the global scope.
function helloWorld() {
logInfo("Hello world");
}
// This assigns the helloWorld function to the ACDF namespace.
ACDF.helloWorld = helloWorld;
})();
```
**hello.activity.js**
```js
(() => {
// This loads the library, similarly to a require() in CommonJS or the 'import' statement in ES modules
loadLibrary("acdf:hello.library.js");
// This calls the function from the namespace
ACDF.helloWorld();
})();
```
- `library`: This denotes a JS library which can be called via `loadLibrary()`. This corresponds to the `xtk:javascript` entity. You should use
- `activity`: This is JS activity in a workflow.
Examples:
- `demo.library.js`: A library to be loaded using `loadLibrary()` which provides a feature described by `demo`.
- `dev.env.js`