在构建角度cli时做错误做什么 - 内存不足问题

问题描述 投票:2回答:2

"false"ng build --prod --aot false命令中做了什么

我正在开发一个使用ng cli开发的角度4应用程序,因为它是一个企业解决方案,应用程序变得如此庞大,以至于服务和构建需要太多时间。我甚至得到了javascript内存问题,我开始使用以下命令来构建应用程序

ng build --prod --aot false

但我不确定它是如何工作的

angular build
2个回答
4
投票

所有可用的angular-cli命令都可以找到here

现在,当我们运行ng build --prod时,这意味着我们为我们的应用程序指定target

{
    name: 'target',
    type: String,
    default: 'development',
    aliases: ['t', { 'dev': 'development' }, { 'prod': 'production' }],
    description: 'Defines the build target.'
},

然后根据指定目标的angular-cli sets default options(angular-cli@1.4.x):

// Fill in defaults for build targets
public addTargetDefaults(buildOptions: T): T {
  const targetDefaults: { [target: string]: Partial<BuildOptions> } = {
    development: {
      environment: 'dev',
      outputHashing: 'media',
      sourcemaps: true,
      extractCss: false,
      namedChunks: true,
      aot: false
    },
    production: {
      environment: 'prod',
      outputHashing: 'all',
      sourcemaps: false,
      extractCss: true,
      namedChunks: false,
      aot: true
    }
  };

也可以在docs找到

添加--aot false时,您将覆盖默认的aot选项。因此它成为false

如果你有一些建设的问题,那么有some thread,其中常见的解决方案运行如下:

的package.json

"scripts": {
  "prod": "node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --prod" 
}

但除此之外,我更喜欢做一些重构代码来减少应用程序的大小,并帮助编译器更快地执行。


3
投票

对于生产版本,AOT默认为true,如果要停用,则可以使用:

ng build prod --no-aot 

要么

ng build prod --aot=false

但是使用AOT会在提供模板之前将模板编译为js,因此浏览器会非常快速地加载它们