非常に奇妙な名前の問題を見つけました。私は、アプリケーションをビルドしてコンパイルするためにwebpackを使用するIonic AppでTypeScriptライブラリ(TypeORM)を使用しようとしています。Webpack tree shaking - エンティティと呼ばれるエクスポートを削除します
タイプORMには、Entity
,AbstractEntity
などと呼ばれるエンティティのデコレータがあります。 Entity
デコレータをインポートして使用すると、webpackで使用されているとマークされません。 AbstractEntity
に切り替えると、使用済みとしてマークされます。他のすべてのデコレータは使用済みとしてマークされます。
この活字体クラス
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
user_id_internal: number;
@Column({unique: true})
user_id: string;
@Column()
first_name: string;
@Column()
last_name: string;
}
が
var User = (function() {
function User() {
}
return User;
}());
__decorate([
Object(__WEBPACK_IMPORTED_MODULE_0_typeorm__["f" /* PrimaryGeneratedColumn */])(),
__metadata("design:type", Number)
], User.prototype, "user_id_internal", void 0);
__decorate([
Object(__WEBPACK_IMPORTED_MODULE_0_typeorm__["a" /* Column */])({ unique: true }),
__metadata("design:type", String)
], User.prototype, "user_id", void 0);
__decorate([
Object(__WEBPACK_IMPORTED_MODULE_0_typeorm__["a" /* Column */])(),
__metadata("design:type", String)
], User.prototype, "first_name", void 0);
__decorate([
Object(__WEBPACK_IMPORTED_MODULE_0_typeorm__["a" /* Column */])(),
__metadata("design:type", String)
], User.prototype, "last_name", void 0);
User = __decorate([
Object(__WEBPACK_IMPORTED_MODULE_0_typeorm__["b" /* Entity */])()
], User);
しかしEntity
に翻訳され、未使用の
// index.ts imports
/* unused harmony namespace reexport */
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__decorator_entities_Entity__ = __webpack_require__(382);
// Entity.ts exports
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(4);
/* unused harmony export Entity */
としてマークされているが、私はAbstractEntity
にEntity
を変更するときに使用
// index.ts
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__decorator_entities_AbstractEntity__ = __webpack_require__(555);
/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_32__decorator_entities_AbstractEntity__["a"]; });
// AbstractEntity.ts
/* harmony export (immutable) */ __webpack_exports__["a"] = AbstractEntity;
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(4);
なぜですか?
彼らのドキュメントでは、es6&に切り替える必要があり、uglifyjsはハーモニーをサポートしていないとしています。イオンアプリスクリプトにgit://github.com/mishoo/UglifyJS2#harmonyをインストールしましたか? – misha130
彼らのドキュメントはwebpackのドキュメントですか?私はionic-app-scriptsの設定を変更しなかったので、es5にコンパイルされています。だからそれをes6に移すことは助けになるだろうか? –
Nah、申し訳ありませんが、私はTypeORMのドキュメントを誤解しました。私はes6への蒸散が助けになるとは思わない。デコレータとWebpackのバグのようです – misha130