网站搜索

maven - 用于 Angular2 的 TypeScript 到 JavaScript 转译器


由于 Ancular2 是用 TypeScript 编写的,我也用 TypeScript 编写我的应用程序。我想在没有运行 node.js 的 tomcat 服务器上部署这个应用程序。经过长时间的搜索,我找到了两种可行的方法:\n http://plnkr.co/edit/tpl:AvJOMERrnz94ekVua0u5?p=preview\n在这个版本中,TypeScript 文件是即时转译的,这对我来说是有效的。但在部署到服务器之前进行转译和压缩会有一个更好的解决方案。我试过用 gulp,但生成的 .ts 文件(无论是否压缩)都无法工作。然后我又找到另一个仅使用 js 文件的 plunker:\n https://plnkr.co/edit/8lOtCy4GPsq9hZH6D38E?p=preview\n比较这些文件后,我发现我的编译文件看起来要复杂得多:

"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var core_1 = require("@angular/core");
var AppComponent = (function () {
    function AppComponent() {
        this.name = 'Angular';
    }
    return AppComponent;
}());
AppComponent = __decorate([
    core_1.Component({
        selector: 'my-app',
        template: "<h1>Hello {{name}}</h1>"
    })
], AppComponent);
exports.AppComponent = AppComponent;

所以我尝试了不同的 tsconfig.json 属性来得到一个可用的转译器,但似乎是转译器本身的问题(我在两个版本中都使用了 [email 版本)

我已经尝试过在 tsconfig.json 中将模块设置为:amd、umd、system、commonjs、es2015,但这并没有解决问题。我也尝试过 noEmitHelpers,但问题依然存在(我记得我曾经看到过一个问题,是关于 var core_1=require("@angular/core"); 未定义的,但这对我没有帮助)。

我想将我的应用程序文件夹中的所有 .ts 文件转译,合并为一个文件,然后进行压缩。使用 gulp 是最好的方法,因为这可以很容易地与我的 maven 项目结合。

答案#1

使用 Angular CLI

https://github.com/angular/angular-cli

编辑 angular-cli.json 配置文件

"outDir": "path/to/maven-app/main/resources/webapp",

然后你可以运行 ng build --prod --watch 或 ng build --watch

然后构建你的 Maven 应用,它将包含所有构建文件:js、css、资源等