Antes, babel adicionava a linha module.exports = exports["default"]. Não faz mais isso. O que isso significa é antes que eu pudesse fazer:
var foo = require('./foo');
// use foo
Agora eu tenho que fazer isso:
var foo = require('./foo').default;
// use foo
Não é um grande negócio (e acho que é isso que deveria ter sido o tempo todo). O problema é que tenho um monte de código que dependia da maneira como as coisas funcionavam (posso converter a maioria delas em importações do ES6, mas não todas). Alguém pode me dar dicas de como fazer a maneira antiga funcionar sem ter que passar pelo meu projeto e consertar isso (ou até mesmo algumas instruções sobre como escrever um codemod para fazer isso seriam bem lisas).
Obrigado!
Exemplo:
Entrada:
const foo = {}
export default foo
Saída com Babel 5
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
Saída com Babel 6 (e plugin es2015):
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
Observe que a única diferença na saída é a module.exports = exports["default"].
Editar
Você pode estar interessado neste post do blog que escrevi depois de resolver meu problema específico: Entendendo mal os módulos ES6, atualizando o Babel, as lágrimas e uma solução
if (false) { require('./foo') }webpack ignoraria realmente foo.jso pacote resultante.
falsealternância lá? Se houver uma condição disponível na sua configuração do webpack, pode haver outra opção.
export default {foo, bar}com module.exports = {foo, bar}. Gostei bastante do método incorreto , que agora não é suportado.
requireque você precisa se estiver trabalhando em uma base de código que usa Babel? Provavelmente, existem outras abordagens que permitiriam evitar isso de qualquer maneira.