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.js
o pacote resultante.
false
alternâ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.
require
que 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.