5초 만에 완성되는 클로저 프로젝트!
19513 단어 clojuretemplateapplication
deps.edn
테스트를 실행하고 작업을 빌드하기 위한 별칭 포함build.clj
빌드 작업 포함.gitignore
README.md
이러한 모든 생성은 deps-new을 사용하여 쉽게 자동화할 수 있습니다.
deps-new 설치
deps-new
는 Clojure CLI용 "도구"로 설치하기 위한 것입니다.Clojure CLI의 "도구"
도구는 설치할 수 있고
clj -T
옵션을 사용하여 Clojure CLI에서 호출할 수 있는 타사 라이브러리입니다. 이들은 자체 클래스 경로를 사용하며 프로젝트 디렉토리에서 도구 명령을 실행하는 경우 프로젝트deps.edn
를 방해하지 않습니다.필요할 수 있는 몇 가지 명령:
clj -Ttools list
- 이미 설치된 도구 보기clj -Ttools remove :tool tool-name
- 도구 제거clj -Ttools install tool-path tool-version :as tool-name
- 새 도구 설치에서 찾을 수 있는 도구에 대한 자세한 정보.
deps-new 도구 설치
다음은 시스템에
deps-new
를 추가하는 명령입니다.clojure -Ttools install io.github.seancorfield/deps-new '{:git/tag "v0.4.13"}' :as new
:as new
명령의 일부는 "new"가 이제 시스템에 있는 deps-new
도구의 이름임을 의미합니다. 원하는 이름을 사용할 수 있습니다.지금 도구 목록을 확인하겠습니다.
$ clj -Ttools list
TOOL LIB TYPE VERSION
new io.github.seancorfield/deps-new :git v0.4.13
tools io.github.clojure/tools.tools :git v0.2.8
어떤 기능
new
도구가 노출하는지 확인하려면 다음 명령을 실행할 수 있습니다.clojure -A:deps -Tnew help/doc
라이브러리 만들기
이제
deps-new
가 설치되면 이를 사용하여 새 라이브러리를 만들 수 있습니다.다음 명령은 루트 네임스페이스
vkjr
와 그 안에 하나의 소스 파일mycoollib.clj
이 있는 라이브러리를 생성합니다.$ clojure -Tnew lib :name vkjr/mycoollib
Creating project from org.corfield.new/lib in mycoollib
새 라이브러리의 내용은 다음과 같습니다.
mycoollib
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── build.clj
├── deps.edn
├── doc
│ └── intro.md
├── pom.xml
├── resources
│ └── .keep
├── src
│ └── vkjr
│ └── mycoollib.clj
└── test
└── vkjr
└── mycoollib_test.clj
라이브러리의 최상위 디렉토리도 이름이 지정되었지만
mycoollib
라이브러리 생성 명령에 추가 키/값 쌍을 제공하여 이 동작을 재정의할 수 있습니다:target-dir some-folder-name
.생성된 라이브러리의 내용
보시다시피 새 라이브러리에는 자동으로 생성된 파일이 많이 있습니다.
deps.edn
처음부터 테스트 및 빌드 작업에 대한 별칭이 포함되어 있습니다.{:paths ["src" "resources"]
:deps {org.clojure/clojure {:mvn/version "1.11.1"}}
:aliases
{:test
{:extra-paths ["test"]
:extra-deps {org.clojure/test.check {:mvn/version "1.1.1"}
io.github.cognitect-labs/test-runner
{:git/tag "v0.5.1" :git/sha "dfb30dd"}}}
:build {:deps {io.github.seancorfield/build-clj
{:git/tag "v0.8.2" :git/sha "0ffdb4c"}}
:ns-default build}}}
src/vkjr/mycoollib.clj
더미 기능 포함(ns vkjr.mycoollib)
(defn foo
"I don't do a whole lot."
[x]
(prn x "Hello, World!"))
그리고
test/vkjr/mycoollib_test.clj
에는 이미 하나의 실패한 테스트가 있습니다.(ns vkjr.mycoollib-test
(:require [clojure.test :refer :all]
[vkjr.mycoollib :refer :all]))
(deftest a-test
(testing "FIXME, I fail."
(is (= 0 1))))
build.clj
빌드 작업 포함 test
, ci
, install
및 deploy
(ns build
(:refer-clojure :exclude [test])
(:require [clojure.tools.build.api :as b] ; for b/git-count-revs
[org.corfield.build :as bb]))
(def lib 'net.clojars.vkjr/mycoollib)
(def version "0.1.0-SNAPSHOT")
#_ ; alternatively, use MAJOR.MINOR.COMMITS:
(def version (format "1.0.%s" (b/git-count-revs nil)))
(defn test "Run the tests." [opts]
(bb/run-tests opts))
(defn ci "Run the CI pipeline of tests (and build the JAR)." [opts]
(-> opts
(assoc :lib lib :version version)
(bb/run-tests)
(bb/clean)
(bb/jar)))
(defn install "Install the JAR locally." [opts]
(-> opts
(assoc :lib lib :version version)
(bb/install)))
(defn deploy "Deploy the JAR to Clojars." [opts]
(-> opts
(assoc :lib lib :version version)
(bb/deploy)))
build.clj
는 표준 Clojure의 tools.build
대신 build-clj 라이브러리를 사용하여 작업을 구현합니다. 해당 라이브러리는 일부 불필요한 세부 정보를 숨기고 Clojars에 배포하는 기능을 제공합니다. 이 기능은 tools.build
에서 누락되었습니다.다른 유용한 파일도 많이 있습니다.
애플리케이션 만들기
라이브러리만큼 간단한
.gitignore
를 사용하여 애플리케이션 만들기:$ clojure -Tnew app :name vkjr/mycoolapp
Creating project from org.corfield.new/app in mycoolapp
다음은 폴더 구조입니다.
mycoolapp
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── build.clj
├── deps.edn
├── doc
│ └── intro.md
├── pom.xml
├── resources
│ └── .keep
├── src
│ └── vkjr
│ └── mycoolapp.clj
└── test
└── vkjr
└── mycoolapp_test.clj
도서관 프로젝트와의 주요 차이점:
README.md
에는 pom.xml
및 LICENSE
함수가 포함되어 있습니다.(ns vkjr.mycoolapp
(:gen-class))
(defn greet
"Callable entry point to the application."
[data]
(println (str "Hello, " (or (:name data) "World") "!")))
(defn -main
"I don't do a whole lot ... yet."
[& args]
(greet {:name (first args)}))
deps-new
에는 각각 (main) 및 (greet) 함수를 실행하기 위한 추가 별칭src/vkjr/mycoolapp.clj
및 (-main)
이 있습니다....
{:run-m {:main-opts ["-m" "vkjr.mycoolapp"]}
:run-x {:ns-default vkjr.mycoolapp
:exec-fn greet
:exec-args {:name "Clojure"}}
...
}
(greet)
jar 대신 uberjar를 생성하며 (설치) 및 (배포) 기능이 없습니다....
(defn ci "Run the CI pipeline of tests (and build the uberjar)." [opts]
(-> opts
(assoc :lib lib :version version :main main)
(bb/run-tests)
(bb/clean)
(bb/uber)))
최소한의 "스크래치" 프로젝트 만들기
완전한 응용 프로그램이 필요하지 않고 단지 놀이터만 필요한 경우
deps.edn
는 "스크래치"프로젝트 생성을 지원합니다.$ clojure -Tnew scratch :name playground
Creating project from org.corfield.new/scratch in playground
이러한 "스크래치"의 폴더 구조:
playground
├── deps.edn
└── src
└── scratch.clj
거의 비어 있는
run-m
및 run-x
, (-main) 및 (greet) 기능 포함, 애플리케이션 예제에서와 같이build.clj
를 사용하여 자신만의 프로젝트 템플릿을 만들 수 있지만 이것은 또 다른 이야기입니다… ;)kozieiev.com에 원래 게시됨
Reference
이 문제에 관하여(5초 만에 완성되는 클로저 프로젝트!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kozieiev/full-clojure-project-in-5-seconds-5b32텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)