官方 Angular 样板中的哪些包是真正需要的,为什么?

Which packages in official Angular boilerplate are really needed and why?

我的项目有一个 TypeScript/Express 服务器,我想将 Angular 添加到同一个项目。

我完成了 official tutorial,所以我了解基础知识。

大多数人只会使用官方Angular "boilerplate" - ng new appname。但我想知道 要添加到 package.json 的最小包集 ,以及为什么。

我认为有些包是不必要的,添加它们是为了让开发人员更容易学习Angular - 我不想要这些。

CLI 将这些添加为 dependencies:

@angular/animations
@angular/common
@angular/compiler
@angular/core
@angular/forms
@angular/platform-browser
@angular/platform-browser-dynamic
@angular/router
core-js
rxjs
tslib
zone.js

这些是 devDependencies:

@angular-devkit/build-angular
@angular/cli
@angular/compiler-cli
@angular/language-service
codelyzer
jasmine-core                     // I assume this is for unit testing
jasmine-spec-reporter            // I assume this is for unit testing
karma
karma-chrome-launcher
karma-coverage-istanbul-reporter
karma-jasmine
karma-jasmine-html-reporter
protractor                       // I assume this is for integration testing
ts-node

其中哪些是实际需要的? (或者换句话说:我可以删除其中的哪些?)

dependencies. From what I can tell, in this list nothing is optional.

@angular/animations 对于动画。如果没有动画,网页转换可能会显得突然和不和谐。 Docs

@angular/common @angular/compiler @angular/core 三个都是核心库。

@angular/forms 支持 HTML 表单,特别是绑定。

@angular/platform-browser 支持在不同支持的浏览器上交付 Angular 应用程序。 Docs

@angular/platform-browser-动态 知道如何 bootstrap 特定浏览器上的应用程序。 Docs

@angular/router 支持路由。

core-js JavaScript 的模块化标准库。包括 ECMAScript 5、ECMAScript 6 的 polyfill。Docs

rxjs 支持事件和观察。

tslib 这是一个用于 TypeScript 的运行时库,其中包含所有 TypeScript 辅助函数。 Docs

zone.js 在 angular2 中使用 zonejs 的主要目的是知道何时渲染。 Docs

devDependencies.

@angular-devkit/build-angular angular-cli 可能需要构建。

@angular/cli @angular/compiler-cli angular-cli 需要两者才能正常工作。

@angular/language-service Angular 语言服务是一种在 Angular 模板中获取完成、错误、提示和导航的方法。 Docs

codelyzer Angular 个项目的静态分析。 Docs

茉莉核心 jasmine-spec-reporter 分别用于单元测试和生成覆盖率报告。

业力 karma-chrome-启动器 业力报道-伊斯坦布尔记者 业力茉莉花 karma-茉莉花-html-记者 业力是一个测试跑步者。茉莉花使用这个。记者用于生成报道。

量角器 用于端到端测试。

ts-node NodeJs 的打字稿。

To your original question, I wouldn't recommend to remove anything because as you can see, each of them are doing something specific which you don't want to loose while development. My small angular app is about 500Mb, but it doesn't matter because once I do ng build, it gets compiled to 20Mb.

Additionally as pointed in , you can use ng new --minimal [name] to generate a minimal list of packages absolutely required to run your application.