javascript - TypeScript + Webpack 2 - modulele importate nu apar în pachet
Folosesc TS 2.3.x și Webpack 2.x - acesta este un proiect Electron pe care îl convertesc treptat din JS în TS.
Esența configurației mele webpack este
module.exports = {
output: {
path: path.join(__dirname, "../build"),
filename: "bundle.js",
libraryTarget: "commonjs2"
},
module: {
rules: [
{
test: /\.(tsx?)$/,
use: ["awesome-typescript-loader"],
exclude: [/node_modules/]
},
{
test: /\.(js)$/,
use: ["babel-loader"],
exclude: [/node_modules/]
}
]
},
resolve: {
extensions: [".js", ".ts", ".tsx", ".json"]
}
};
Folosesc Hot module replacement, LoaderOptionsPlugin({ debug: true }) și pluginuri pentru module cu nume, dar niciunul dintre acestea nu ar trebui să afecteze ieșirea bundle-ului cauzând problema pe care o văd.
Pentru Awesome Typescript Loader, folosesc
{
"babelOptions": {},
"transpileOnly": true,
"useBabel": true,
"useCache": false
}
vezi aici pentru informații: https://github.com/s-panferov/awesome-typescript-loader#loader-options
Problema este că am un modul TypeScript ca
// settings-modal.tsx
import * as React from "react";
...
import Modal from "../base/modal";
import ModalHeader from "../base/modal-header";
class SettingsModal extends React.Component<any, any> {
...
render() {
// I use both Modal and ModalHeader here
}
}
Modal și ModalHeader sunt ambele componente standard React și sunt exportate ca modulul implicit. Am încercat să le convertesc pe ambele în TS, dar importurile lipsesc încă din pachet.
Dar când pachetul este compilat, rezultatul arată astfel
...
var React = __webpack_require__("../node_modules/react/react.js");
var modal_1 = __webpack_require__("./ui/components/base/modal.js");
var SettingsModal = function (_super) {
__extends(SettingsModal, _super);
function SettingsModal() {
...
}
SettingsModal.prototype.render = function() {
return React.createElement(modal_1.default, {...}, React.createElement(modal_header_1.default, ...));
}
}
...
observă cum modal-header nu este importat, dar modal_header_1 este referențiat.