chore(devguide/ts): to beta.6 + typings + related doc updates
This commit is contained in:
parent
908c0b2986
commit
3d992384c3
23
gulpfile.js
23
gulpfile.js
|
@ -66,7 +66,7 @@ var _excludeMatchers = _excludePatterns.map(function(excludePattern){
|
||||||
return new Minimatch(excludePattern)
|
return new Minimatch(excludePattern)
|
||||||
});
|
});
|
||||||
|
|
||||||
var _exampleBoilerplateFiles = ['package.json', 'tsconfig.json', 'karma.conf.js', 'karma-test-shim.js' ];
|
var _exampleBoilerplateFiles = ['package.json', 'tsconfig.json', 'typings.json', 'karma.conf.js', 'karma-test-shim.js' ];
|
||||||
|
|
||||||
// --filter may be passed in to filter/select _example app subdir names
|
// --filter may be passed in to filter/select _example app subdir names
|
||||||
// i.e. gulp run-e2e-tests --filter=foo ; would select all example apps with
|
// i.e. gulp run-e2e-tests --filter=foo ; would select all example apps with
|
||||||
|
@ -232,6 +232,14 @@ gulp.task('add-example-boilerplate', function() {
|
||||||
gutil.log("symlinking " + linkPath + ' -> ' + realPath)
|
gutil.log("symlinking " + linkPath + ' -> ' + realPath)
|
||||||
fsUtils.addSymlink(realPath, linkPath);
|
fsUtils.addSymlink(realPath, linkPath);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
realPath = path.join(EXAMPLES_PATH, '/typings');
|
||||||
|
var typingsPaths = getTypingsPaths(EXAMPLES_PATH);
|
||||||
|
typingsPaths.forEach(function(linkPath) {
|
||||||
|
gutil.log("symlinking " + linkPath + ' -> ' + realPath)
|
||||||
|
fsUtils.addSymlink(realPath, linkPath);
|
||||||
|
});
|
||||||
|
|
||||||
copyExampleBoilerplate();
|
copyExampleBoilerplate();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -257,6 +265,12 @@ gulp.task('remove-example-boilerplate', function() {
|
||||||
nodeModulesPaths.forEach(function(linkPath) {
|
nodeModulesPaths.forEach(function(linkPath) {
|
||||||
fsUtils.removeSymlink(linkPath);
|
fsUtils.removeSymlink(linkPath);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var typingsPaths = getTypingsPaths(EXAMPLES_PATH);
|
||||||
|
typingsPaths.forEach(function(linkPath) {
|
||||||
|
fsUtils.removeSymlink(linkPath);
|
||||||
|
});
|
||||||
|
|
||||||
var examplePaths = getExamplePaths(EXAMPLES_PATH);
|
var examplePaths = getExamplePaths(EXAMPLES_PATH);
|
||||||
return deleteFiles(_exampleBoilerplateFiles, examplePaths).then(function() {
|
return deleteFiles(_exampleBoilerplateFiles, examplePaths).then(function() {
|
||||||
var e2eSpecPaths = getE2eSpecPaths(EXAMPLES_PATH);
|
var e2eSpecPaths = getE2eSpecPaths(EXAMPLES_PATH);
|
||||||
|
@ -507,6 +521,13 @@ function getNodeModulesPaths(basePath) {
|
||||||
return paths;
|
return paths;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getTypingsPaths(basePath) {
|
||||||
|
var paths = getExamplePaths(basePath).map(function(examplePath) {
|
||||||
|
return path.join(examplePath, "/typings");
|
||||||
|
});
|
||||||
|
return paths;
|
||||||
|
}
|
||||||
|
|
||||||
function getExamplePaths(basePath, includeBase) {
|
function getExamplePaths(basePath, includeBase) {
|
||||||
// includeBase defaults to false
|
// includeBase defaults to false
|
||||||
return getPaths(basePath, "example-config.json", includeBase)
|
return getPaths(basePath, "example-config.json", includeBase)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
typings
|
typings
|
||||||
|
typings.json
|
||||||
*.js.map
|
*.js.map
|
||||||
package.json
|
package.json
|
||||||
karma.conf.js
|
karma.conf.js
|
||||||
|
|
|
@ -12,9 +12,9 @@
|
||||||
|
|
||||||
<script src="https://code.angularjs.org/tools/system.js"></script>
|
<script src="https://code.angularjs.org/tools/system.js"></script>
|
||||||
<script src="https://code.angularjs.org/tools/typescript.js"></script>
|
<script src="https://code.angularjs.org/tools/typescript.js"></script>
|
||||||
<script src="https://code.angularjs.org/2.0.0-beta.3/angular2-polyfills.js"></script>
|
<script src="https://code.angularjs.org/2.0.0-beta.6/angular2-polyfills.js"></script>
|
||||||
<script src="https://code.angularjs.org/2.0.0-beta.3/Rx.js"></script>
|
<script src="https://code.angularjs.org/2.0.0-beta.6/Rx.js"></script>
|
||||||
<script src="https://code.angularjs.org/2.0.0-beta.3/angular2.dev.js"></script>
|
<script src="https://code.angularjs.org/2.0.0-beta.6/angular2.dev.js"></script>
|
||||||
|
|
||||||
<!-- 2. Configure SystemJS -->
|
<!-- 2. Configure SystemJS -->
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -14,9 +14,9 @@
|
||||||
|
|
||||||
<script src="https://code.angularjs.org/tools/system.js"></script>
|
<script src="https://code.angularjs.org/tools/system.js"></script>
|
||||||
<script src="https://code.angularjs.org/tools/typescript.js"></script>
|
<script src="https://code.angularjs.org/tools/typescript.js"></script>
|
||||||
<script src="https://code.angularjs.org/2.0.0-beta.3/angular2-polyfills.js"></script>
|
<script src="https://code.angularjs.org/2.0.0-beta.6/angular2-polyfills.js"></script>
|
||||||
<script src="https://code.angularjs.org/2.0.0-beta.3/Rx.js"></script>
|
<script src="https://code.angularjs.org/2.0.0-beta.6/Rx.js"></script>
|
||||||
<script src="https://code.angularjs.org/2.0.0-beta.3/angular2.dev.js"></script>
|
<script src="https://code.angularjs.org/2.0.0-beta.6/angular2.dev.js"></script>
|
||||||
|
|
||||||
<!-- 2. Configure SystemJS -->
|
<!-- 2. Configure SystemJS -->
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -14,9 +14,9 @@
|
||||||
|
|
||||||
<script src="https://code.angularjs.org/tools/system.js"></script>
|
<script src="https://code.angularjs.org/tools/system.js"></script>
|
||||||
<script src="https://code.angularjs.org/tools/typescript.js"></script>
|
<script src="https://code.angularjs.org/tools/typescript.js"></script>
|
||||||
<script src="https://code.angularjs.org/2.0.0-beta.3/angular2-polyfills.js"></script>
|
<script src="https://code.angularjs.org/2.0.0-beta.6/angular2-polyfills.js"></script>
|
||||||
<script src="https://code.angularjs.org/2.0.0-beta.3/Rx.js"></script>
|
<script src="https://code.angularjs.org/2.0.0-beta.6/Rx.js"></script>
|
||||||
<script src="https://code.angularjs.org/2.0.0-beta.3/angular2.dev.js"></script>
|
<script src="https://code.angularjs.org/2.0.0-beta.6/angular2.dev.js"></script>
|
||||||
|
|
||||||
<!-- 2. Configure SystemJS -->
|
<!-- 2. Configure SystemJS -->
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
"description": "Master package.json, the superset of all dependencies for all of the _example package.json files.",
|
"description": "Master package.json, the superset of all dependencies for all of the _example package.json files.",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"postinstall": "npm run typings install",
|
||||||
"tsc": "tsc",
|
"tsc": "tsc",
|
||||||
"tsc:w": "tsc -w",
|
"tsc:w": "tsc -w",
|
||||||
"lite": "lite-server",
|
"lite": "lite-server",
|
||||||
|
@ -11,21 +12,22 @@
|
||||||
"start": "concurrent \"npm run tsc:w\" \"npm run lite\" ",
|
"start": "concurrent \"npm run tsc:w\" \"npm run lite\" ",
|
||||||
"test": "karma start karma.conf.js",
|
"test": "karma start karma.conf.js",
|
||||||
"build-and-test": "npm run tsc && npm run test",
|
"build-and-test": "npm run tsc && npm run test",
|
||||||
"http-server": "tsc && http-server"
|
"http-server": "tsc && http-server",
|
||||||
|
"typings" : "typings"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"angular2": "2.0.0-beta.3",
|
"angular2": "2.0.0-beta.6",
|
||||||
"systemjs": "0.19.6",
|
"systemjs": "0.19.20",
|
||||||
"es6-promise": "^3.0.2",
|
"es6-promise": "^3.0.2",
|
||||||
"es6-shim": "^0.33.3",
|
"es6-shim": "^0.33.3",
|
||||||
"reflect-metadata": "0.1.2",
|
"reflect-metadata": "0.1.2",
|
||||||
"rxjs": "5.0.0-beta.0",
|
"rxjs": "5.0.0-beta.0",
|
||||||
"zone.js": "0.5.11",
|
"zone.js": "0.5.14",
|
||||||
|
|
||||||
"a2-in-memory-web-api": "^0.1.2",
|
"a2-in-memory-web-api": "^0.1.5",
|
||||||
"bootstrap": "^3.3.6"
|
"bootstrap": "^3.3.6"
|
||||||
|
|
||||||
},
|
},
|
||||||
|
@ -33,15 +35,16 @@
|
||||||
"concurrently": "^1.0.0",
|
"concurrently": "^1.0.0",
|
||||||
"http-server": "^0.8.5",
|
"http-server": "^0.8.5",
|
||||||
"jasmine-core": "~2.4.1",
|
"jasmine-core": "~2.4.1",
|
||||||
"karma": "^0.12.23",
|
"karma": "^0.13.19",
|
||||||
"karma-chrome-launcher": "^0.1.4",
|
"karma-chrome-launcher": "^0.2.2",
|
||||||
"karma-cli": "^0.0.4",
|
"karma-cli": "^0.1.2",
|
||||||
"karma-jasmine": "^0.3.6",
|
"karma-jasmine": "^0.3.7",
|
||||||
"lite-server": "^2.0.1",
|
"lite-server": "^2.0.1",
|
||||||
"live-server": "^0.9.1",
|
"live-server": "^0.9.1",
|
||||||
"protractor": "^3.0.0",
|
"protractor": "^3.1.1",
|
||||||
"rimraf": "^2.5.1",
|
"rimraf": "^2.5.1",
|
||||||
"typescript": "^1.7.5"
|
"typescript": "^1.7.5",
|
||||||
|
"typings":"0.6.8"
|
||||||
},
|
},
|
||||||
"repository": { }
|
"repository": { }
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
},
|
},
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"angular2": "2.0.0-beta.3",
|
"angular2": "2.0.0-beta.6",
|
||||||
"es6-promise": "^3.0.2",
|
"es6-promise": "^3.0.2",
|
||||||
"es6-shim": "^0.33.3",
|
"es6-shim": "^0.33.3",
|
||||||
"reflect-metadata": "0.1.2",
|
"reflect-metadata": "0.1.2",
|
||||||
"rxjs": "5.0.0-beta.0",
|
"rxjs": "5.0.0-beta.0",
|
||||||
"zone.js": "0.5.11"
|
"zone.js": "0.5.14"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"concurrently": "^1.0.0",
|
"concurrently": "^1.0.0",
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
// #docregion
|
// #docregion
|
||||||
///<reference path="../node_modules/angular2/typings/browser.d.ts"/>
|
|
||||||
import {bootstrap} from 'angular2/platform/browser'
|
import {bootstrap} from 'angular2/platform/browser'
|
||||||
// #docregion app-component
|
// #docregion app-component
|
||||||
import {AppComponent} from './app.component'
|
import {AppComponent} from './app.component'
|
||||||
|
|
|
@ -2,24 +2,27 @@
|
||||||
"name": "angular2-quickstart",
|
"name": "angular2-quickstart",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"postinstall": "npm run typings install",
|
||||||
"tsc": "tsc",
|
"tsc": "tsc",
|
||||||
"tsc:w": "tsc -w",
|
"tsc:w": "tsc -w",
|
||||||
"lite": "lite-server",
|
"lite": "lite-server",
|
||||||
"start": "concurrent \"npm run tsc:w\" \"npm run lite\" "
|
"start": "concurrent \"npm run tsc:w\" \"npm run lite\" ",
|
||||||
|
"typings" : "typings"
|
||||||
},
|
},
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"angular2": "2.0.0-beta.3",
|
"angular2": "2.0.0-beta.6",
|
||||||
"systemjs": "0.19.6",
|
"systemjs": "0.19.20",
|
||||||
"es6-promise": "^3.0.2",
|
"es6-promise": "^3.0.2",
|
||||||
"es6-shim": "^0.33.3",
|
"es6-shim": "^0.33.3",
|
||||||
"reflect-metadata": "0.1.2",
|
"reflect-metadata": "0.1.2",
|
||||||
"rxjs": "5.0.0-beta.0",
|
"rxjs": "5.0.0-beta.0",
|
||||||
"zone.js": "0.5.11"
|
"zone.js": "0.5.14"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"concurrently": "^1.0.0",
|
"concurrently": "^1.0.0",
|
||||||
"lite-server": "^2.0.1",
|
"lite-server": "^2.0.1",
|
||||||
"typescript": "^1.7.5"
|
"typescript": "^1.7.5",
|
||||||
|
"typings":"^0.6.8"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
"noImplicitAny": false
|
"noImplicitAny": false
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"node_modules"
|
"node_modules",
|
||||||
|
"typings/main",
|
||||||
|
"typings/main.d.ts"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"ambientDependencies": {
|
||||||
|
"es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#6697d6f7dadbf5773cb40ecda35a76027e0783b2"
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,6 +11,8 @@
|
||||||
"suppressImplicitAnyIndexErrors": true
|
"suppressImplicitAnyIndexErrors": true
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"node_modules"
|
"node_modules",
|
||||||
|
"typings/main",
|
||||||
|
"typings/main.d.ts"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"ambientDependencies": {
|
||||||
|
"es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#6697d6f7dadbf5773cb40ecda35a76027e0783b2",
|
||||||
|
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#dd638012d63e069f2c99d06ef4dcc9616a943ee4"
|
||||||
|
}
|
||||||
|
}
|
|
@ -608,7 +608,6 @@ figure.image-display
|
||||||
.filetree
|
.filetree
|
||||||
.file angular2-forms
|
.file angular2-forms
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file app.component.js
|
.file app.component.js
|
||||||
|
@ -616,9 +615,12 @@ figure.image-display
|
||||||
.file hero-form.component.html
|
.file hero-form.component.html
|
||||||
.file hero-form.component.js
|
.file hero-form.component.js
|
||||||
.file main.ts
|
.file main.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
.file package.json
|
.file package.json
|
||||||
.file styles.cs
|
.file tsconfig.json
|
||||||
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
Here’s the final version of the source:
|
Here’s the final version of the source:
|
||||||
|
|
||||||
|
|
|
@ -668,7 +668,6 @@ figure.image-display
|
||||||
.filetree
|
.filetree
|
||||||
.file angular2-forms
|
.file angular2-forms
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file app.component.ts
|
.file app.component.ts
|
||||||
|
@ -676,10 +675,12 @@ figure.image-display
|
||||||
.file hero-form.component.html
|
.file hero-form.component.html
|
||||||
.file hero-form.component.ts
|
.file hero-form.component.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
.file package.json
|
.file package.json
|
||||||
.file styles.css
|
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
Here’s the final version of the source:
|
Here’s the final version of the source:
|
||||||
|
|
||||||
|
|
|
@ -432,8 +432,6 @@ figure.image-display
|
||||||
Our starter app's structure looks like this:
|
Our starter app's structure looks like this:
|
||||||
.filetree
|
.filetree
|
||||||
.file router-sample
|
.file router-sample
|
||||||
.children
|
|
||||||
.file node_modules
|
|
||||||
.children
|
.children
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
|
@ -441,10 +439,13 @@ figure.image-display
|
||||||
.file crisis-list.component.ts
|
.file crisis-list.component.ts
|
||||||
.file hero-list.component.ts
|
.file hero-list.component.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
|
.file package.json
|
||||||
.file styles.css
|
.file styles.css
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
.file package.json
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
Here are the files discussed in this milestone
|
Here are the files discussed in this milestone
|
||||||
+makeTabs(
|
+makeTabs(
|
||||||
|
@ -654,7 +655,6 @@ code-example(format="." language="bash").
|
||||||
.filetree
|
.filetree
|
||||||
.file router-sample
|
.file router-sample
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file heroes
|
.file heroes
|
||||||
|
@ -665,10 +665,13 @@ code-example(format="." language="bash").
|
||||||
.file hero-list.component.ts
|
.file hero-list.component.ts
|
||||||
.file hero.service.ts
|
.file hero.service.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
|
.file package.json
|
||||||
.file styles.css
|
.file styles.css
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
.file package.json
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
<a id="heroes-app-code"></a>
|
<a id="heroes-app-code"></a>
|
||||||
### The Heroes App code
|
### The Heroes App code
|
||||||
|
@ -1184,7 +1187,6 @@ code-example(format="." language="bash").
|
||||||
.filetree
|
.filetree
|
||||||
.file router-sample
|
.file router-sample
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file crisis-center/...
|
.file crisis-center/...
|
||||||
|
@ -1192,10 +1194,13 @@ code-example(format="." language="bash").
|
||||||
.file app.component.ts
|
.file app.component.ts
|
||||||
.file dialog.service.ts
|
.file dialog.service.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
.file package.json
|
.file package.json
|
||||||
.file styles.css
|
.file styles.css
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
The top level application files are
|
The top level application files are
|
||||||
+makeTabs(
|
+makeTabs(
|
||||||
|
|
|
@ -464,7 +464,7 @@ figure.image-display
|
||||||
.l-sub-section
|
.l-sub-section
|
||||||
:marked
|
:marked
|
||||||
We often use the [async pipe](pipes.html#async-pipe) in read-only components where the component has no need to interact with the data.
|
We often use the [async pipe](pipes.html#async-pipe) in read-only components where the component has no need to interact with the data.
|
||||||
We couldn't us the pipe in the `HeroListComponent` because the "add hero" feature pushes newly created heroes into the list.
|
We couldn't use the pipe in the `HeroListComponent` because the "add hero" feature pushes newly created heroes into the list.
|
||||||
|
|
||||||
:marked
|
:marked
|
||||||
## Our wasteful app
|
## Our wasteful app
|
||||||
|
|
|
@ -56,14 +56,37 @@ figure.image-display
|
||||||
:marked
|
:marked
|
||||||
## Development Environment
|
## Development Environment
|
||||||
|
|
||||||
We'll need a place to stand (the application project folder), some libraries,
|
We'll need a place to stand (the application project folder),
|
||||||
some TypeScript configuration and the TypeScript-aware editor of your choice.
|
some TypeScript configuration, and some libraries for development and runtime.
|
||||||
|
|
||||||
### Create a new project folder
|
### Create a new project folder
|
||||||
|
|
||||||
code-example(format="").
|
code-example(format="").
|
||||||
mkdir angular2-quickstart
|
mkdir angular2-quickstart
|
||||||
cd angular2-quickstart
|
cd angular2-quickstart
|
||||||
|
:marked
|
||||||
|
### Configure TypeScript
|
||||||
|
|
||||||
|
We must guide the TypeScript compiler with very specific settings.
|
||||||
|
|
||||||
|
Add a **tsconfig.json** file to the project folder and copy/paste the following:
|
||||||
|
+makeJson('quickstart/ts/tsconfig.1.json', null, 'tsconfig.json')(format=".")
|
||||||
|
.l-sub-section
|
||||||
|
:marked
|
||||||
|
We explore the `tsconfig.json` in an [appendix below](#tsconfig)
|
||||||
|
:marked
|
||||||
|
### TypeScript Typings
|
||||||
|
|
||||||
|
Many JavaScript libraries extend the JavaScript environment with features and syntax
|
||||||
|
that the TypeScript compiler doesn't recognize natively. We teach it about these capabilities with
|
||||||
|
[TypeScript type definition files](http://www.typescriptlang.org/Handbook#writing-dts-files)
|
||||||
|
— *d.ts files* — which we identify in a `typings.json` file.
|
||||||
|
|
||||||
|
Add a **typings.json** file to the project folder and copy/paste the following:
|
||||||
|
+makeJson('quickstart/ts/typings.1.json', null, 'typings.json')(format=".")
|
||||||
|
.l-sub-section
|
||||||
|
:marked
|
||||||
|
We go a little deeper into *typings* in an [appendix below](#typings)
|
||||||
:marked
|
:marked
|
||||||
### Add the libraries we need
|
### Add the libraries we need
|
||||||
|
|
||||||
|
@ -91,16 +114,6 @@ code-example(format="").
|
||||||
:marked
|
:marked
|
||||||
Scary <span style="color:red; font-weight: bold">error messages in red</span> may appear **during** install.
|
Scary <span style="color:red; font-weight: bold">error messages in red</span> may appear **during** install.
|
||||||
Ignore them. The install will succeed. See the [appendix below](#npm-errors) for more information.
|
Ignore them. The install will succeed. See the [appendix below](#npm-errors) for more information.
|
||||||
:marked
|
|
||||||
### Configure TypeScript
|
|
||||||
|
|
||||||
We must guide the TypeScript compiler with very specific settings.
|
|
||||||
|
|
||||||
Add a **tsconfig.json** file to the project folder and copy/paste the following:
|
|
||||||
+makeJson('quickstart/ts/tsconfig.1.json', null, 'tsconfig.json')(format=".")
|
|
||||||
.l-sub-section
|
|
||||||
:marked
|
|
||||||
We explore the `tsconfig.json` in an [appendix below](#tsconfig)
|
|
||||||
:marked
|
:marked
|
||||||
**We're all set.** Let's write some code.
|
**We're all set.** Let's write some code.
|
||||||
|
|
||||||
|
@ -210,8 +223,6 @@ code-example(format="").
|
||||||
We import both. Then we call `bootstrap`, passing in the **root component type**,
|
We import both. Then we call `bootstrap`, passing in the **root component type**,
|
||||||
`AppComponent`.
|
`AppComponent`.
|
||||||
|
|
||||||
The `<reference>` tag tells TypeScript how to find the typings for browser shims used by Angular.
|
|
||||||
|
|
||||||
.l-sub-section
|
.l-sub-section
|
||||||
:marked
|
:marked
|
||||||
Learn why we import `bootstrap` from `angular2/platform/browser`
|
Learn why we import `bootstrap` from `angular2/platform/browser`
|
||||||
|
@ -295,14 +306,16 @@ figure.image-display
|
||||||
.filetree
|
.filetree
|
||||||
.file angular2-quickstart
|
.file angular2-quickstart
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file app.component.ts
|
.file app.component.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
.file package.json
|
.file package.json
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
And here are the files:
|
And here are the files:
|
||||||
+makeTabs(`
|
+makeTabs(`
|
||||||
|
@ -310,9 +323,10 @@ figure.image-display
|
||||||
quickstart/ts/app/main.ts,
|
quickstart/ts/app/main.ts,
|
||||||
quickstart/ts/index.html,
|
quickstart/ts/index.html,
|
||||||
quickstart/ts/package.1.json,
|
quickstart/ts/package.1.json,
|
||||||
quickstart/ts/tsconfig.1.json
|
quickstart/ts/tsconfig.1.json,
|
||||||
|
quickstart/ts/typings.1.json
|
||||||
`,null,
|
`,null,
|
||||||
`app/app.component.ts, app/main.ts, index.html,package.json, tsconfig.json`)
|
`app/app.component.ts, app/main.ts, index.html,package.json, tsconfig.json, typings.json`)
|
||||||
:marked
|
:marked
|
||||||
|
|
||||||
.l-main-section
|
.l-main-section
|
||||||
|
@ -349,7 +363,7 @@ figure.image-display
|
||||||
<a id="libraries"></a>
|
<a id="libraries"></a>
|
||||||
.l-main-section
|
.l-main-section
|
||||||
:marked
|
:marked
|
||||||
### Appendix: Libraries
|
## Appendix: Libraries
|
||||||
We loaded the following scripts
|
We loaded the following scripts
|
||||||
+makeExample('quickstart/ts/index.html', 'libraries', 'index.html')(format=".")
|
+makeExample('quickstart/ts/index.html', 'libraries', 'index.html')(format=".")
|
||||||
:marked
|
:marked
|
||||||
|
@ -382,7 +396,7 @@ figure.image-display
|
||||||
.l-main-section
|
.l-main-section
|
||||||
:marked
|
:marked
|
||||||
<a id="package-json"></a>
|
<a id="package-json"></a>
|
||||||
### Appendix: package.json
|
## Appendix: package.json
|
||||||
|
|
||||||
[npm](https://docs.npmjs.com/) is a popular package manager and Angular application developers rely on it
|
[npm](https://docs.npmjs.com/) is a popular package manager and Angular application developers rely on it
|
||||||
to acquire and manage the libraries their apps require.
|
to acquire and manage the libraries their apps require.
|
||||||
|
@ -425,7 +439,7 @@ code-example(format="").
|
||||||
.l-main-section
|
.l-main-section
|
||||||
:marked
|
:marked
|
||||||
<a id="npm-errors"></a>
|
<a id="npm-errors"></a>
|
||||||
### Appendix: Npm errors and warnings
|
## Appendix: Npm errors and warnings
|
||||||
|
|
||||||
All is well if there are no console messages starting with `npm ERR!` *at the end* of **npm install**.
|
All is well if there are no console messages starting with `npm ERR!` *at the end* of **npm install**.
|
||||||
There might be a few `npm WARN` messages along the way — and that is perfectly fine.
|
There might be a few `npm WARN` messages along the way — and that is perfectly fine.
|
||||||
|
@ -441,7 +455,7 @@ code-example(format="").
|
||||||
.l-main-section
|
.l-main-section
|
||||||
:marked
|
:marked
|
||||||
<a id="tsconfig"></a>
|
<a id="tsconfig"></a>
|
||||||
### Appendix: TypeScript configuration
|
## Appendix: TypeScript configuration
|
||||||
We added a TypeScript configuration file (`tsconfig.json`) to our project to
|
We added a TypeScript configuration file (`tsconfig.json`) to our project to
|
||||||
guide the compiler as it generates JavaScript files.
|
guide the compiler as it generates JavaScript files.
|
||||||
Get details about `tsconfig.json` from the official
|
Get details about `tsconfig.json` from the official
|
||||||
|
@ -478,10 +492,99 @@ code-example(format="").
|
||||||
"suppressImplicitAnyIndexErrors":true
|
"suppressImplicitAnyIndexErrors":true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
<a id="typings"></a>
|
||||||
|
.l-main-section
|
||||||
|
:marked
|
||||||
|
## Appendix: TypeScript Typings
|
||||||
|
Many libraries such as jQuery, the Jasmine testing library, and Angular itself,
|
||||||
|
add material to the JavaScript environment that the TypeScript compiler doesn't recognize.
|
||||||
|
When the compiler doesn't recognize something, it throws an error.
|
||||||
|
|
||||||
|
We use [TypeScript type definition files](http://www.typescriptlang.org/Handbook#writing-dts-files)
|
||||||
|
— *d.ts files* — to tell the compiler about the libraries we load.
|
||||||
|
|
||||||
|
TypeScript-aware editors leverage these same definition files to display type information about library features.
|
||||||
|
|
||||||
|
Many libraries include their definition files in their npm packages where both the TypeScript compiler and editors
|
||||||
|
can find them. Angular is one such library.
|
||||||
|
Peek into the `node_modules/angular2/` folder to see several `...d.ts` files that describe parts of Angular.
|
||||||
|
|
||||||
|
**We do nothing to get *typings* files for library packages with bundled *d.ts* files.**
|
||||||
|
|
||||||
|
Sadly, many libraries — jQuery, Jasmine, and Lodash among them — do *not* include `d.ts` files in their npm packages.
|
||||||
|
Fortunately, either their authors or community contributors have created separate *d.ts* files for these libraries and
|
||||||
|
published them in well-known locations.
|
||||||
|
The *typings* tool can find and fetch these files for us.
|
||||||
|
|
||||||
|
We installed the [typings](https://github.com/typings/typings/blob/master/README.md) tool
|
||||||
|
with npm (find it in the `package.json`) and added an npm script
|
||||||
|
to run that tool automatically after *npm* installation completes.
|
||||||
|
+makeJson('quickstart/ts/package.1.json', {paths: 'scripts.postinstall'}, 'tsconfig.json (postinstall)')(format=".")
|
||||||
|
:marked
|
||||||
|
This *typings* tool command installs the *d.ts* files that we identified in `typings.json`:
|
||||||
|
+makeJson('quickstart/ts/typings.1.json', null, 'typings.json')(format=".")
|
||||||
|
:marked
|
||||||
|
We identified only one *typings* file in this QuickStart, the *d.ts* file for
|
||||||
|
[es6-shim](https://github.com/paulmillr/es6-shim/blob/master/README.md) that brings ES2015/ES6
|
||||||
|
capabilities to our ES5 browsers.
|
||||||
|
QuickStart itself doesn't need this shim but many of the documentation samples do
|
||||||
|
and most of us would be disappointed if typical ES2015 features didn't work out-of-the-box.
|
||||||
|
|
||||||
|
We can also run the *typings* tool ourselves. The following command lists the locally installed typings files.
|
||||||
|
code-example(format="").
|
||||||
|
npm run typings list
|
||||||
|
:marked
|
||||||
|
The following command installs the typings file for the Jasmine test library and updates the `typings.config`
|
||||||
|
so we that we get it automatically the next time.
|
||||||
|
code-example(format="").
|
||||||
|
npm run typings install -- jasmine --ambient --save
|
||||||
|
.l-sub-section
|
||||||
|
:marked
|
||||||
|
Learn about the features of the *typings* tool at its [site on github](https://github.com/typings/typings/blob/master/README.md).
|
||||||
|
:marked
|
||||||
|
#### Typing file collisions
|
||||||
|
|
||||||
|
The TypeScript compiler does not tolerate redefinition of a type. For example, it throws an error if it's given two definitions for
|
||||||
|
the `Promise` type.
|
||||||
|
|
||||||
|
Double definitions are common. In fact, the `typings` tool deliberately creates
|
||||||
|
duplicate sets of typings (for reasons best explained elsewhere).
|
||||||
|
Look in the project structure for the *typings folder* where we should find something like:
|
||||||
|
.filetree
|
||||||
|
.file typings
|
||||||
|
.children
|
||||||
|
.file browser
|
||||||
|
.children
|
||||||
|
.file ambient
|
||||||
|
.children
|
||||||
|
.file es6-shim
|
||||||
|
.children
|
||||||
|
.file es6-shim.d.ts
|
||||||
|
.children
|
||||||
|
.file main
|
||||||
|
.children
|
||||||
|
.file ambient
|
||||||
|
.children
|
||||||
|
.file es6-shim
|
||||||
|
.children
|
||||||
|
.file es6-shim.d.ts
|
||||||
|
.children
|
||||||
|
.file browser.d.ts
|
||||||
|
.file main.d.ts
|
||||||
|
:marked
|
||||||
|
The `es6-shim` typings are duplicated and the `browser.d.ts` and `main.d.ts` have overlapping content.
|
||||||
|
|
||||||
|
We must tell the compiler to ignore one or the other.
|
||||||
|
We removed the `main` set from consideration in the `exclude` section of our `tsconfig.json` file:
|
||||||
|
+makeJson('quickstart/ts/tsconfig.1.json', {paths: 'exclude'}, 'tsconfig.json (exclude)')(format=".")
|
||||||
|
:marked
|
||||||
|
|
||||||
|
|
||||||
.l-main-section
|
.l-main-section
|
||||||
:marked
|
:marked
|
||||||
<a id="systemjs"></a>
|
<a id="systemjs"></a>
|
||||||
### Appendix: SystemJS Configuration
|
## Appendix: SystemJS Configuration
|
||||||
|
|
||||||
The QuickStart uses [SystemJS](https://github.com/systemjs/systemjs) to load application
|
The QuickStart uses [SystemJS](https://github.com/systemjs/systemjs) to load application
|
||||||
and library modules.
|
and library modules.
|
||||||
|
@ -544,9 +647,9 @@ code-example(format="").
|
||||||
.l-main-section
|
.l-main-section
|
||||||
:marked
|
:marked
|
||||||
<a id="main"></a>
|
<a id="main"></a>
|
||||||
### Appendix: ***main.ts***
|
## Appendix: **main.ts**
|
||||||
|
|
||||||
#### Bootstrapping is platform-specific
|
### Bootstrapping is platform-specific
|
||||||
We import the `bootstrap` function from `angular2/platform/browser`,
|
We import the `bootstrap` function from `angular2/platform/browser`,
|
||||||
not `angular2/core`. There's a good reason.
|
not `angular2/core`. There's a good reason.
|
||||||
|
|
||||||
|
@ -564,7 +667,7 @@ code-example(format="").
|
||||||
|
|
||||||
These targets require a different kind of bootstrap function that we'd import from a different library.
|
These targets require a different kind of bootstrap function that we'd import from a different library.
|
||||||
|
|
||||||
#### Why do we create a separate ***main.ts*** file?
|
### Why do we create a separate ***main.ts*** file?
|
||||||
|
|
||||||
The *main.ts* file is tiny. This is just a QuickStart.
|
The *main.ts* file is tiny. This is just a QuickStart.
|
||||||
We could have folded its few lines into the `app.component` file
|
We could have folded its few lines into the `app.component` file
|
||||||
|
@ -577,14 +680,14 @@ code-example(format="").
|
||||||
1. Separation of concerns
|
1. Separation of concerns
|
||||||
1. We learned about import and export
|
1. We learned about import and export
|
||||||
|
|
||||||
#### It's easy
|
### It's easy
|
||||||
Sure it's an extra step and an extra file. How hard is that in the scheme of things?
|
Sure it's an extra step and an extra file. How hard is that in the scheme of things?
|
||||||
|
|
||||||
We'll see that a separate `main.ts` is beneficial for *most* apps
|
We'll see that a separate `main.ts` is beneficial for *most* apps
|
||||||
even if it isn't critical for the QuickStart.
|
even if it isn't critical for the QuickStart.
|
||||||
Let's develop good habits now while the cost is low.
|
Let's develop good habits now while the cost is low.
|
||||||
|
|
||||||
#### Testability
|
### Testability
|
||||||
We should be thinking about testability from the beginning
|
We should be thinking about testability from the beginning
|
||||||
even if we know we'll never test the QuickStart.
|
even if we know we'll never test the QuickStart.
|
||||||
|
|
||||||
|
@ -597,21 +700,21 @@ code-example(format="").
|
||||||
Relocating the `bootstrap` function to `main.ts` eliminates this spurious error
|
Relocating the `bootstrap` function to `main.ts` eliminates this spurious error
|
||||||
and leaves us with a clean component module file.
|
and leaves us with a clean component module file.
|
||||||
|
|
||||||
#### Reusability
|
### Reusability
|
||||||
We refactor, rename, and relocate files as our application evolves.
|
We refactor, rename, and relocate files as our application evolves.
|
||||||
We can't do any of those things while the file calls `bootstrap`.
|
We can't do any of those things while the file calls `bootstrap`.
|
||||||
We can't move it.
|
We can't move it.
|
||||||
We can't reuse the component in another application.
|
We can't reuse the component in another application.
|
||||||
We can't pre-render the component on the server for better performance.
|
We can't pre-render the component on the server for better performance.
|
||||||
|
|
||||||
#### Separation of concerns
|
### Separation of concerns
|
||||||
A component's responsibility is to present and manage a view.
|
A component's responsibility is to present and manage a view.
|
||||||
|
|
||||||
Launching the application has nothing to do with view management.
|
Launching the application has nothing to do with view management.
|
||||||
That's a separate concern. The friction we're encountering in testing and reuse
|
That's a separate concern. The friction we're encountering in testing and reuse
|
||||||
stems from this unnecessary mix of responsibilities.
|
stems from this unnecessary mix of responsibilities.
|
||||||
|
|
||||||
#### Import/Export
|
### Import/Export
|
||||||
|
|
||||||
While writing a separate `main.ts` file we learned an essential Angular skill:
|
While writing a separate `main.ts` file we learned an essential Angular skill:
|
||||||
how to export from one module and import into another.
|
how to export from one module and import into another.
|
||||||
|
|
|
@ -6,7 +6,7 @@ include ../../../../_includes/_util-fns
|
||||||
- to test one of our application classes
|
- to test one of our application classes
|
||||||
- why we prefer our test files to be next to their corresponding source files
|
- why we prefer our test files to be next to their corresponding source files
|
||||||
- to run tests with an `npm` command
|
- to run tests with an `npm` command
|
||||||
- load the test file with systemJS
|
- load the test file with SystemJS
|
||||||
|
|
||||||
.callout.is-helpful
|
.callout.is-helpful
|
||||||
header Prior Knowledge
|
header Prior Knowledge
|
||||||
|
@ -240,7 +240,7 @@ code-example(format="" language="html").
|
||||||
|
|
||||||
.l-main-section
|
.l-main-section
|
||||||
:marked
|
:marked
|
||||||
## Load tests with systemjs
|
## Load tests with SystemJS
|
||||||
|
|
||||||
The immediate cause of the error is the `export` statement in `hero.ts`.
|
The immediate cause of the error is the `export` statement in `hero.ts`.
|
||||||
That error was there all along.
|
That error was there all along.
|
||||||
|
@ -254,8 +254,8 @@ code-example(format="" language="html").
|
||||||
|
|
||||||
We add module loading support in four steps:
|
We add module loading support in four steps:
|
||||||
|
|
||||||
1. add the *systemjs* module management library
|
1. add the *SystemJS* module management library
|
||||||
1. configure *systemjs* to look for JavaScript files by default
|
1. configure *SystemJS* to look for JavaScript files by default
|
||||||
1. import our test files
|
1. import our test files
|
||||||
1. tell Jasmine to run the imported tests
|
1. tell Jasmine to run the imported tests
|
||||||
|
|
||||||
|
@ -268,7 +268,7 @@ code-example(format="" language="html").
|
||||||
<script src="../node_modules/systemjs/dist/system.src.js"></script>
|
<script src="../node_modules/systemjs/dist/system.src.js"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// #2. Configure systemjs to use the .js extension
|
// #2. Configure SystemJS to use the .js extension
|
||||||
// for imports from the app folder
|
// for imports from the app folder
|
||||||
System.config({
|
System.config({
|
||||||
packages: {
|
packages: {
|
||||||
|
@ -304,7 +304,7 @@ figure.image-display
|
||||||
Without that default, it would translate an import statement such as `import {Hero} from './hero'` to a request for the file named `hero`.
|
Without that default, it would translate an import statement such as `import {Hero} from './hero'` to a request for the file named `hero`.
|
||||||
Not `hero.js`. Just plain `hero`. Our server error with "404 - not found" because it doesn't have a file of that name.
|
Not `hero.js`. Just plain `hero`. Our server error with "404 - not found" because it doesn't have a file of that name.
|
||||||
|
|
||||||
Once configured with a default extension of 'js', Systemjs requests `hero.js` which *does* exist and is promptly returned by our server.
|
Once configured with a default extension of 'js', SystemJS requests `hero.js` which *does* exist and is promptly returned by our server.
|
||||||
|
|
||||||
### Asynchronous System.import
|
### Asynchronous System.import
|
||||||
The call to `System.import` shouldn't surprise us but it's asynchronous nature might.
|
The call to `System.import` shouldn't surprise us but it's asynchronous nature might.
|
||||||
|
@ -319,7 +319,7 @@ figure.image-display
|
||||||
The browser raises the `load` event when it finishes loading all scripts.
|
The browser raises the `load` event when it finishes loading all scripts.
|
||||||
|
|
||||||
But we're not loading test scripts inline anymore.
|
But we're not loading test scripts inline anymore.
|
||||||
We're using the systemjs module loader and it won't be done until long after the browser raised the `load` event.
|
We're using the SystemJS module loader and it won't be done until long after the browser raised the `load` event.
|
||||||
Meanwhile, Jasmine started and ran to completion … with no tests to evaluate … before the import completed.
|
Meanwhile, Jasmine started and ran to completion … with no tests to evaluate … before the import completed.
|
||||||
|
|
||||||
So we must wait until the import completes and only then call the window `onLoad` handler.
|
So we must wait until the import completes and only then call the window `onLoad` handler.
|
||||||
|
|
|
@ -16,14 +16,16 @@ include ../../../../_includes/_util-fns
|
||||||
.filetree
|
.filetree
|
||||||
.file angular2-tour-of-heroes
|
.file angular2-tour-of-heroes
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file app.component.ts
|
.file app.component.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
.file package.json
|
.file package.json
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
## Keep the app transpiling and running
|
## Keep the app transpiling and running
|
||||||
We want to start the TypeScript compiler, have it watch for changes, and start our server. We'll do this by typing
|
We want to start the TypeScript compiler, have it watch for changes, and start our server. We'll do this by typing
|
||||||
|
|
|
@ -22,14 +22,16 @@ include ../../../../_includes/_util-fns
|
||||||
.filetree
|
.filetree
|
||||||
.file angular2-tour-of-heroes
|
.file angular2-tour-of-heroes
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file app.component.ts
|
.file app.component.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
.file package.json
|
.file package.json
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
### Keep the app transpiling and running
|
### Keep the app transpiling and running
|
||||||
We want to start the TypeScript compiler, have it watch for changes, and start our server. We'll do this by typing
|
We want to start the TypeScript compiler, have it watch for changes, and start our server. We'll do this by typing
|
||||||
|
|
|
@ -14,14 +14,16 @@ include ../../../../_includes/_util-fns
|
||||||
.filetree
|
.filetree
|
||||||
.file angular2-tour-of-heroes
|
.file angular2-tour-of-heroes
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file app.component.ts
|
.file app.component.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
.file package.json
|
.file package.json
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
### Keep the app transpiling and running
|
### Keep the app transpiling and running
|
||||||
We want to start the TypeScript compiler, have it watch for changes, and start our server. We'll do this by typing
|
We want to start the TypeScript compiler, have it watch for changes, and start our server. We'll do this by typing
|
||||||
|
@ -206,16 +208,18 @@ code-example(format=".")
|
||||||
.filetree
|
.filetree
|
||||||
.file angular2-tour-of-heroes
|
.file angular2-tour-of-heroes
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file app.component.ts
|
.file app.component.ts
|
||||||
.file hero.ts
|
.file hero.ts
|
||||||
.file hero-detail.component.ts
|
.file hero-detail.component.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
.file package.json
|
.file package.json
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
Here are the code files we discussed in this chapter.
|
Here are the code files we discussed in this chapter.
|
||||||
|
|
||||||
|
|
|
@ -27,16 +27,18 @@ include ../../../../_includes/_util-fns
|
||||||
.filetree
|
.filetree
|
||||||
.file angular2-tour-of-heroes
|
.file angular2-tour-of-heroes
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file app.component.ts
|
.file app.component.ts
|
||||||
.file hero.ts
|
.file hero.ts
|
||||||
.file hero-detail.component.ts
|
.file hero-detail.component.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
.file package.json
|
.file package.json
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
### Keep the app transpiling and running
|
### Keep the app transpiling and running
|
||||||
Open a terminal/console window.
|
Open a terminal/console window.
|
||||||
|
@ -322,7 +324,6 @@ code-example(format="." language="html").
|
||||||
.filetree
|
.filetree
|
||||||
.file angular2-tour-of-heroes
|
.file angular2-tour-of-heroes
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file app.component.ts
|
.file app.component.ts
|
||||||
|
@ -331,9 +332,12 @@ code-example(format="." language="html").
|
||||||
.file hero.service.ts
|
.file hero.service.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
.file mock-heroes.ts
|
.file mock-heroes.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
.file package.json
|
.file package.json
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
Here are the code files we discussed in this chapter.
|
Here are the code files we discussed in this chapter.
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,6 @@ figure.image-display
|
||||||
.filetree
|
.filetree
|
||||||
.file angular2-tour-of-heroes
|
.file angular2-tour-of-heroes
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file app.component.ts
|
.file app.component.ts
|
||||||
|
@ -44,9 +43,12 @@ figure.image-display
|
||||||
.file hero.service.ts
|
.file hero.service.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
.file mock-heroes.ts
|
.file mock-heroes.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
.file package.json
|
.file package.json
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
### Keep the app transpiling and running
|
### Keep the app transpiling and running
|
||||||
Open a terminal/console window and enter the following command to
|
Open a terminal/console window and enter the following command to
|
||||||
|
@ -641,7 +643,6 @@ figure.image-display
|
||||||
.filetree
|
.filetree
|
||||||
.file angular2-tour-of-heroes
|
.file angular2-tour-of-heroes
|
||||||
.children
|
.children
|
||||||
.file node_modules
|
|
||||||
.file app
|
.file app
|
||||||
.children
|
.children
|
||||||
.file app.component.ts
|
.file app.component.ts
|
||||||
|
@ -659,10 +660,12 @@ figure.image-display
|
||||||
.file heroes.component.ts
|
.file heroes.component.ts
|
||||||
.file main.ts
|
.file main.ts
|
||||||
.file mock-heroes.ts
|
.file mock-heroes.ts
|
||||||
|
.file node_modules ...
|
||||||
|
.file typings ...
|
||||||
.file index.html
|
.file index.html
|
||||||
.file package.json
|
.file package.json
|
||||||
.file styles.css
|
|
||||||
.file tsconfig.json
|
.file tsconfig.json
|
||||||
|
.file typings.json
|
||||||
:marked
|
:marked
|
||||||
|
|
||||||
.l-main-section
|
.l-main-section
|
||||||
|
|
|
@ -39,42 +39,42 @@ var _rxData = [
|
||||||
{
|
{
|
||||||
pattern: 'script',
|
pattern: 'script',
|
||||||
from: 'node_modules/angular2/bundles/angular2.dev.js',
|
from: 'node_modules/angular2/bundles/angular2.dev.js',
|
||||||
to: 'https://code.angularjs.org/2.0.0-beta.3/angular2.dev.js'
|
to: 'https://code.angularjs.org/2.0.0-beta.6/angular2.dev.js'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: 'script',
|
pattern: 'script',
|
||||||
from: 'node_modules/angular2/bundles/angular2-all.umd.js',
|
from: 'node_modules/angular2/bundles/angular2-all.umd.js',
|
||||||
to: 'https://code.angularjs.org/2.0.0-beta.3/angular2-all.umd.dev.js'
|
to: 'https://code.angularjs.org/2.0.0-beta.6/angular2-all.umd.dev.js'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: 'script',
|
pattern: 'script',
|
||||||
from: 'node_modules/angular2/bundles/angular2-polyfills.js',
|
from: 'node_modules/angular2/bundles/angular2-polyfills.js',
|
||||||
to: 'https://code.angularjs.org/2.0.0-beta.3/angular2-polyfills.js'
|
to: 'https://code.angularjs.org/2.0.0-beta.6/angular2-polyfills.js'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: 'script',
|
pattern: 'script',
|
||||||
from: 'node_modules/rxjs/bundles/Rx.js',
|
from: 'node_modules/rxjs/bundles/Rx.js',
|
||||||
to: 'https://code.angularjs.org/2.0.0-beta.3/Rx.js'
|
to: 'https://code.angularjs.org/2.0.0-beta.6/Rx.js'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: 'script',
|
pattern: 'script',
|
||||||
from: 'node_modules/rxjs/bundles/Rx.umd.js',
|
from: 'node_modules/rxjs/bundles/Rx.umd.js',
|
||||||
to: 'https://code.angularjs.org/2.0.0-beta.3/Rx.umd.js'
|
to: 'https://code.angularjs.org/2.0.0-beta.6/Rx.umd.js'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: 'script',
|
pattern: 'script',
|
||||||
from: 'node_modules/angular2/bundles/router.dev.js',
|
from: 'node_modules/angular2/bundles/router.dev.js',
|
||||||
to: 'https://code.angularjs.org/2.0.0-beta.3/router.dev.js'
|
to: 'https://code.angularjs.org/2.0.0-beta.6/router.dev.js'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: 'script',
|
pattern: 'script',
|
||||||
from: 'node_modules/angular2/bundles/http.dev.js',
|
from: 'node_modules/angular2/bundles/http.dev.js',
|
||||||
to: 'https://code.angularjs.org/2.0.0-beta.3/http.dev.js'
|
to: 'https://code.angularjs.org/2.0.0-beta.6/http.dev.js'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: 'script',
|
pattern: 'script',
|
||||||
from: 'node_modules/angular2/bundles/testing.dev.js',
|
from: 'node_modules/angular2/bundles/testing.dev.js',
|
||||||
to: 'https://code.angularjs.org/2.0.0-beta.3/testing.dev.js'
|
to: 'https://code.angularjs.org/2.0.0-beta.6/testing.dev.js'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: 'script',
|
pattern: 'script',
|
||||||
|
@ -84,7 +84,7 @@ var _rxData = [
|
||||||
{
|
{
|
||||||
pattern: 'script',
|
pattern: 'script',
|
||||||
from: 'node_modules/systemjs/dist/system-polyfills.js',
|
from: 'node_modules/systemjs/dist/system-polyfills.js',
|
||||||
to: 'https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.16/system-polyfills.js'
|
to: 'https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.20/system-polyfills.js'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: 'script',
|
pattern: 'script',
|
||||||
|
|
|
@ -109,6 +109,7 @@ function initConfigAndCollectFileNames(configFileName) {
|
||||||
// var defaultExcludes = [ '!**/node_modules/**','!**/typings/**','!**/tsconfig.json', '!**/*plnkr.json', '!**/*plnkr.html', '!**/*plnkr.no-link.html' ];
|
// var defaultExcludes = [ '!**/node_modules/**','!**/typings/**','!**/tsconfig.json', '!**/*plnkr.json', '!**/*plnkr.html', '!**/*plnkr.no-link.html' ];
|
||||||
var defaultExcludes = [
|
var defaultExcludes = [
|
||||||
'!**/typings/**',
|
'!**/typings/**',
|
||||||
|
'!**/typings.json',
|
||||||
'!**/tsconfig.json',
|
'!**/tsconfig.json',
|
||||||
'!**/*plnkr.*',
|
'!**/*plnkr.*',
|
||||||
'!**/package.json',
|
'!**/package.json',
|
||||||
|
|
Loading…
Reference in New Issue