Start Angular2 with angular-cli
Get Start angular2 with angualr-cli
There're lots of thing you have to worry about for starting angular2, now
Angular-CLI
is build for this kind of purpose, it's a Prototype
Angular2 application based on the ember-cli project.
For this blog's example, I'm using tools as following.
node: 6.5.0 os: win32 x64
For Angular-CLI, I'm using following version.
angular-cli: 1.0.0-beta.10
Then, run following to install angular-cli to your environment
npm install -g angular-cli
Now, the first command you'd like to try is ng --help
. You would
able to check the document from github, but thought from the downloaded
angular-cli code will show the latest document by just type
ng --help
.
Following is what ng --help
shows by above version
(node:16908) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please u pdate it to a more recent version. Usage: ngAvailable commands in angular-cli: ng addon Generates a new folder structure for building an addon, complete with test harness. --dry-run (Boolean) (Default: false) aliases: -d --verbose (Boolean) (Default: false) aliases: -v --blueprint (String) (Default: addon) aliases: -b --skip-npm (Boolean) (Default: false) aliases: -sn --skip-bower (Boolean) (Default: false) aliases: -sb --skip-git (Boolean) (Default: false) aliases: -sg --directory (String) aliases: -dir ng asset-sizes Shows the sizes of your asset files. --output-path (Path) (Default: dist/) aliases: -o ng build Builds your app and places it into the output path (dist/ by default). aliases: b --environment (String) (Default: development) aliases: -e , -dev (--environment=development), -prod (--environment=production) --output-path (Path) (Default: dist/) aliases: -o --watch (Boolean) (Default: false) aliases: -w --watcher (String) --suppress-sizes (Boolean) (Default: false) ng destroy Destroys code generated by `generate` command. aliases: d --dry-run (Boolean) (Default: false) aliases: -d --verbose (Boolean) (Default: false) aliases: -v --pod (Boolean) (Default: false) aliases: -p --classic (Boolean) (Default: false) aliases: -c --dummy (Boolean) (Default: false) aliases: -dum, -id --in-repo-addon (String) (Default: null) aliases: --in-repo , -ir ng generate Generates new code from blueprints. aliases: g --dry-run (Boolean) (Default: false) aliases: -d --verbose (Boolean) (Default: false) aliases: -v --pod (Boolean) (Default: false) aliases: -p --classic (Boolean) (Default: false) aliases: -c --dummy (Boolean) (Default: false) aliases: -dum, -id --in-repo-addon (String) (Default: null) aliases: --in-repo , -ir ng help Outputs the usage instructions for all commands or the provided command aliases: h, --help, -h --verbose (Boolean) (Default: false) aliases: -v --json (Boolean) (Default: false) ng init Creates a new angular-cli project in the current folder. --dry-run (Boolean) (Default: false) aliases: -d --verbose (Boolean) (Default: false) aliases: -v --blueprint (String) aliases: -b --skip-npm (Boolean) (Default: false) aliases: -sn --skip-bower (Boolean) (Default: false) aliases: -sb --name (String) (Default: ) aliases: -n ng install Installs an angular-cli addon from npm. aliases: i ng new Creates a new directory and runs ng init in it. --dry-run (Boolean) (Default: false) aliases: -d --verbose (Boolean) (Default: false) aliases: -v --blueprint (String) (Default: app) aliases: -b --skip-npm (Boolean) (Default: false) aliases: -sn --skip-bower (Boolean) (Default: false) aliases: -sb --skip-git (Boolean) (Default: false) aliases: -sg --directory (String) aliases: -dir ng serve Builds and serves your app, rebuilding on file changes. aliases: server, s --port (Number) (Default: 4200) aliases: -p --host (String) Listens on all interfaces by default aliases: -H --proxy (String) aliases: -pr , -pxy --insecure-proxy (Boolean) (Default: false) Set false to proxy self-signed SSL certificates aliases: --inspr --watcher (String) (Default: events) aliases: -w --live-reload (Boolean) (Default: true) aliases: -lr --live-reload-host (String) Defaults to host aliases: -lrh --live-reload-base-url (String) Defaults to baseURL aliases: -lrbu --live-reload-port (Number) (Defaults to port number within [49152...65535]) aliases: -lrp --environment (String) (Default: development) aliases: -e , -dev (--environment=development), -prod (--environment=production) --output-path (Path) (Default: dist/) aliases: -op , -out --ssl (Boolean) (Default: false) --ssl-key (String) (Default: ssl/server.key) --ssl-cert (String) (Default: ssl/server.crt) ng test Runs your app's test suite. aliases: t --environment (String) (Default: test) aliases: -e --config-file (String) aliases: -c , -cf --server (Boolean) (Default: false) aliases: -s --host (String) aliases: -H --test-port (Number) (Default: 7357) The test port to use when running with --server. aliases: -tp --filter (String) A string to filter tests to run aliases: -f --module (String) The name of a test module to run aliases: -m --watcher (String) (Default: events) aliases: -w --launch (String) (Default: false) A comma separated list of browsers to launch for tests. --reporter (String) Test reporter to use [tap|dot|xunit] (default: tap) aliases: -r --silent (Boolean) (Default: false) Suppress any output except for the test report --test-page (String) Test page to invoke --path (Path) Reuse an existing build at given path. --query (String) A query string to append to the test page URL. ng version outputs angular-cli version aliases: v, --version, -v --verbose (Boolean) (Default: false) Available commands from ng2: ng new Creates a new directory and runs ng init in it. --dry-run (Boolean) (Default: false) aliases: -d --verbose (Boolean) (Default: false) aliases: -v --blueprint (String) (Default: ng2) aliases: -b --link-cli (Boolean) (Default: false) aliases: -lc --skip-npm (Boolean) (Default: false) aliases: -sn --skip-bower (Boolean) (Default: true) aliases: -sb --skip-git (Boolean) (Default: false) aliases: -sg --directory (String) aliases: -dir --source-dir (String) (Default: src) aliases: -sd --style (String) (Default: css) --prefix (String) (Default: app) aliases: -p --mobile (Boolean) (Default: false) ng generate Generates new code from blueprints. aliases: g --dry-run (Boolean) (Default: false) aliases: -d --verbose (Boolean) (Default: false) aliases: -v --pod (Boolean) (Default: false) aliases: -p --classic (Boolean) (Default: false) aliases: -c --dummy (Boolean) (Default: false) aliases: -dum, -id --in-repo-addon (String) (Default: null) aliases: --in-repo , -ir ng init Creates a new angular-cli project in the current folder. aliases: i --dry-run (Boolean) (Default: false) aliases: -d --verbose (Boolean) (Default: false) aliases: -v --blueprint (String) aliases: -b --link-cli (Boolean) (Default: false) aliases: -lc --skip-npm (Boolean) (Default: false) aliases: -sn --skip-bower (Boolean) (Default: true) aliases: -sb --name (String) (Default: ) aliases: -n --source-dir (String) (Default: src) aliases: -sd --style (String) (Default: css) --prefix (String) (Default: app) aliases: -p --mobile (Boolean) (Default: false) ng test Runs your app's test suite. aliases: t --watch (Boolean) (Default: true) aliases: -w --browsers (String) --colors (Boolean) --log-level (String) --port (Number) --reporters (String) --build (Boolean) (Default: true) ng e2e Run e2e tests in existing project ng lint Lints code in existing project ng version outputs angular-cli version aliases: v, --version, -v --verbose (Boolean) (Default: false) ng completion Adds autocomplete functionality to `ng` commands and subcommands ng doc Opens the official Angular documentation for a given keyword. ng make-this-awesome ng set Set a value in the configuration. --global (Boolean) (Default: false) aliases: -g ng get Get a value from the configuration.
To actually create prototype angular2 application you'll need to type following command.
ng new PROJECT_NAME cd PROJECT_NAME ng serve
Following is example when use Angular-CLI to create a project
PS C:\Test> cd a_cli PS C:\Test\a_cli> ng new cl installing ng2 create .clang-format create .editorconfig create src\app\cli-1.component.css create src\app\cli-1.component.html create src\app\cli-1.component.spec.ts create src\app\cli-1.component.ts create src\app\environment.ts create src\app\index.ts create src\app\shared\index.ts create src\favicon.ico create src\icon.png create src\index.html create src\main.ts create src\manifest.webapp create src\system-config.ts create src\tsconfig.json create src\typings.d.ts create angular-cli-build.js create angular-cli.json create config\environment.dev.ts create config\environment.js create config\environment.prod.ts create config\karma-test-shim.js create config\karma.conf.js create config\protractor.conf.js create e2e\app.e2e.ts create e2e\app.po.ts create e2e\tsconfig.json create e2e\typings.d.ts create .gitignore create package.json create public\.npmignore create tslint.json create typings.json Successfully initialized git. - Installing packages for tooling via npm ├── es6-shim (ambient) ├── angular-protractor (ambient dev) ├── jasmine (ambient dev) └── selenium-webdriver (ambient dev) Installed packages for tooling via npm.
ng serve
to start the site
Following is example when run ng serve to start the site, it's using Broccoli but Angular-CLI will move to WebPack.
PS C:\Test\cli_1> ng serve Livereload server on http://localhost:49152 Serving on http://localhost:4200/ Build successful - 3400ms. Slowest Trees | Total ----------------------------------------------+----------- vendor | 2431ms BroccoliTypeScriptCompiler | 705ms Slowest Trees (cumulative) | Total (avg ----------------------------------------------+----------- vendor (1) | 2431ms BroccoliTypeScriptCompiler (1) | 705ms
What shows the browser?
What kinds of files will generate for you?
Try following command, which will generate tree of directory folder.
tree /A /F ["directory path"] > tree.txt
Following files is not include files for node_modules, bowers
,
because it's running Angular-CLI as
ng new [Project-Name] --skip-npm --skip-bower --skip-git
. If you
run default command ng new [project-name]
will include above
tasks, but sometime depend on your enviroment, it'll take a long time and at
the end it's because of the permission issue. You could
npm insall -d
to install all dependencies files.
| .editorconfig | .gitignore | angular-cli-build.js | angular-cli.json | package.json | README.md | tslint.json | typings.json | +---config | environment.dev.ts | environment.js | environment.prod.ts | karma-test-shim.js | karma.conf.js | protractor.conf.js | // Your unit test(karma) or intergration test(protractor) +---e2e | app.e2e-spec.ts | app.po.ts | tsconfig.json | typings.d.ts | // when run ng build, Angular-CLI will buidl production ready which will set here +---public | .npmignore | // during development, you'll add code here. \---src | favicon.ico | index.html | main.ts | system-config.ts | tsconfig.json | typings.d.ts | \---app | app.component.css | app.component.html | app.component.spec.ts | app.component.ts | environment.ts | index.ts | \---shared index.ts
Package.json's Angular2 version rc4!?
At this point, 9/1/2016, angular2 is already in rc7, so whey when using Angular-CLI is using couple month version behind!? Actually, angular-cli is moving to webpack, so you'll have uninstall angular-cli and install the webpack version of angular-cli.
npm uninstall -g angular-cli
npm install -g angular-cli@webpack
After install the angular-cli's webpack version, run the project command to create prototype again.
ng new [project-name] --skip-npm --skip-bower --skip-git
Then run this comannd to generate directory tree,
tree /a /f "myfolder" > tree.txt
| .gitignore | angular-cli.json | karma.conf.js | package.json | protractor.conf.js | README.md | tree.txt | tslint.json | +---e2e | app.e2e-spec.ts | app.po.ts | tsconfig.json | \---src | favicon.ico | index.html | main.ts | polyfills.ts | styles.css | test.ts | tsconfig.json | typings.d.ts | +---app | | app.component.css | | app.component.html | | app.component.spec.ts | | app.component.ts | | app.module.ts | | index.ts | | | \---shared | index.ts | \---environments environment.prod.ts environment.ts
Angular2 is using 2.0.0.-rc7
now!
{ "name": "ali-006", "version": "0.0.0", "license": "MIT", "angular-cli": {}, "scripts": { "start": "ng serve", "lint": "tslint \"src/**/*.ts\"", "test": "ng test", "pree2e": "webdriver-manager update", "e2e": "protractor" }, "private": true, "dependencies": { "@angular/common": "2.0.0-rc.7", "@angular/compiler": "2.0.0-rc.7", "@angular/core": "2.0.0-rc.7", "@angular/forms": "2.0.0-rc.7", "@angular/http": "2.0.0-rc.7", "@angular/platform-browser": "2.0.0-rc.7", "@angular/platform-browser-dynamic": "2.0.0-rc.7", "@angular/router": "3.0.0-rc.3", "core-js": "^2.4.1", "rxjs": "5.0.0-beta.12", "ts-helpers": "^1.1.1", "zone.js": "^0.6.21" }, "devDependencies": { "@types/jasmine": "^2.2.30", "angular-cli": "1.0.0-beta.11-webpack.9-4", "codelyzer": "~0.0.26", "jasmine-core": "2.4.1", "jasmine-spec-reporter": "2.5.0", "karma": "1.2.0", "karma-chrome-launcher": "^2.0.0", "karma-cli": "^1.0.1", "karma-jasmine": "^1.0.2", "karma-remap-istanbul": "^0.2.1", "protractor": "4.0.5", "ts-node": "1.2.1", "tslint": "3.13.0", "typescript": "2.0.2" } }
Issues:
One of my biggest issue is when I use Angular-CLI@webpack the vendor javascript size is 2.7MB, that's killing, I think Angular-CLI will fix or maybe just document is not good I'm not able to set up it correctly by running the webpack.
If you're concern of this production assests bundle issue, you can use following Angular2-webpack-starter