For an introduction to Jsonnet and documentation, visit our website.
This repository contains the original implementation. You can also try go-jsonnet, a newer implementation which in some cases is orders of magnitude faster, and is recommended in preference to the C++ version.
Visit our discussion forum.
Security note: If you need to process untrusted inputs (untrusted Jsonnet code), it is best not to use the C++ implementation, as it is not hardened for that use-case. The expected use-case is for evaluating Jsonnet code that you / your organisation has written and trusts not to be malicious.
Jsonnet is available on Homebrew:
brew install jsonnet Jsonnet is available on MSYS2:
pacman -S mingw-w64-clang-i686-jsonnet pacman -S mingw-w64-clang-x86_64-jsonnet pacman -S mingw-w64-i686-jsonnet pacman -S mingw-w64-x86_64-jsonnet pacman -S mingw-w64-ucrt-x86_64-jsonnet The Python binding is on pypi:
pip install jsonnet You can also download and install Jsonnet using the vcpkg dependency manager:
git clone https://github.com/Microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg integrate install vcpkg install jsonnet The Jsonnet port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.
You can use either GCC or Clang to build Jsonnet. Note that on recent versions of macOS, /usr/bin/gcc and /usr/bin/g++ are actually Clang, so there is no difference.
To build Jsonnet with GCC, run:
make To build Jsonnet with Clang, run:
make CC=clang CXX=clang++ To run the output binary, run:
./jsonnet To run the reformatter, run:
./jsonnetfmt Bazel builds are also supported. Install Bazel if it is not installed already. Then, run the following command to build with GCC:
bazel build -c opt //cmd:all To build with Clang, use one of these two options:
env CC=clang CXX=clang++ bazel build -c opt //cmd:all # OR bazel build -c opt --action_env=CC=clang --action_env=CXX=clang++ //cmd:all This builds the jsonnet and jsonnetfmt targets defined in cmd/BUILD. To launch the output binaries, run:
bazel-bin/cmd/jsonnet bazel-bin/cmd/jsonnetfmt cmake . -Bbuild cmake --build build --target run_tests See the contributing page on our website.
To run the comprehensive suite:
make test You need a doc/js/libjsonnet.wasm which can either be downloaded from the production website:
wget https://jsonnet.org/js/libjsonnet.wasm -O doc/js/libjsonnet.wasm Or you can build it yourself, which requires checking out go-jsonnet. See the README.md in that repo for instructions.
The standard library is documented in a structured format in doc/_stdlib_gen/stdlib-content.jsonnet. The HTML (input for Jekyll) is regenerated using the following command:
tools/scripts/update_web_content.sh Then, from the root of the repository you can generate and serve the website using Jekyll (you need version 4.3.0 or later):
jekyll serve -s doc/ This should build and serve the website locally, and automatically rebuild when you change any underlying files.