Sebelumnya, babel akan menambahkan baris module.exports = exports["default"]
. Tidak lagi melakukan ini. Apa artinya ini sebelum saya bisa melakukan:
var foo = require('./foo');
// use foo
Sekarang saya harus melakukan ini:
var foo = require('./foo').default;
// use foo
Bukan masalah besar (dan saya menduga inilah yang seharusnya selama ini). Masalahnya adalah bahwa saya memiliki banyak kode yang bergantung pada cara hal-hal yang digunakan untuk bekerja (saya dapat mengonversikan sebagian besar ke impor ES6, tetapi tidak semuanya). Adakah yang bisa memberi saya tips tentang cara membuat cara lama bekerja tanpa harus melalui proyek saya dan memperbaiki ini (atau bahkan beberapa instruksi tentang cara menulis codemod untuk melakukan ini akan sangat licin).
Terima kasih!
Contoh:
Memasukkan:
const foo = {}
export default foo
Output dengan Babel 5
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
Output dengan Babel 6 (dan plugin es2015):
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
Perhatikan bahwa satu-satunya perbedaan dalam output adalah module.exports = exports["default"]
.
Edit
Anda mungkin tertarik pada posting blog ini yang saya tulis setelah menyelesaikan masalah spesifik saya: Modul ES6 Kesalahpahaman, Memutakhirkan Babel, Air Mata, dan Solusi
if (false) { require('./foo') }
dengan webpack akan melompati sebenarnya termasuk foo.js
dalam bundel yang dihasilkan.
false
toggle Anda di sana? Jika itu adalah kondisi yang tersedia di konfigurasi webpack Anda, mungkin ada opsi lain.
export default {foo, bar}
dengan saya module.exports = {foo, bar}
. Saya cukup menyukai metode yang salah yang sekarang tidak didukung.
require
jika Anda bekerja dalam basis kode yang menggunakan Babel? Kemungkinannya, ada beberapa pendekatan lain yang memungkinkan Anda untuk menghindarinya.