入力ファイルエキストラ定義と変換-es2015-モジュール - AMD作男・バベル
import Logger from "logger";
export default class Greeter {
constructor(name) {
this.name = name || '';
console.log('Hello', name);
}
notify() {
console.log('It is my duty to inform you that this JS is ES6!');
}
getName() {
Logger.log('Called getName');
return this.name;
}
}
出力ファイルを経由して、イサキ
define([], function() {
define(['exports', 'logger'], function (exports, _logger) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _logger2 = _interopRequireDefault(_logger);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var _createClass = function() {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps);
return Constructor;
};
}();
var Greeter = function() {
function Greeter(name) {
_classCallCheck(this, Greeter);
this.name = name || '';
console.log('Hello', name);
}
_createClass(Greeter, [{
key: 'notify',
value: function notify() {
console.log('It is my duty to inform you that this JS is ES6!');
}
}, {
key: 'getName',
value: function getName() {
_logger2.default.log('Called getName');
return this.name;
}
}]);
return Greeter;
}();
exports.default = Greeter;
});
});
出力ファイルを経由して、CLI
経由define(['exports', 'logger'], function (exports, _logger) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _logger2 = _interopRequireDefault(_logger);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var _createClass = function() {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps);
return Constructor;
};
}();
var Greeter = function() {
function Greeter(name) {
_classCallCheck(this, Greeter);
this.name = name || '';
console.log('Hello', name);
}
_createClass(Greeter, [{
key: 'notify',
value: function notify() {
console.log('It is my duty to inform you that this JS is ES6!');
}
}, {
key: 'getName',
value: function getName() {
_logger2.default.log('Called getName');
return this.name;
}
}]);
return Greeter;
}();
exports.default = Greeter;
});
{
"presets": ["es2015"],
"plugins": ["transform-es2015-modules-amd"]
}
.babelrc私はうなり声-バベルプラグイン経由で変換を行うときに、余分なdefine()
が私のES5ソースに追加されているこの奇妙な行動に実行していますよ。私はレポをフォークし、babel-coreとbabel-preset-es2015を最新バージョンに更新しましたが、それは助けになりませんでした。
これを変換するにはbabel.transformFileSync
のように見えます。 babel-cliパッケージでは、babel.tranform
のように見えます。しかし、babel.transformFileSync
はファイルを読み込み、内容をbabel.tranform
に渡します。
私はいくつかの小さな設定オプションなどをどこかに逃しているように感じます。誰かが私が逃しているものを見ることができますか
なぜ '.babelrc'を読んでいますか?これは、あなたのロジックとBabelの両方でプラグインが読み込まれることを意味します。これは、プラグインが2回指定されることを意味します。それは変換を2回実行し、このように2重のネストを引き起こします。 – loganfsmyth
@Jason - あなたはちょうど私のベーコンを救った!私の場合は、追加のBabel設定情報がpackage.json内にあり、Gulpを使用しています。しかし、物事は同じ混乱する方法で動作します。 –