89882dbe81
Signed-off-by: Sam Alba <sam.alba@gmail.com>
79 lines
1.4 KiB
CUE
79 lines
1.4 KiB
CUE
package react
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"dagger.io/dagger"
|
|
"dagger.io/dagger/op"
|
|
"dagger.io/alpine"
|
|
)
|
|
|
|
// A ReactJS application
|
|
#App: {
|
|
// Application source code
|
|
source: dagger.#Artifact
|
|
|
|
// Environment variables
|
|
env: [string]: string
|
|
|
|
// Write the contents of `environment` to this file,
|
|
// in the "envfile" format.
|
|
writeEnvFile: string | *""
|
|
|
|
// Yarn-specific settings
|
|
yarn: {
|
|
// Read build output from this directory
|
|
// (path must be relative to working directory).
|
|
buildDir: string | *"build"
|
|
|
|
// Run this yarn script
|
|
script: string | *"build"
|
|
}
|
|
|
|
build: #up: [
|
|
op.#Load & {
|
|
from: alpine.#Image & {
|
|
package: bash: "=~5.1"
|
|
package: yarn: "=~1.22"
|
|
}
|
|
},
|
|
op.#Exec & {
|
|
args: [
|
|
"/bin/bash",
|
|
"--noprofile",
|
|
"--norc",
|
|
"-eo",
|
|
"pipefail",
|
|
"-c",
|
|
"""
|
|
[ -n "$ENVFILE_NAME" ] && echo "$ENVFILE" > "$ENVFILE_NAME"
|
|
cat .env
|
|
yarn install --production false
|
|
yarn run "$YARN_BUILD_SCRIPT"
|
|
mv "$YARN_BUILD_DIRECTORY" /build
|
|
""",
|
|
]
|
|
if env != _|_ {
|
|
"env": env
|
|
}
|
|
"env": {
|
|
YARN_BUILD_SCRIPT: yarn.script
|
|
YARN_CACHE_FOLDER: "/cache/yarn"
|
|
YARN_BUILD_DIRECTORY: yarn.buildDir
|
|
if writeEnvFile != "" {
|
|
ENVFILE_NAME: writeEnvFile
|
|
ENVFILE: strings.Join([ for k, v in env {"\(k)=\(v)"}], "\n")
|
|
}
|
|
}
|
|
dir: "/src"
|
|
mount: {
|
|
"/src": from: source
|
|
"/cache/yarn": "cache"
|
|
}
|
|
},
|
|
op.#Subdir & {
|
|
dir: "/build"
|
|
},
|
|
]
|
|
}
|