Before opening the editor
Create the files and folders you plan to package. A source may be an individual file or a directory. Use paths relative to the .vfsworkspace.json file when you want a movable project folder; use absolute paths when the content deliberately lives elsewhere.
MyFederation\
federation.vfsworkspace.json
content\root\README.txt
content\plugin\plugin.txt
1. Open Design federation
Create or open a workspace, then choose Design federation on Home, Federation Workspace Editor… on the toolbar, or the same command under Workspace. The root project and its default active build profile already exist.
2. Add sources
- Open Sources and choose Add source….
- Select the project that owns the content.
- Enter a file or directory, for example
content\root. - Enter a virtual root such as
/or/docs, then choose Save.
| Source kind | Example | Paths added to the VFS |
|---|---|---|
| Directory | content\root at /docs | Every regular file below the directory, preserving its relative path; README.txt becomes /docs/README.txt. |
| File | content\logo.svg at /assets | The file name is appended; the result is /assets/logo.svg. |
Sources are read only when you start a build. Missing paths, symbolic links, or two sources producing the same virtual path stop the build with an error; source files are never modified.
3. Add a child project and mount it
- On Projects, choose Add project…. Give it a name and initial package namespace.
- On Sources, add the child project’s file or directory.
- On Mounts, choose Add mount…. Select the root as Parent and the new project as Child.
- Set a prefix such as
/plugins/demo, keep Delivery mode Embedded, and begin with Collision policy Error.
An embedded mount makes the complete child image available below the prefix in its parent. A project cannot mount itself; cycles and duplicate prefixes are rejected. Bundled and External can be recorded for future provider workflows, but the current complete workspace build stops clearly if either is present.
4. Review build profiles
Each new project receives a default profile. On Build profiles you can add or edit a profile, then select it and choose Make active. The active profile supplies the package namespace, image index profile, and number of previous roots retained by the generated writable Perl runtime.
Profile ID is a stable machine name such as release; Display name is for people; Package namespace is the deterministic identity stored in the image. Exactly one profile should be active for every project you build.
5. Correct a change safely
Choose Undo to apply the inverse of the latest authoring command. Choose Redo to reapply it. Both are new committed generations, so the audit trail remains intact. Removing the root project is forbidden. A child project must be unmounted before it can be removed.
6. Build the saved design
Close the editor and choose Build & export. Confirm the destination, then choose Build VFS or Build + Export Perl. See Build and export for verification and command-line equivalents.
Pre-build checklist
- Every project needed by the root has at least one valid source.
- Every relative source path is relative to the workspace file’s folder.
- Every virtual root and mount prefix begins with
/. - Every current mount uses Embedded delivery.
- Each project has an active build profile with the intended namespace.
- Collision policy is
errorunless an overlap was deliberately reviewed.