๋น๋ ๋๊ตฌ๋ค
npm install @babel/cli @babel/core @babel/preset-typescript --save-dev
{
"presets": ["@babel/preset-typescript"]
}
./node_modules/.bin/babel --out-file bundle.js src/index.ts
{
"scripts": {
"build": "babel --out-file bundle.js main.ts"
},
}
npm run build
npm install tsify
browserify main.ts -p [ tsify --noImplicitAny ] > bundle.js
var browserify = require("browserify");
var tsify = require("tsify");
browserify()
.add("main.ts")
.plugin("tsify", { noImplicitAny: true })
.bundle()
.pipe(process.stdout);
์์ธํ ๋ด์ฉ: smrq/tsify
npm install duo-typescript
duo --use duo-typescript entry.ts
var Duo = require("duo");
var fs = require("fs")
var path = require("path")
var typescript = require("duo-typescript");
var out = path.join(__dirname, "output.js")
Duo(__dirname)
.entry("entry.ts")
.use(typescript())
.run(function (err, results) {
if (err) throw err;
// ์ปดํ์ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ ํ์ผ์ ์์ฑํฉ๋๋ค
fs.writeFileSync(out, results.code);
});
์์ธํ ๋ด์ฉ: frankwallis/duo-typescript
npm install grunt-ts
module.exports = function(grunt) {
grunt.initConfig({
ts: {
default : {
src: ["**/*.ts", "!node_modules/**/*.ts"]
}
}
});
grunt.loadNpmTasks("grunt-ts");
grunt.registerTask("default", ["ts"]);
};
์์ธํ ๋ด์ฉ: TypeStrong/grunt-ts
npm install gulp-typescript
var gulp = require("gulp");
var ts = require("gulp-typescript");
gulp.task("default", function () {
var tsResult = gulp.src("src/*.ts")
.pipe(ts({
noImplicitAny: true,
out: "output.js"
}));
return tsResult.js.pipe(gulp.dest("built/local"));
});
์์ธํ ๋ด์ฉ: ivogabe/gulp-typescript
npm install -g jspm@beta
์ฃผ์์ฌํญ: ํ์ฌ jspm์ TypeScript ์ง์์ 0.16beta ์ ๋๋ค.
์์ธํ ๋ด์ฉ: TypeScriptSamples/jspm
npm install ts-loader --save-dev
module.exports = {
entry: "./src/index.tsx",
output: {
path: '/',
filename: "bundle.js"
},
resolve: {
extensions: [".tsx", ".ts", ".js", ".json"]
},
module: {
rules: [
// '.ts' ๋๋ '.tsx' ํ์ฅ์๋ฅผ ๊ฐ์ง ๋ชจ๋ ํ์ผ์ 'ts-loader'์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค.
{ test: /\.tsx?$/, use: ["ts-loader"], exclude: /node_modules/ }
]
}
}
module.exports = {
entry: "./src/index.tsx",
output: {
filename: "bundle.js"
},
resolve: {
// '.ts'์ '.tsx'๋ฅผ ํด์ ๊ฐ๋ฅํ ํ์ฅ์๋ก ์ถ๊ฐํฉ๋๋ค.
extensions: ["", ".webpack.js", ".web.js", ".ts", ".tsx", ".js"]
},
module: {
loaders: [
// '.ts' ๋๋ '.tsx' ํ์ฅ์๋ฅผ ๊ฐ์ง ๋ชจ๋ ํ์ผ์ 'ts-loader'์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค.
{ test: /\.tsx?$/, loader: "ts-loader" }
]
}
}
ts-loader์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋์:
๋ก์ปฌ์ ์ค์น๋ Microsoft.TypeScript.Default.props
(๋งจ ์)์ Microsoft.TypeScript.targets
(๋งจ ์๋) ํ์ผ์ ํฌํจํ๋๋ก ํ๋ก์ ํธ ํ์ผ์ ์
๋ฐ์ดํธํ์ธ์:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- ํ๋จ์ default props ํฌํจ -->
<Import
Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props"
Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
<!-- TypeScript ํ๊ฒฝ ์ค์ -->
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<TypeScriptRemoveComments>false</TypeScriptRemoveComments>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<TypeScriptRemoveComments>true</TypeScriptRemoveComments>
<TypeScriptSourceMap>false</TypeScriptSourceMap>
</PropertyGroup>
<!-- ํ๋จ์ default targets ํฌํจ -->
<Import
Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets"
Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
</Project>
MSBuild ์ปดํ์ผ๋ฌ ์ต์ ์ ์์ ๋ํ ์์ธํ ๋ด์ฉ: MSBuild ํ๋ก์ ํธ์ ์ปดํ์ผ๋ฌ ์ต์ ์ค์
- ์ฐ-ํด๋ฆญ -> Manage NuGet Packages
Microsoft.TypeScript.MSBuild
๋ฅผ ๊ฒ์ํ์ธ์Install
ํด๋ฆญ- ์ค์น๊ฐ ์๋ฃ๋๋ฉด ๋ค์ ๋น๋ ํ์ธ์!
์์ธํ ๋ด์ฉ์ ํจํค์ง ๋งค๋์ ๋ค์ด์ผ๋ก๊ทธ์ NuGet๊ณผ nightly builds ์ฌ์ฉ์ ์ฐธ๊ณ ํ์ธ์