美文网首页
Angular CLI常用配置解说

Angular CLI常用配置解说

作者: 4ea0af17fd67 | 来源:发表于2018-11-12 11:53 被阅读41次

    angular-cli.json常见配置

    {
      "project": {
        "name": "angular-questionare",
        "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文件
          "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": "css", // 默认生成的样式文件后缀名
        "component": {
          "flat": false, // 生成组件时是否新建文件夹包装组件文件,默认为false(即新建文件夹)
          "spec": true, // 是否生成spec文件,默认为true
          "inlineStyle": false, // 新建时是否使用内联样式,默认为false
          "inlineTemplate": false, // 新建时是否使用内联模板,默认为false
          "viewEncapsulation": "Emulated", // 指定生成的组件的元数据viewEncapsulation的默认值
          "changeDetection": "OnPush", // 指定生成的组件的元数据changeDetection的默认值
        }
      }
    }
    

    通用的关键参数解释

    --host / -H

    指定本地Server绑定的域名,默认值:localhost。如果你希望使用local.qq.com来访问你的站点,须加入如下参数:

    ng serve --host local.qq.com
    
    

    --hmr

    是否开启hmr功能。

    ng serve --hmr
    
    

    注意开启之后,只是在angular-cli里的webpack添加必要的扩展,等价于webpack-dev-server --hot,还需要在应用代码里处理hmr逻辑,如可在main.ts里添加:

    if(module.hot) {
      module.hot.accept();
    }
    
    

    具体可以参考:#19

    --aot

    是否开启aot

    --proxy-config

    指定后台转发地址,即nginx的proxy_pass功能。开发时为避免ajax跨域,需要指定后台接口的转发地址,示例如下:

    ng serve --proxy-config proxy.conf.json
    
    

    proxy.config.json文件示例如下:

    {
      "/api": { // 匹配前缀
        "target": "http://localhost:3000", // 转发地址
        "secure": false
      }
    }
    
    

    --base-href / -bh

    指定站点的起始路径,如果你希望你的站点根路径为www.abc.com/mypath/,需要这样设置:

    ng build --base-href /mypath/
    
    

    --deploy-url

    angular-cli.json文件里的deployUrl配置,deployUrl的值会被赋值给webpack配置的output.publicPath里,设置完后会影响index.html静态资源路径,除此之外还会跟baseUrl协同影响组件样式里的绝对路径的静态资源,加入某组件样式如下:

    // abc.component.css
    div{
      background-image:url(/assets/images/mypic.png);
    }
    
    

    假如deployUrl设置为deploy/,而baseUrl设置为base/,编译出来的样式为${baseUrl}${deployUrl}/assets/xxx,示例如下:

    div{
      background-image:url(base/deploy/assets/images/mypic.png);
    }
    
    

    假如deployUrl设置为http://deploy.com/,而baseUrl设置为base/,编译出来的样式为${deployUrl}/assets/xxx,忽略baseUrl的值,示例如下:

    div{
      background-image:url(http://deploy.com/assets/images/mypic.png);
    }
    
    

    --target

    指定构建的目标,默认值是development,如果指定为production,构建时会加入treeshaking、代码压缩混淆等

    # 下面两条等价
    ng build --target=production
    ng build --prod 
    

    --environment

    指定应用执行环境。CLI会根据指定的值加载对应的环境配置文件,如

    # 下面两句等价
    ng build --environment=prod
    ng build --env=prod
    

    构建时会加载angular-cli.json指定的环境配置文件:

    "environments": { 
      "dev": "environments/environment.ts",
      "prod": "environments/environment.prod.ts"
    }
    

    相关文章

      网友评论

          本文标题:Angular CLI常用配置解说

          本文链接:https://www.haomeiwen.com/subject/hrwqfqtx.html