Quix is a CLI, created aiming for the best developer experience with the VTEX IO platform.
Getting started • Commands • Installation • Contributing • Known issues • LICENSE
Important
Quix is on the lookout for new project maintainers. I'm not currently working with VTEX, which makes developing and testing the project a bit tricky. 😅
First, to clarify the purpose of this project. As developers, we know the importance of a fast and reliable developer experience. And that's what we are aiming for, to make the VTEX IO developer experience as pleasant as possible.
Note
This CLI is a work in progress, and only a few commands are currently available.
The following commands are available:
Links the project to the current workspace.
This command will synchronize the local project with the remote VTEX account you are logged in. (At the moment, the login
and use
commands are not implemented, use the VTEX IO CLI instead.)
qx link <FLAGS>
Flag | Description |
---|---|
-c |
Cleans the project cache before linking. |
-q |
Enables quick linking, skipping steps. 👀 |
-
Check the releases page to download the latest version of the CLI.
-
Then we need to setup the CLI, for an easier setup we have created a script to add the CLI to your
PATH
environment variable. The setup process goes as follows:
🖥️ Windows
[!WARNING] Tested on version
0.0.0
, newer versions are expected to work, but not covered.
git clone https://github.com/rafaelrcamargo/quix
cd quix
cargo run # OR cargo build --release
🍎 MacOS
git clone https://github.com/rafaelrcamargo/quix
cd quix
cargo run # OR cargo build --release
🐧 Linux
[!WARNING] Tested on version
0.0.0
, newer versions are expected to work, but not covered.
git clone https://github.com/rafaelrcamargo/quix
cd quix
cargo run # OR cargo build --release
One of the main focuses of this project is performance. We have implemented and documented several benchmarks to help improve the performance of Quix. The following benchmark is available:
-
- Compares the performance of the minifier crate and the VTEX IO Link endpoint, analyzing the performance of raw files and minified files in the initial and subsequent
quix link
commands.
- Compares the performance of the minifier crate and the VTEX IO Link endpoint, analyzing the performance of raw files and minified files in the initial and subsequent
-
⚖️ Release + Compression
- With the search for a small and efficient binary, we have implemented a release script that uses the common
cargo
commands to build the binary, and then compress it using the UPX tool with reduced the final binary size by ~40% (On Mac).
File size Ratio Format Name -------------------- ------ ----------- ----------- 1990232 -> 786448 39.52% macho/arm64 quix
- With this we finish with a binary that weights ~750K, wich is a great improvement from the original ~1.2M, it's a known fact that the Rust compiler generates binaries with a bigger size, but with this we can reduce the size of the binary to a more reasonable size.
-rwxr-xr-x@ 1 .... staff 768K ... .. ..:.. ./quix
- With the search for a small and efficient binary, we have implemented a release script that uses the common
The following results were obtained using the time
utils on Mac OS on a MacBook Air M1.
Time can sound as a weird choice based on the modern standards, but as both of the CLI's keep running in watch mode, the test's were made based on the first sight of the
Linked successfully
message.
VS Code - Terminal not rendering properly?
That's a known issue, and it's related to the way VS Code handles the terminal. To fix this, just open the settings and add the following line:
{
...
"terminal.integrated.gpuAcceleration": "on"
}
This will enable the GPU acceleration for the terminal, and it will fix the rendering issue. For now this solves the issue, but can get kinda weird with some appearance settings.
Contributions to this project are welcome! If you have any suggestions or improvements, please open an issue or pull request.
This code is licensed under the Apache 2.0 license.