Features allow for conditional dependency resolution, particularly useful when using the Declarative Parser (activated via --parser:declarative).
Defining a feature
Use the feature block in your .nimble file:
feature "chronos":
requires "chronos"
Activating a feature
- Via CLI:
nimble --features:chronos install - Via dependency:
requires "awesomeAsyncPackage[chronos]" (or multiple: [chronos, feature2])
Checking active features in code
In your Nim source code, use the following pattern:
when defined(features.packageName.featureName):
# In .nimble
feature "chronos":
requires "chronos"
# In Nim code
when defined(features.awesomeAsyncPackage.chronos):
import chronos