Directives
using directives
Benchmarking options
Add benchmarking options
//> using jmh value
//> using jmhVersion value
Examples
//> using jmh
//> using jmh true
//> using jmhVersion 1.37
BuildInfo
Generate BuildInfo for project
//> using buildInfo
Examples
//> using buildInfo
Compiler options
Add Scala compiler options
//> using scalacOption option
//> using option option
//> using scalacOptions option1 option2 …
//> using options option1 option2 …
//> using test.scalacOption option
//> using test.option option
//> using test.scalacOptions option1 option2 …
//> using test.options option1 option2 …
Examples
//> using option -Xasync
//> using options -Xasync -Xfatal-warnings
//> using test.option -Xasync
//> using test.options -Xasync -Xfatal-warnings
Compiler plugins
Adds compiler plugins
using plugin org:name:ver
Examples
//> using plugin org.typelevel:::kind-projector:0.13.2
Compute Version
Method used to compute the version for BuildInfo
//> using computeVersion method
Examples
//> using computeVersion git
//> using computeVersion git:tag
//> using computeVersion git:dynver
Custom JAR
Manually add JAR(s) to the class path
//> using jar path
//> using jars path1 path2 …
//> using test.jar path
//> using test.jars path1 path2 …
//> using source.jar path
//> using source.jars path1 path2 …
//> using test.source.jar path
//> using test.source.jars path1 path2 …
Examples
//> using jar /Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/chuusai/shapeless_2.13/2.3.7/shapeless_2.13-2.3.7.jar
//> using test.jar /Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/chuusai/shapeless_2.13/2.3.7/shapeless_2.13-2.3.7.jar
//> using sourceJar /path/to/custom-jar-sources.jar
//> using sourceJars /path/to/custom-jar-sources.jar /path/to/another-jar-sources.jar
//> using test.sourceJar /path/to/test-custom-jar-sources.jar
Custom sources
Manually add sources to the project. Does not support chaining, sources are added only once, not recursively.
//> using file path
//> using files path1 path2 …
Examples
//> using file utils.scala
//> using file https://raw.githubusercontent.com/softwaremill/sttp/refs/heads/master/examples/src/main/scala/sttp/client4/examples/json/GetAndParseJsonCatsEffectCirce.scala
Dependency
Add dependencies
//> using dep org:name:ver
//> using deps org:name:ver org:name:ver
//> using dependencies org:name:ver org:name:ver
//> using test.dep org:name:ver
//> using test.deps org:name:ver org:name:ver
//> using test.dependencies org:name:ver org:name:ver
//> using compileOnly.dep org:name:ver
//> using compileOnly.deps org:name:ver org:name:ver
//> using compileOnly.dependencies org:name:ver org:name:ver
//> using scalafix.dep org:name:ver
//> using scalafix.deps org:name:ver org:name:ver
//> using scalafix.dependencies org:name:ver org:name:ver
Examples
//> using dep com.lihaoyi::os-lib:0.9.1
//> using dep tabby:tabby:0.2.3,url=https://github.com/bjornregnell/tabby/releases/download/v0.2.3/tabby_3-0.2.3.jar
//> using test.dep org.scalatest::scalatest:3.2.10
//> using test.dep org.scalameta::munit:0.7.29
//> using compileOnly.dep com.github.plokhotnyuk.jsoniter-scala::jsoniter-scala-macros:2.23.2
//> using scalafix.dep com.github.xuwei-k::scalafix-rules:0.5.1
Exclude sources
Exclude sources from the project
//> using exclude pattern
//> using exclude pattern1 pattern2 …
Examples
//> using exclude utils.scala
//> using exclude examples/* */resources/*
//> using exclude *.sc
JVM version
Use a specific JVM, such as 14, adopt:11, or graalvm:21, or system. scala-cli uses coursier to fetch JVMs, so you can use cs java --available to list the available JVMs.
//> using jvm value
Examples
//> using jvm 11
//> using jvm adopt:11
//> using jvm graalvm:21
Java home
Sets Java home used to run your application or tests
//> using javaHome path
Examples
//> using javaHome /Users/Me/jdks/11
Java options
Add Java options which will be passed when running an application.
//> using javaOpt options
//> using javaOptions options`
//> using test.javaOpt options
//> using test.javaOptions options`
Examples
//> using javaOpt -Xmx2g -Dsomething=a
//> using test.javaOpt -Dsomething=a
Java properties
Add Java properties
//> using javaProp key=value
//> using javaProp key
//> using test.javaProp key=value
//> using test.javaProp key
Examples
//> using javaProp foo1=bar foo2
//> using test.javaProp foo3=bar foo4
Javac options
Add Javac options which will be passed when compiling sources.
//> using javacOpt options
//> using javacOptions options
//> using test.javacOpt options
//> using test.javacOptions options
Examples
//> using javacOpt -source 1.8 -target 1.8
//> using test.javacOpt -source 1.8 -target 1.8
Main class
Specify default main class
//> using mainClass main-class
Examples
//> using mainClass HelloWorld
ObjectWrapper
Set the default code wrapper for scripts to object wrapper
//> using objectWrapper
Examples
//> using objectWrapper
Packaging
Set parameters for packaging
//> using packaging.packageType package-type
//> using packaging.output destination-path
//> using packaging.provided module
//> using packaging.graalvmArgs args
//> using packaging.dockerFrom base-docker-image
//> using packaging.dockerImageTag image-tag
//> using packaging.dockerImageRegistry image-registry
//> using packaging.dockerImageRepository image-repository
//> using packaging.dockerCmd docker-command
Examples
//> using packaging.packageType assembly
//> using packaging.output foo
//> using packaging.provided org.apache.spark::spark-sql
//> using packaging.graalvmArgs --no-fallback
//> using packaging.dockerFrom openjdk:11
//> using packaging.dockerImageTag 1.0.0
//> using packaging.dockerImageRegistry virtuslab
//> using packaging.dockerImageRepository scala-cli
//> using packaging.dockerCmd sh
//> using packaging.dockerCmd node
Platform
Set the default platform to Scala.js or Scala Native
//> using platform (jvm|scala-js|js|scala-native|native)+
//> using platforms (jvm|scala-js|js|scala-native|native)+
Examples
//> using platform scala-js
//> using platforms jvm scala-native
Publish
Set parameters for publishing
//> using publish.organization value
//> using publish.name value
//> using publish.moduleName value
//> using publish.version value
//> using publish.url value
//> using publish.license value
//> using publish.vcs value
//> using publish.scm value
//> using publish.versionControl value
//> using publish.description value
//> using publish.developer value
//> using publish.developers value1 value2
//> using publish.scalaVersionSuffix value
//> using publish.scalaPlatformSuffix value
Examples
//> using publish.organization io.github.myself
//> using publish.name my-library
//> using publish.moduleName scala-cli_3
//> using publish.version 0.1.1
//> using publish.url https://github.com/VirtusLab/scala-cli
//> using publish.license MIT
//> using publish.vcs https://github.com/VirtusLab/scala-cli.git
//> using publish.vcs github:VirtusLab/scala-cli
//> using publish.description "Lorem ipsum dolor sit amet"
//> using publish.developer alexme|Alex Me|https://alex.me
//> using publish.developers alexme|Alex Me|https://alex.me Gedochao|Gedo Chao|https://github.com/Gedochao
//> using publish.scalaVersionSuffix _2.13
//> using publish.scalaVersionSuffix _3
//> using publish.scalaPlatformSuffix _sjs1
//> using publish.scalaPlatformSuffix _native0.4
Publish (CI)
Set CI parameters for publishing
//> using publish.ci.computeVersion value
//> using publish.ci.repository value
//> using publish.ci.secretKey value
Examples
//> using publish.ci.computeVersion git:tag
//> using publish.ci.repository central-s01
//> using publish.ci.secretKey env:PUBLISH_SECRET_KEY
Publish (contextual)
Set contextual parameters for publishing
//> using publish.computeVersion value
//> using publish.repository value
//> using publish.secretKey value
//> using publish.doc boolean
Examples
//> using publish.computeVersion git:tag
//> using publish.repository central-s01
//> using publish.secretKey env:PUBLISH_SECRET_KEY
//> using publish.doc false
Python
Enable Python support
//> using python
Examples
//> using python
Repository
Add repositories for dependency resolution.
Accepts predefined repositories supported by Coursier (like sonatype:snapshots or m2Local) or a URL of the root of Maven repository
//> using repository repository
Examples
//> using repository jitpack
//> using repository sonatype:snapshots
//> using repository m2Local
//> using repository https://maven-central.storage-download.googleapis.com/maven2
Resource directories
Manually add a resource directory to the class path
//> using resourceDir path
//> using resourceDirs path1 path2 …
//> using test.resourceDir path
//> using test.resourceDirs path1 path2 …
Examples
//> using resourceDir ./resources
//> using test.resourceDir ./resources
Scala Native options
Add Scala Native options
//> using nativeGc immix|commix|boehm|none
//> using nativeMode debug|release-fast|release-size|release-full
//> using nativeLto none|full|thin
//> using nativeVersion value
//> using nativeCompile value1 value2 …
//> using nativeLinking value1 value2 …
//> using nativeClang value
//> using nativeClangPP value
//> using nativeClangPp value
//> using nativeEmbedResources true|false
//> using nativeEmbedResources
//> using nativeTarget application|library-dynamic|library-static
//> using nativeMultithreading true|false
//> using nativeMultithreading
Examples
//> using nativeGc immix
//> using nativeMode debug
//> using nativeLto full
//> using nativeVersion 0.5.8
//> using nativeCompile -flto=thin
//> using nativeLinking -flto=thin
//> using nativeClang ./clang
//> using nativeClangPP ./clang++
//> using nativeEmbedResources
//> using nativeEmbedResources true
//> using nativeTarget library-dynamic
//> using nativeMultithreading
//> using nativeMultithreading false
Scala version
Set the default Scala version
//> using scala version+
Examples
//> using scala 3.0.2
//> using scala 2.13
//> using scala 2
//> using scala 2.13.6 2.12.16
Scala.js options
Add Scala.js options
//> using jsVersion value
//> using jsMode value
//> using jsNoOpt true|false
//> using jsNoOpt
//> using jsModuleKind value
//> using jsCheckIr true|false
//> using jsCheckIr
//> using jsEmitSourceMaps true|false
//> using jsEmitSourceMaps
//> using jsEsModuleImportMap value
//> using jsSmallModuleForPackage value1 value2 …
//> using jsDom true|false
//> using jsDom
//> using jsHeader value
//> using jsAllowBigIntsForLongs true|false
//> using jsAllowBigIntsForLongs
//> using jsAvoidClasses true|false
//> using jsAvoidClasses
//> using jsAvoidLetsAndConsts true|false
//> using jsAvoidLetsAndConsts
//> using jsModuleSplitStyleStr value
//> using jsEsVersionStr value
//> using jsEmitWasm true|false
//> using jsEmitWasm
Examples
//> using jsVersion 1.20.1
//> using jsMode mode
//> using jsNoOpt
//> using jsModuleKind common
//> using jsCheckIr
//> using jsEmitSourceMaps
//> using jsEsModuleImportMap importmap.json
//> using jsSmallModuleForPackage test
//> using jsDom
//> using jsHeader "#!/usr/bin/env node "
//> using jsAllowBigIntsForLongs
//> using jsAvoidClasses
//> using jsAvoidLetsAndConsts
//> using jsModuleSplitStyleStr smallestmodules
//> using jsEsVersionStr es2017
//> using jsEmitWasm
Test framework
Set the test framework
//> using testFramework class-name
Examples
//> using testFramework utest.runner.Framework
//> using test.frameworks utest.runner.Framework munit.Framework
Toolkit
Use a toolkit as dependency (not supported in Scala 2.12), 'default' version for Scala toolkit: 0.7.0, 'default' version for typelevel toolkit: 0.1.29
//> using toolkit version
//> using test.toolkit` version
Examples
//> using toolkit 0.7.0
//> using toolkit default
//> using test.toolkit default
target directives
Platform
Require a Scala platform for the current file
//> using target.platform platform
Examples
//> using target.platform scala-js
//> using target.platform scala-js scala-native
//> using target.platform jvm
Scala version
Require a Scala version for the current file
//> using target.scala version
Examples
//> using target.scala 3
Scala version bounds
Require a Scala version for the current file
//> using target.scala.>= version
Examples
//> using target.scala.>= 2.13
//> using target.scala.< 3.0.2
Scope
Require a scope for the current file
//> using target.scope scope
Examples
//> using target.scope test