使用Angular CLI能够快速,简单的搭建一个angular2或angular4项目,是只要掌握几行命令就能构建出前端架构的最佳实践,它本质也是使用了webpack来编译,打包,压缩等构建的事情,适合想用webpack的特性又不想学习webpack那些复杂的配置的开发者;css
1 Angular CLI 能够快速搭建框架,建立module,service,class,directive等;html
2 具备webpack的功能,代码分割(code splitting),按需加载;前端
3 代码打包压缩;webpack
4 模块测试,端到端测试;nginx
5 热部署,有改动当即从新编译,不用刷新浏览器;并且速度很快web
6 有开发环境,测试环境,生产环境的配置,不用本身操心; ajax
7 sass,less的预编译Angular CLI都会自动识别后缀来编译;typescript
8 typescript的配置,Angular CLI在建立应用时均可以本身配置;npm
9 在建立好的工程也能够作一些个性化的配置,webpack的具体配置还不支持,将来可能会增长;json
10 Angular CLI建立的工程结构是最佳实践,生产可用;
你须要安装NodeJS 5.0以上版本,NPM 3.0以上版本;
windows: npm install -g angular-cli //全局安装
macOS: sudo npm install -g angular-cli
范围 | 命令 | 做用 |
new | ng new new_project | 初始化新项目 |
Component | ng g component my-new-component | 新建一个组件 |
Module | ng g module my-module | 新建一个模块 |
Directive | ng g directive my-new directive | 新建一个指令 |
Pipe | ng g pipe my-new-pipe | 新建一个管道 |
Service | ng g service my-new-srevice | 新建一个服务 |
Class | ng g class my-new-class | 新建一个类 |
Interface | ng g interface my-new-interface | 新建一个接口 |
Enum | ng g enum my-new enum | 新建一个枚举 |
范围 | 命令 | 做用 |
e2e | ng e2e | 执行端到端测试-本身写测试用例 |
test | ng test | 执行单元测试 |
lint | ng lint | 调用tslint跑整个项目,能够收获一堆警告和错误,-force, -fix -format能够帮助格式和修复部分问题 |
ng build
能够指定两种编译目标: (--target=production
or --target=development
) 和 (--environment=dev
or --environment=prod
),一个环境文件跟后者一块儿使用.
默认状况下, 编译开发目标和环境均被使用.
在angular-cli.json
中的如下配置能够决定那个环境配置文件将被使用:
"environments": { "source": "environments/environment.ts", "dev": "environments/environment.ts", "prod": "environments/environment.prod.ts" }
这些选项一样适用于命令行, 若是你没有为 environment
显示的传递一个值,
那么,默认将是 dev
对development
、prod
对production
.
# these are equivalent ng build --target=production --environment=prod ng build --prod --env=prod ng build --prod # and so are these ng build --target=development --environment=dev ng build --dev --e=dev ng build --dev ng build
angular-cli 的核心配置文件.angular-cli.json常见配置参数解释
{
"project": { "name": "ng-admin", //项目名称 "ejected": false // 标记该应用是否已经执行过eject命令把webpack配置释放出来 },
"apps": [ { "root": "src", // 源码根目录 "outDir": "dist", // 编译后的输出目录,默认是dist/ "assets": [ // 记录资源文件夹,构建时复制到`outDir`指定的目录 "assets", "favicon.ico" ], "index": "index.html", // 指定首页文件,默认值是"index.html" "main": "main.ts", // 指定应用的入门文件 "polyfills": "polyfills.ts", // 指定polyfill文件 "test": "test.ts", // 指定测试入门文件 "tsconfig": "tsconfig.app.json", // 指定tsconfig文件 "testTsconfig": "tsconfig.spec.json", // 指定TypeScript单测脚本的tsconfig文件
"tsconfig":"tsconfig.app.json",
"prefix": "app", // 使用`ng generate`命令时,自动为selector元数据的值添加的前缀名 "deployUrl": "//cdn.com.cn", // 指定站点的部署地址,该值最终会赋给webpack的output.publicPath,经常使用于CDN部署 "styles": [ // 引入全局样式,构建时会打包进来,经常使用于第三方库引入的样式 "styles.css" ], "scripts": [ // 引入全局脚本,构建时会打包进来,经常使用语第三方库引入的脚本 ], "environmentSource": "environments/environment.ts", // 基础环境配置 "environments": { // 子环境配置文件 "dev": "environments/environment.ts", "prod": "environments/environment.prod.ts" } } ],
"e2e": { "protractor": { "config": "./protractor.conf.js" } }, "lint": [ { "project": "src/tsconfig.app.json" }, { "project": "src/tsconfig.spec.json" }, { "project": "e2e/tsconfig.e2e.json" } ], "test": { "karma": { "config": "./karma.conf.js" } },
"defaults": { // 执行`ng generate`命令时的一些默认值
"styleExt": "scss", // 默认生成的样式文件后缀名
"component": {
"flat": false, // 生成组件时是否新建文件夹包装组件文件,默认为false(即新建文件夹)
"spec": true, // 是否生成spec文件,默认为true
"inlineStyle": false, // 新建时是否使用内联样式,默认为false
"inlineTemplate": false, // 新建时是否使用内联模板,默认为false
"viewEncapsulation": "Emulated", // 指定生成的组件的元数据viewEncapsulation的默认值
"changeDetection": "OnPush", // 指定生成的组件的元数据changeDetection的默认值
}
}
}
二. 经常使用命令的通用关键参数解释
1.ng serve --host (self)
指定本地Server绑定的域名,默认值:localhost.若是但愿使用self
来访问你的站点,须加入以上参数
2.selfng serve --hmr
注意开启以后,只是在angular-cli里的webpack添加必要的扩展,等价于webpack-dev-server --hot
,还须要在应用代码里处理hmr逻辑,如可在main.ts
里添加:
webpack-dev-server --hotmain.ts
3.ng serve if(module.hot) { module.hot.accept(); }--aot
开启aot
4.ng serve --proxy-config proxy.conf.json
指定后台转发地址,即nginx的proxy_pass代理功能。开发时为避免ajax跨域,须要指定后台接口的转发地址。
proxy.config.json文件示例以下:
下面两条等价:{ "/api": { // 匹配前缀 "target": "http://localhost:3000", // 转发地址 "secure": false } }
5.--base-href
指定站点的起始路径,若是你但愿你的站点根路径为www.abc.com/mypath/
,须要这样设置:www.abc.com/mypath/ng build --base-href /mypath/
6.--target
指定构建的目标,默认值是development,若是指定为production,构建时会加入treeshaking、代码压缩混淆等。
ng build --target=production
ng build --prod
下面两句等价:7.--environment
指定应用执行环境。CLI会根据指定的值加载对应的环境配置文件。
ng build --environment=prod ng build --env=prod
构建时会加载angular-cli.json指定的环境配置文件:
"environments": { "dev": "environments/environment.ts", "prod": "environments/environment.prod.ts" }