Creating the common project

The common project is the Flare project in which you create content that is automatically imported by all projects. The automatic import is performed whenever building an output target. (Optionally, you can also automatically delete any stale files that no longer exist in the common project at the same time.) This ensures that each generated output target contains the latest common content updates. The shared content in the common project can include configuration files (such as style sheets and skins), as well as authored content (such as legal notices and contact information). Creating a common project not only simplifies maintenance, but also improves both authoring and formatting consistency across all projects in your environment.

When creating the common project, you will also create a conditional text set that allows you to include or exclude content from individual projects. Although Flare also supports including or excluding content using properties defined in import files, using conditional tags in the common project simplifies maintenance, by allowing you to easily retag content in a single project to add or remove it from other projects—without needing to edit the import files used by those projects.

When creating the common project, follow these guidelines

  1. Nest all common project elements within subfolders or sets named Common. (You could alternatively use any other similar name, such as Global or Shared.) Using a common naming scheme allows you to easily exclude the imported common content from source control, and also distinguishes for authors which files are imported (and shouldn't be edited directly) and which are project-specific (and can be freely changed). For example, you might create the following folders and components:
  • Content/Resources/Images/Common - Stores your logo, product branding images, and other shared graphics.
  • Content/Resources/Fonts/Common - Stores any font files that you distribute with your project.
  • Content/Resources/MasterPages/Common - Stores the master pages that you have defined for use in various output formats.
  • Content/Resources/Stylesheets/Common - Stores the style sheets that define the formatting used in various output formats.
  • Content/Resources/TableStyles/Common - Stores the style sheets that format tables in various output formats.
  • Content/Resources/Snippets/Common - Stores common subtopic content, such as descriptions of the various conventions used in your output (for example, a monospace font for code snippets, braces for variables, or other conventions you use; defining these as snippets allows authors to easily include or exclude the descriptions based on whether the convention applies to a specific output target).
  • Content/Common - Stores authored topics that are common to all projects, such as legal notices or contact information.
  • Project/ConditionTagSets/Common.flcts - Defines common conditional tags that are available for use in all projects (such as Common.InternalOnly, Common.PrintOnly, or Common.HelpOnly). Defining common conditional tag sets improves consistency when defining conditional expressions for targets and makes it easier for authors working in multiple projects to consistently apply tags.
  • Project/Destinations/Common - Stores any publishing destinations that are common to all projects.
  • Project/Glossaries/Common - If your company uses a standard glossary of terminology across all projects, you can define it here.
  • Project/Reports/Common - Stores standard analysis reports that ensure consistency of metrics across projects.
  • Project/Skins/Common - Stores common skins that design the look and feel of various output formats.
  • Project/VariableSets/Common.flvar - Stores variables that are consistently used across projects (even though the values differ by project and/or target), such as Common.VersionNumber, Common.ProductName, Common.CurrentYear, and so on.
  1. Place the common project near the top-level of your version control repository, (such as in a folder located in the root directory). This makes it easier to create relative paths to the project from others that import the common content.
  2. Create a CommonInclude conditional text set with separate conditions for each product or project in your organization that has different content needs. (For example, one product group might need its customized PDF covers used by multiple projects, while another might deliver only online content with no printed publication formats. Using conditional tags, you can flag a PDF cover for inclusion in specific projects, while excluding all PDF-related collateral from those projects that only use online help.)

Tip   As a best practice, include a CommonInclude.All condition, that allows you to tag content that is used by all projects (for example, a common skin or stylesheets).

  1. After creating the conditional text sets, apply the appropriate conditions that you created in step 3 to all content in the common project; this allows you to selectively include content in some projects, while excluding it from others.

You are now ready to configure the projects that import from the common project.