Shared Library Files in Axure
For design teams working together, there is often a challenge to maintain consistency in style & presentation. If care isn’t taken, each designer’s product may end up looking distinctly different from their peers’ work. To combat this, pattern libraries, design guides, etc are often constructed to provide the necessary information, sometimes going so far as to even providing starting components.
In Axure, this could be accomplished via several means. Team Projects allow for multiple designers to share files via an SVN system. A collection of widgets could be constructed and included in a Team Project that the team has access too. Unfortunately, the widgets would either need to be imported into an existing axure file (copy / paste doesn’t maintain a widget’s styles) or the Pattern Library would need to function as the starting template. Additionally, the Pattern Library pages would be included in the project sitemap, would increase the overall file size, and would need to be excluded from any output.
Axure’s widget libraries seem like an ideal solution, as they overcome many of these limitations. They don’t clutter the sitemap, handle widget styles well, and don’t increase file size. However, libraries face two unique issues. First, they can’t be shared from within Axure like Team Projects. Cloud storage systems like Box or Google Drive can provide a third party solution to ensure that teams have access to the latest version of the library, but this leads to the second issue. Unless placed in a specific folder within the Axure folder structure, a user must manually load each library they wish to use on a project. So maintaining the latest version of the library within axure becomes an additional task. The two issues seems to conflict with one another, as a library file stored in the cloud and synced to a user’s system would not be in the correct location to be found by Axure automatically. Alternatively, any libraries in the Axure folder would be unable to sync to the cloud (at least with the cloud storage systems that I am familiar with).
One possible solution, is an old file system feature: symbolic links. Symlinks can effectively fool an application into thinking that a file is in one location while actually being stored in another. That is a very, very simplified and probably flawed explanation, so feel free to read up on them yourself. For our purposes though, what it means is that we can store our Axure libraries in a synced cloud folder that is shared among the team and still have Axure think the library files are in the correct folder to be loaded automatically.
Instructions for people comfortable with the filesystem, terminal, etc:
Symlink the file/files in your synced cloud storage folder to the Axure Libraries folder:
ln -s /path/to/axure/library/file/in/cloud/synced/folder/lib.rplib /path/to/axure/libraries/folder
Instructions for everyone else:
While there may be other methods to create a symlink, I’ve found the easiest to be from within the Terminal. Yes, the command line. Don’t be afraid. Let’s walk through the steps on a Mac. Anyone on another OS is on their own for now I’m afraid.
- Open the Terminal. Command-Space to up spotlight, type “terminal” and hit return.
- Welcome to the command line, it probably looks something like this:
- The actual command we want to use is: ln . That’s a lower case L FYI. This is what creates a link between the two file system locations. However, we want to create a symbolic link, so we’ll need the -s flag. So our full command will look like this:
ln -s /path/to/library/files/in/cloud/library.rplib /path/to/axure/folder
In my case, it looks like this:
By default on Mac, the Axure folder we’re looking for is at:
What about your cloud files? Well, that depends on where you stored them. Never created a file path string before? No worries, you don’t actually need to as long as you can locate the folders you want to link in Finder. By default, with the folder or file selected Command-C will copy the location to the clipboard and Command-V in terminal will paste the location.
So your process might look something like this:
* Copy the library file location in Finder
* Switch back to the terminal, type in: ln -s
* Command-V to paste the location
* Type in: ~/Documents/Axure/Libraries/ or whatever your Axure Library folder path may be
* Hit return
- Now, the next time you open an Axure project, check in your libraries pane for your fancy new, connected, cloud synced widget libraries.
Have more than one shared library that you want to use? No problem. Repeat the process for each file or use a wildcard to link all of the libraries in the cloud folder.
ln -s /path/to/cloud/folder/* /path/to/axure/folder
After a couple of emails with a commenter, I created a quick Automator workflow to help Mac users get started. Check it out if you want.