Ng2 CLI

 +

(some Webstorm Tips)

Angular CLI

  • npm install -g angular-cli
  • ng new <my-project>

CLI Commands

Component ng g component my-new-component
Directive ng g directive my-new-directive
Pipe ng g pipe my-new-pipe
Service ng g service my-new-service
Class ng g class my-new-class
Interface ng g interface my-new-interface
Enum ng g enum my-new-enum
Module ng g module my-module

App Structure

root
    src
        app
           my-module 1
               components
               pages
           my-module 2
           ...      
        assets
        environments
        styles    
        

Folder names small-caps with dashcase

Files Nomenclature

Names with dashcase and Types with dotcase

    Types

  • Component
  • Spec
  • Actions
  • Entity
  • Module
  • Projections
  • Reducers

        Names

  • comment-list.component
  • comment-list.reducer.spec.ts
  • comment.actions.ts
  • comment.entity.ts
  • comment.module.ts
  • comment.projections.ts
  • comment.reducers.ts
  • package.json
  • npm-shrinkwrap
  • bower.json & bowerrc
  • .gitignore
  • tslint.json
  • karma.conf.js
  • protractor.conf.js
  • angular-cli.json
  • .editorconfig

Root Dir

Package.json

Node package Management

{
name: "my-project",
version: "0.0.0",
licence:
scripts: {
    "start": "ng serve --host 0.0.0.0",
    "postinstall": "bower install",
    "lint": "tslint \"src/**/*.ts\" -e \"src/assets/**\"",
    "test": "ng test",
    "pree2e": "webdriver-manager update",
    "e2e": "protractor"
}
private: true,
dependencies:{
    "@angular/common": "2.1.2",
    "@angular/compiler": "2.1.2",
    "@angular/core": "2.1.2",
   ...
  }
devDependencies:{
    "@angular/compiler-cli": "2.1.2",
    "@types/cuid": "0.0.30",
    "@types/jasmine": "^2.2.30",
   ...
  }
}
npm i <package-name> --save || --save-dev

npm-shrinkwrap.json

{
  "name": "migration-project",
  "version": "0.0.0",
  "dependencies": {
    "@angular/common": {
      "version": "2.1.2",
      "from": "@angular/common@2.1.2",
      "resolved": "http://artifactory.ref.gnc:80/artifactory/api/npm/npm-repos/@angular/common/-/common-2.1.2.tgz"
    },
    "@angular/compiler": {
      "version": "2.1.2",
      "from": "@angular/compiler@2.1.2",
      "resolved": "http://artifactory.ref.gnc:80/artifactory/api/npm/npm-repos/@angular/compiler/-/compiler-2.1.2.tgz"
    },
    "@angular/core": {
      "version": "2.1.2",
      "from": "@angular/core@2.1.2",
      "resolved": "http://artifactory.ref.gnc:80/artifactory/api/npm/npm-repos/@angular/core/-/core-2.1.2.tgz"
    },
...
npm shrinkwrap [--dev]

Bower

Package manager for the web

bower.json

{"directory" : "src/assets/bower_components"}

bowerrc

{
  "name": "le-tube",
  "dependencies": {
    "paper-elements": "PolymerElements/paper-elements#^1.0.7",
    "iron-icons": "PolymerElements/iron-icons#1.1.3",
    "vaadin-combo-box": "^1.1.3"
  }
}

.gitignore

# dependencies
/node_modules
/src/assets/bower_components

# IDEs and editors
/.idea
.project
.classpath
*.launch
.settings/

tslint.json

run-script lint

Webstorm tip

Show npm scripts on package.json

//    "member-ordering": [
//      true,
//      "static-before-instance",
//      "variables-before-functions"
//    ],

exception to the defaults

Karma / Protactor

Testing Framework

angular-cli.json

conf for the cli

.editorconfig

conf for the editor

New Project

Title Text

  • ng new my-project --style=scss
  • update angluar-cli prefix

Ng2 CLI

By bretto

Ng2 CLI

  • 334