Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Getting Started with Sitecore Ignition
Developed by Jon Upchurch, George Chang, and Corey Smith of Perficient, Inc.
What IS Ignition?
Ignition is a development accelerator and platform that combines good development practices in general and melds them with the concepts of Sitecore Helix in a way that is both easy to pick up and easy to use. We have built everything around the idea that anyone with a basic level of ASP.NET and C# capabilities should be able to start contributing to a project quickly from day 1 with as little setup, ramp-up time, and hassle as possible. Ignition is built around everything being extremely modular. Where Ignition 1.0 had a clear and linear dependency graph, Ignition 2.0 is designed to have almost NO dependency graph! Everything can live in isolation from everything else, from Features to Foundational elements to the core Website projects. We've spent a lot of time and effort to craft this to be the best we could make it and we're very proud of the result. We hope you like it as well!
- Ignition.Foundation.Core: The core components of the framework that provide the interfaces and base classes for the whole system.
- Ignition.Foundation.CompositionRoot: To be added to a single web project, this provides the initial configuration of our IoC container as well as creating the foundation for all the rest of the modules to be independent but still work seamlessly together.
Suggestion: Install the Visual Studio project template from here: https://github.com/sitecoreignition/Ignition.Foundation/blob/master/Ignition.Template.Project.zip
- Install a clean version of Sitecore
- Complete any initial setup of Sitecore including installing Sitecore PowerShell Extensions and any other packages you might use.
- Install the Ignition starter package found here: https://github.com/sitecoreignition/Ignition.Foundation/blob/master/Ignition%20Starter%20Items-2.0.zip
- Create a new Ignition Project using the template above.
- Update all Nuget packages as needed.
- Either add references to Sitecore.Kernel and Sitecore.Mvc to your solution, or jump to the optional steps below.
- Configure deployment and item serialization using your favorite tools! We recommend using Unicorn for serialization, and there are some sample configuration files included. Optional Steps
- Using either the windows command prompt or a tool such as Link Shell Extensions, create a symbolic link that points to your solution root directory. Name it "Solution" and it should be located in your Site folders at the same level as your data and website folders.
- Create a _Publish and _Source folder in your solution root
- Copy the contents of your Sitecore website folder into _Source. This will give you a clean point where you can clear out your website folder and recopy from the _Source folder for a refresh. Also, you can then reference all Sitecore dll's directly in there from your projects (See step 6 above).
- Create a symbolic link called "Website" in the same folder as _Source. This should point to your Website folder in your deployed site.
The Symbolic links allow you to publish any and all of the projects you might create with our template with no additional configuration. It will publish across the symbolic link to the website folder. Also, if you ARE using Unicorn, you can configure your serialization targets to use "~/../Solution". This means that because this also goes through the symbolic link, you can use the same configuration for your entire team (assuming they set this up as well).
That's really it. If you want to take off in your own direction, then skip the optional steps and move on from there. We really find that the optional steps will make things much easier however.
As long as you are creating your projects using our template, they will automatically be included in our IoC wireup as well as Glass Mapper. Nothing more needs to be done or configured. If you are trying to add this capability to another project dll, just reference Ignition.Foundation.Core via Nuget and add the IgnitionAutomapAttribute to any assembly you need. This is what gets keyed on to run setup for IoC and Glass. If you don't have any custom IoC config, we automatically get controllers and all the other core stuff. If you have your own services that you need to register, just make an installer that implements IPackage from SimpleInjector and it too will automatically get run.
There are no dependencies between projects, either within the solution or without. If you're doing things correctly, any single project can be lifted and shifted and even deployed into a running Ignition site with no additional work. More info to follow on this.
You are free to use Attribute mapping or Fluent mappers with no additional configuration. We will automatically scan assemblies as we do with the IoC setup and we will pre-cache all assemblies into Glass's type cache. Also, if you are using Fluent GlassMap<> classes, these will also get scanned and automatically configured as well. No muss no fuss!