WHY DOES SOLIDARITY EXIST? Package management .lock
files help zero-in on dependencies, but some stacks need more! For example, React Native needs specific Android SDK, Pods, Xcode, node, & even versions of NPM and Yarn. Solidarity is the perfect tool for making sure your team is sharing the same complex environment without worrying about the environment complexity.
Using solidarity easy! Run the command to check the current project environment
$ solidarity
This command looks for the .solidarity
file in the working directory, and then runs a check of the containing rules against your environment. The command exit code is tied to the success of solidarity check so for testing frameworks.
Environment updates can be stored to solidarity quickly.
$ solidarity snapshot
The snapshot
parameter will update the rules in the .solidarity
file to the current system specs. By default a snapshot will be strict with the versions of everything detected. But, semantic versioning is supported.
If no .solidarity
file is present, then solidarity snapshot
prompts you to identify the technology your project depends on.
$ solidarity snapshot
No `.solidarity` file found for this project. Would you like to create one? (Y/n)
Custom rule-sets can be created by modifying the .solidarity
file by hand, or by creating a solidarity plugin for a given technology. See documentation for how you can create your own.
Install command globally, OR use via node_modules
. It's suggested you install your snapshot plugins in the same place.
# example of installing global with npm and react-native snapshot
$ npm i -g solidarity solidarity-react-native
# example of installing local with yarn and elixir snapshot (dev dependencies)
$ yarn add soliarity solidarity-elixir --dev
Currently solidarity only works with Mac and Linux. Functionality for Windows OS is in the works. Please submit PRs.
Solidarity, as open source, is free to use and always will be. Infinite Red offers premium Solidarity support and general mobile app design/development services. Email us at hello@infinite.red to get in touch with us for more details.