11이 퀵 스타트 가이드는 [ gulp] ( http://gulpjs.com ) 로 TypeScript를 빌드한 다음 [ Browserify] ( http://browserify.org ) , [ uglify] ( http://lisperator.net/uglifyjs ) 또는 [ Watchify] ( https://github.com/substack/watchify ) 를 gulp 파이프 라인에 추가하는 방법을 알려줍니다.
2+ 또한 [ Babelify] ( https://github.com/babel/babelify ) 를 사용하여 [ Babel] ( https://babeljs.io ) 기능을 추가하는 방법을 알려줍니다.
23
3- 또한 [ Babelify] ( https://github.com/babel/babelify ) 를 사용하여 [ Babel] ( https://babeljs.io ) 기능에 대한 기능을 추가합니다.
4- [ npm] ( https://www.npmjs.com ) 과 함께 [ Node.js] ( https://nodejs.org ) 는 이미 사용하고 있다고 가정합니다.
4+ [ npm] ( https://www.npmjs.com ) 과 [ Node.js] ( https://nodejs.org ) 는 이미 사용하고 있다고 가정합니다.
55
66# 작은 프로젝트 (Minimal project)
77
8- 새로운 디렉토리부터 시작합시다.
8+ 새로운 디렉터리로 시작합시다.
99당장은 ` proj ` 라고 이름을 붙이겠지만 원하는 대로 변경할 수 있습니다.
1010
1111``` shell
1212mkdir proj
1313cd proj
1414```
1515
16- 시작하려면 다음과 같은 방식으로 프로젝트를 구조화해야 합니다:
16+ 시작하기 위해, 다음과 같이 프로젝트를 구조화해야 합니다:
1717
1818``` text
1919proj/
@@ -39,20 +39,21 @@ npm init
3939```
4040
4141일련의 알림을 받게 될 것입니다.
42- entry point를 제외하고는 기본값을 사용할 수 있으며 ` ./dist/main.js ` 를 사용합니다.
42+ entry point를 제외하고는 기본값을 사용할 수 있습니다.
43+ entry point로 ` ./dist/main.js ` 를 사용합니다.
4344` package.json ` 파일로 돌아가서 언제든 변경할 수 있습니다.
4445
4546## 의존성 설치 (Install our dependencies)
4647
4748이제는 ` npm install ` 을 사용하여 패키지를 설치할 수 있습니다.
48- 먼저 ` gulp-cli ` 를 글로벌 설치하십시오 (Unix 시스템을 사용하는 경우 ` npm install ` 명령 앞에 ` sudo ` 를 붙여야 할 수도 있습니다).
49+ 먼저 ` gulp-cli ` 를 전역으로 설치하십시오 (Unix 시스템을 사용하는 경우 ` npm install ` 명령 앞에 ` sudo ` 를 붙여야 할 수도 있습니다).
4950
5051``` shell
5152npm install -g gulp-cli
5253```
5354
54- 그런 다음 프로젝트의 개발자 의존성에 ` typescript ` , ` gulp ` 및 ` gulp-typescript ` 를 설치하십시오.
55- [ Gulp-typescript] ( https://www.npmjs.com/package/gulp-typescript ) 는 Typescript의 gulp 플러그인입니다.
55+ 그런 다음 프로젝트의 개발 의존성에 ` typescript ` , ` gulp ` 및 ` gulp-typescript ` 를 설치하십시오.
56+ [ Gulp-typescript] ( https://www.npmjs.com/package/gulp-typescript ) 는 TypeScript의 gulp 플러그인입니다.
5657
5758``` shell
5859npm install --save-dev typescript gulp gulp-typescript
@@ -61,7 +62,6 @@ npm install --save-dev typescript gulp gulp-typescript
6162## 간단한 예제 작성 (Write a simple example)
6263
6364Hello World 프로그램을 작성해 보겠습니다.
64-
6565` src ` 에 ` main.ts ` 파일을 만듭니다 :
6666
6767``` ts
@@ -71,7 +71,7 @@ function hello(compiler: string) {
7171hello (" TypeScript" );
7272```
7373
74- ` proj ` 이라는 프로젝트 루트에 ` tsconfig.json ` 파일을 생성합니다 :
74+ ` proj ` 이라는 프로젝트 루트에 ` tsconfig.json ` 파일을 생성합니다:
7575
7676``` json
7777{
@@ -87,7 +87,7 @@ hello("TypeScript");
8787
8888## ` gulpfile.js ` 생성 (Create a ` gulpfile.js ` )
8989
90- 프로젝트 루트에 ` gulpfile.js ` 파일을 만듭니다 :
90+ 프로젝트 루트에 ` gulpfile.js ` 파일을 만듭니다:
9191
9292``` js
9393var gulp = require (" gulp" );
@@ -101,14 +101,14 @@ gulp.task("default", function () {
101101});
102102```
103103
104- ## resulting 앱 테스트 (Test the resulting app)
104+ ## 결과 앱 테스트 (Test the resulting app)
105105
106106``` shell
107107gulp
108108node dist/main.js
109109```
110110
111- 프로그램에서 "Hello from TypeScript!"를 인쇄해야합니다 .
111+ 프로그램은 "Hello from TypeScript!"를 출력해야 합니다 .
112112
113113# 코드에 모듈 추가 (Add modules to the code)
114114
@@ -123,15 +123,15 @@ export function sayHello(name: string) {
123123}
124124```
125125
126- 이제 ` src/main.ts ` 의 ` sayHello ` 를 ` greet.ts ` 에서 가져오도록 변경합니다 :
126+ 이제 ` src/main.ts ` 의 ` sayHello ` 를 ` greet.ts ` 에서 import 하도록 변경합니다 :
127127
128128``` ts
129129import { sayHello } from " ./greet" ;
130130
131131console .log (sayHello (" TypeScript" ));
132132```
133133
134- 마지막으로 ` src/greet.ts ` 를 ` tsconfig.json ` 에 추가하십시오 :
134+ 마지막으로 ` src/greet.ts ` 를 ` tsconfig.json ` 에 추가하십시오:
135135
136136``` json
137137{
@@ -146,7 +146,7 @@ console.log(sayHello("TypeScript"));
146146}
147147```
148148
149- ` gulp ` 을 실행하고 노드에서 테스트하여 모듈이 작동하는지 확인하십시오 :
149+ ` gulp ` 을 실행하고 Node에서 테스트하여 모듈이 작동하는지 확인하십시오:
150150
151151``` shell
152152gulp
@@ -158,14 +158,14 @@ ES2015 모듈 구문을 사용했지만 TypeScript는 Node가 사용하는 Commo
158158
159159# Browserify
160160
161- 이제 이 프로젝트를 노드에서 브라우저로 이동하겠습니다.
161+ 이제 이 프로젝트를 Node에서 브라우저로 이동하겠습니다.
162162이를 위해 모든 모듈을 하나의 JavaScript 파일로 번들링 하고자 합니다.
163163다행히도 정확히 Browserify가 하는 일입니다.
164164더 좋은 것은 노드에서 사용하는 CommonJS 모듈 시스템을 TypeScript에서 사용할 수 있다는 것입니다.
165165즉 TypeScript와 Node 설정이 기본적으로 변경되지 않은 브라우저로 전송되는 것을 의미합니다.
166166
167167먼저 browserify, [ tsify] ( https://www.npmjs.com/package/tsify ) 및 vinyl-source-stream을 설치하십시오.
168- tsify는 gulp-typescript처럼 Typeify 컴파일러에 접근할 수 있는 Browserify 플러그인입니다.
168+ tsify는 gulp-typescript처럼 TypeScript 컴파일러에 접근할 수 있는 Browserify 플러그인입니다.
169169vinyl-source-stream을 사용하면 Browserify의 파일 출력을 gulp에서 [ vinyl] ( https://github.com/gulpjs/vinyl ) 으로 인식하는 형식으로 다시 변환할 수 있습니다.
170170
171171``` shell
@@ -190,7 +190,7 @@ npm install --save-dev browserify tsify vinyl-source-stream
190190</html >
191191```
192192
193- 이제 ` main.ts ` 를 변경하여 페이지를 업데이트하십시오 :
193+ 이제 페이지를 업데이트하기 위해 ` main.ts ` 를 변경합니다 :
194194
195195``` ts
196196import { sayHello } from " ./greet" ;
@@ -207,20 +207,20 @@ showHello("greeting", "TypeScript");
207207이제 gulpfile을 다음과 같이 변경하십시오 :
208208
209209``` js
210- var gulp = require (" gulp" );
211- var browserify = require (" browserify" );
210+ var gulp = require (' gulp' );
211+ var browserify = require (' browserify' );
212212var source = require (' vinyl-source-stream' );
213- var tsify = require (" tsify" );
213+ var tsify = require (' tsify' );
214214var paths = {
215215 pages: [' src/*.html' ]
216216};
217217
218- gulp .task (" copy-html" , function () {
218+ gulp .task (' copy-html' , function () {
219219 return gulp .src (paths .pages )
220- .pipe (gulp .dest (" dist" ));
220+ .pipe (gulp .dest (' dist' ));
221221});
222222
223- gulp .task (" default" , [ " copy-html" ] , function () {
223+ gulp .task (' default' , gulp . series ( gulp . parallel ( ' copy-html' ) , function () {
224224 return browserify ({
225225 basedir: ' .' ,
226226 debug: true ,
@@ -231,8 +231,8 @@ gulp.task("default", ["copy-html"], function () {
231231 .plugin (tsify)
232232 .bundle ()
233233 .pipe (source (' bundle.js' ))
234- .pipe (gulp .dest (" dist" ));
235- });
234+ .pipe (gulp .dest (' dist' ));
235+ })) ;
236236```
237237
238238` copy-html ` 태스크를 추가하고 ` default ` 의 의존성으로 추가합니다.
@@ -242,14 +242,14 @@ gulp.task("default", ["copy-html"], function () {
242242
243243` bundle ` 을 호출한 후 ` source ` (vinil-source-stream에 대한 별칭)를 사용하여 출력 번들 ` bundle.js ` 의 이름을 지정합니다.
244244
245- gulp를 실행하고 브라우저에서 ` dist/index.html ` 을 열어 페이지를 테스트하십시오 .
245+ gulp를 실행하고 브라우저에서 ` dist/index.html ` 을 열어 페이지를 확인하세요 .
246246페이지에 "Hello from TypeScript"가 표시되어야 합니다.
247247
248248Browserify에 ` debug : true ` 를 지정한 것에 주목하십시오.
249- 이로 인해 tsify는 번들 JavaScript 파일 내에서 소스맵을 내보냅니다.
249+ 이로 인해 tsify는 번들된 JavaScript 파일 안에 소스 맵을 내보냅니다.
250250소스 맵을 사용하면 번들로 제공된 JavaScript 대신 브라우저에서 원본 TypeScript 코드를 디버깅할 수 있습니다.
251- 브라우저의 디버거를 열고 ` main.ts ` 안에 브레이크포인트을 넣으면 소스 맵이 작동하는지 테스트할 수 있습니다.
252- 페이지를 새로 고침 할 때 브레이크포인트가 페이지를 일시 중지하고 ` greet.ts ` 를 디버깅 할 수 있도록 해야 합니다.
251+ 브라우저의 디버거를 열고 ` main.ts ` 안에 브레이크 포인트을 넣으면 소스 맵이 작동하는지 테스트할 수 있습니다.
252+ 페이지를 새로 고침 하면 브레이크 포인트가 페이지를 일시 중지하고 ` greet.ts ` 를 디버깅 할 수 있어야 합니다.
253253
254254# Watchify, Babel, and Uglify
255255
@@ -268,18 +268,18 @@ Browserify에 `debug : true`를 지정한 것에 주목하십시오.
268268Watchify로 백그라운드 컴파일을 시작하겠습니다 :
269269
270270``` shell
271- npm install --save-dev watchify gulp-util
271+ npm install --save-dev watchify fancy-log
272272```
273273
274274이제 gulpfile을 다음과 같이 변경하십시오 :
275275
276276``` js
277- var gulp = require (" gulp" );
278- var browserify = require (" browserify" );
277+ var gulp = require (' gulp' );
278+ var browserify = require (' browserify' );
279279var source = require (' vinyl-source-stream' );
280- var watchify = require (" watchify" );
281- var tsify = require (" tsify" );
282- var gutil = require (" gulp-util " );
280+ var watchify = require (' watchify' );
281+ var tsify = require (' tsify' );
282+ var fancy_log = require (' fancy-log ' );
283283var paths = {
284284 pages: [' src/*.html' ]
285285};
@@ -292,37 +292,37 @@ var watchedBrowserify = watchify(browserify({
292292 packageCache: {}
293293}).plugin (tsify));
294294
295- gulp .task (" copy-html" , function () {
295+ gulp .task (' copy-html' , function () {
296296 return gulp .src (paths .pages )
297- .pipe (gulp .dest (" dist" ));
297+ .pipe (gulp .dest (' dist' ));
298298});
299299
300300function bundle () {
301301 return watchedBrowserify
302302 .bundle ()
303+ .on (' error' , fancy_log)
303304 .pipe (source (' bundle.js' ))
304- .pipe (gulp .dest (" dist" ));
305+ .pipe (gulp .dest (' dist' ));
305306}
306307
307- gulp .task (" default" , [ " copy-html" ] , bundle);
308- watchedBrowserify .on (" update" , bundle);
309- watchedBrowserify .on (" log" , gutil . log );
308+ gulp .task (' default' , gulp . series ( gulp . parallel ( ' copy-html' ) , bundle) );
309+ watchedBrowserify .on (' update' , bundle);
310+ watchedBrowserify .on (' log' , fancy_log );
310311```
311312
312313여기에는 기본적으로 세 가지 변경 사항이 있지만 코드를 약간 리팩토링해야합니다.
313314
3143151 . ` watchify ` 에 대한 호출에서 ` browserify ` 인스턴스를 감싸고 그 결과를 유지했습니다.
315- 2 . ` watchedBrowserify.on(" update" , bundle); ` 을 호출하여 Browserify 가 TypeScript 파일 중 하나가 변경될 때마다 ` bundle ` 함수를 실행하도록 했습니다.
316- 3 . ` watchedBrowserify.on(" log", gutil.log ); ` 을 호출하여 콘솔에 로그했습니다 .
316+ 2 . ` watchedBrowserify.on(' update' , bundle); ` 을 호출하여 Browserify 가 TypeScript 파일 중 하나가 변경될 때마다 ` bundle ` 함수를 실행하도록 했습니다.
317+ 3 . ` watchedBrowserify.on(' log', fancy_log ); ` 을 호출하여 콘솔에 기록했습니다 .
317318
318319(1)과 (2)는 ` default ` 작업에서 ` browserify ` 를 호출해야 한다는 것을 의미합니다.
319320Watchify와 Gulp 모두 호출해야 하기 때문에 ` default ` 함수에 이름을 주어야 합니다.
320321(3)을 사용한 로깅을 추가하는 것은 선택 사항이지만 설정을 디버깅하는 데 매우 유용합니다.
321322
322323이제 Gulp를 실행하면 시작해야 하고 계속 실행됩니다.
323324` main.ts ` 에서 ` showHello ` 에 대한 코드를 변경하고 저장하십시오.
324-
325- 다음과 같은 출력이 표시되어야 합니다 :
325+ 다음과 같은 출력이 표시되어야 합니다:
326326
327327``` shell
328328proj$ gulp
@@ -348,23 +348,23 @@ npm install --save-dev gulp-uglify vinyl-buffer gulp-sourcemaps
348348이제 gulpfile을 다음과 같이 변경하십시오 :
349349
350350``` js
351- var gulp = require (" gulp" );
352- var browserify = require (" browserify" );
351+ var gulp = require (' gulp' );
352+ var browserify = require (' browserify' );
353353var source = require (' vinyl-source-stream' );
354- var tsify = require (" tsify" );
354+ var tsify = require (' tsify' );
355355var uglify = require (' gulp-uglify' );
356356var sourcemaps = require (' gulp-sourcemaps' );
357357var buffer = require (' vinyl-buffer' );
358358var paths = {
359359 pages: [' src/*.html' ]
360360};
361361
362- gulp .task (" copy-html" , function () {
362+ gulp .task (' copy-html' , function () {
363363 return gulp .src (paths .pages )
364- .pipe (gulp .dest (" dist" ));
364+ .pipe (gulp .dest (' dist' ));
365365});
366366
367- gulp .task (" default" , [ " copy-html" ] , function () {
367+ gulp .task (' default' , gulp . series ( gulp . parallel ( ' copy-html' ) , function () {
368368 return browserify ({
369369 basedir: ' .' ,
370370 debug: true ,
@@ -379,8 +379,8 @@ gulp.task("default", ["copy-html"], function () {
379379 .pipe (sourcemaps .init ({loadMaps: true }))
380380 .pipe (uglify ())
381381 .pipe (sourcemaps .write (' ./' ))
382- .pipe (gulp .dest (" dist" ));
383- });
382+ .pipe (gulp .dest (' dist' ));
383+ })) ;
384384```
385385
386386` uglify ` 자체에는 하나의 호출만 있습니다 &mdash ; ` buffer ` 와 ` sourcemaps ` 에 대한 호출은 sourcemaps이 계속 작동하는지 확인하기 위해 존재합니다.
@@ -399,7 +399,7 @@ Uglify처럼 Babelify도 코드를 엉망으로 만들기 때문에 vinyl-buffer
399399기본적으로 Babelify는 확장자가 ` .js ` , ` .es ` , ` .es6 ` 및 ` .jsx ` 인 파일만 처리하므로 Babelify에 옵션으로 ` .ts ` 확장자를 추가해야 합니다.
400400
401401``` shell
402- npm install --save-dev babelify babel-core babel-preset-es2015 vinyl-buffer gulp-sourcemaps
402+ npm install --save-dev babelify@8 babel-core babel-preset-es2015 vinyl-buffer gulp-sourcemaps
403403```
404404
405405이제 gulpfile을 다음과 같이 변경하십시오 :
@@ -415,12 +415,12 @@ var paths = {
415415 pages: [' src/*.html' ]
416416};
417417
418- gulp .task (' copyHtml ' , function () {
418+ gulp .task (' copy-html ' , function () {
419419 return gulp .src (paths .pages )
420420 .pipe (gulp .dest (' dist' ));
421421});
422422
423- gulp .task (' default' , [ ' copyHtml ' ] , function () {
423+ gulp .task (' default' , gulp . series ( gulp . parallel ( ' copy-html ' ) , function () {
424424 return browserify ({
425425 basedir: ' .' ,
426426 debug: true ,
@@ -439,13 +439,12 @@ gulp.task('default', ['copyHtml'], function () {
439439 .pipe (sourcemaps .init ({loadMaps: true }))
440440 .pipe (sourcemaps .write (' ./' ))
441441 .pipe (gulp .dest (' dist' ));
442- });
442+ })) ;
443443```
444444
445445TypeScript 대상 ES2015도 필요합니다.
446446Babel은 TypeScript에서 내보내는 ES2015 코드에서 ES5를 생성합니다.
447-
448- ` tsconfig.json ` 을 수정합시다 :
447+ ` tsconfig.json ` 을 수정합시다:
449448
450449``` json
451450{
@@ -459,4 +458,4 @@ Babel은 TypeScript에서 내보내는 ES2015 코드에서 ES5를 생성합니
459458}
460459```
461460
462- Babel의 ES5 출력은 간단한 스크립트에 대한 TypeScript의 출력과 매우 유사해야 합니다.
461+ 간단한 스크립트의 경우 Babel의 ES5 결과물은 TypeScript의 결과물과 거의 같아야 합니다.
0 commit comments