์ต์ Fable(0.4.4)์์ ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ์ฐธ์กฐํ๋ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฐธ์กฐ๋๋ ํ๋ก์ ํธ์ ์ด๋ฆ์ ์ ์ด ์์ผ๋ฉด Fable์ด require ํธ์ถ์์ ์๋ชป๋ ๊ฒฝ๋ก๋ฅผ ์์ฑํ๊ณ ์๋ ๊ฒ์ ๋๋ค. Fable์ ์ ๊ทธ๋ ์ด๋ํ๊ธฐ ์ ์๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
Library
, Library.Another
๋ฐ Main
์ธ ๊ฐ์ F# ํ๋ก์ ํธ๊ฐ ์๋ ์๋ฃจ์
์ด ์๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. Main
๋ Library
๋ฐ Library.Another
๋ชจ๋ ์ฐธ์กฐํฉ๋๋ค. ์ด์ ๋ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ก์ ํธ๊ฐ ์ด๋ฏธ Fable์ ์ํด out/library
๋ฐ out/library-another
๋ก ์ปดํ์ผ๋์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์ด์ ์ด fableconfig.json์ ์ฌ์ฉํ์ฌ Main
ํ๋ก์ ํธ๋ฅผ ์ปดํ์ผํ๋ฉด...
{
"module": "commonjs",
"outDir": "out/main",
"projFile": "Test/Main/Main.fsproj",
"refs": {
"Library": "../library",
"Library.Another": "../library-another"
}
}
... Library.Another
ํ๋ก์ ํธ์ ๋ชจ๋์ด ์ฐธ์กฐ๋ ๋๋ง๋ค ์์ฑ๋ ์ถ๋ ฅ์์ โโ์๋ชป๋ require ํธ์ถ์ ๋ฐ๊ฒ ๋ฉ๋๋ค( Library
์์ ์ฐธ์กฐ๋ ๋ชจ๋
var _SomeModule = require("../library/SomeModule");
var _AnotherModule = require("../library-another/Library.Another/AnotherModule");
์ฒซ ๋ฒ์งธ ์๊ตฌ ํธ์ถ์ ์์๋๋ก ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ ๋ฒ์งธ require ํธ์ถ์ ์ด๋ค ์ด์ ๋ก ๊ฒฝ๋ก์ Library.Another/
๋ฅผ ํฌํจํ๊ณ ์์ด ์ฐธ์กฐ๋ฅผ ํด์ํ๋ ค๊ณ ํ ๋ ๋ฐํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
AMD ๋ชจ๋ ์์คํ ์ ์ฌ์ฉํ ๋๋ ๋น์ทํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฐธ๊ณ : ํ์์ ๊ฒฝ์ฐ Main
์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ฐธ์กฐ๋ ๋์ผํ ์๋ฃจ์
(์ธ๋ถ DLL๊ณผ ๋ฐ๋) ๋ด์์ ๋ง๋ค์ด์ง ํ๋ก์ ํธ ์ฐธ์กฐ์
๋๋ค. ์ฐจ์ด๊ฐ ์๋์ง ์ฌ๋ถ๋ ํ์คํ์ง ์์ต๋๋ค.
ํ , ํ ์คํธ๊ฐ ํฌํจ๋ ํ๋ก์ ํธ์ ๋น์ทํ ์ฐธ์กฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ ์ด ๋ฌธ์ ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ํ๋ก์ ํธ๊ฐ ๊ณต๊ฐ๋์๊ฑฐ๋ ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์๋ ์ต์ํ์ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ์ ๋ก๋ํ ์ ์์ต๋๊น? ํน์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๊ฐ ์๋์ ๋น์ทํฉ๋๊น?
/Main/Main.fsproj
/Library/Library.fsproj
SomeModule.fs
/Library.Another.fsproj
/Library.Another/AnotherModule.fs
์ ๊ณ ๊ฐ์ฌํฉ๋๋ค!
๋ด ํ๋ก์ ํธ๋ ๊ณต๊ฐ๋์ง ์์์ง๋ง ๋ด๊ฐ ๊ฒช๊ณ ์๋ ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋น์ทํ ๊ตฌ์กฐ์ ๋น ๋ฅธ ์ ์ฅ์๋ฅผ ๋ง๋ค์์ต๋๋ค.
https://github.com/funlambda/fable-project-ref-example
๋ณต์ ํ๊ณ build-and-run.sh
์คํํ๋ฉด ๋ชจ๋ ์ฐธ์กฐ ๋ฐํ์ ์ค๋ฅ๊ฐ ํ์๋์ด์ผ ํฉ๋๋ค. ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ๋ก๋ out/main/Program.js
.
var _AnotherModule = require("../library-another/Library.Another/AnotherModule");
๋ฌธ์ ๋ฅผ ์ฌํํ๊ธฐ ์ํด ๊ตฌ์กฐ๋ฅผ ์ค๋นํ๋ ๋ฐ ์๊ฐ์ ํ ์ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค! ๊ทธ๊ฒ์ ์ค์ ๋ก ์ ์ด์์ต๋๋ค :) ์์ ์ฌํญ๊ณผ ํจ๊ป [email protected]
๋ฅผ ์ถ์ํ์ต๋๋ค. ์๋ํด ๋ณด์๊ฒ ์ด์?
์ด์ ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค. ์์ ๊ณผ ์์ฒญ๋๊ฒ ๋น ๋ฅธ ์ฒ๋ฆฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!