我正在關注此tutorial以瞭解webpack。這是過時的,因爲引用的工具在我的情況下升級。我的版本如下。如何從webpack創建的包中引用或訪問我的類?
- TS-裝載機^ 1.3.3
- TSD^0.6.5
- 打字稿^ 2.1.5
- 的WebPack^1.14.0
成功創建bundle.js
文件後,我似乎有問題訪問/引用我的TypeScript到JavaScript類。我的tsconfig.json
看起來如下所示。
{
"compilerOptions": {
"module": "commonjs",
"sourceMap": true,
"declaration": true
},
"include": [
"src/**/*"
]
}
我的wepack.config.js如下所示。
var webpack = require('webpack');
module.exports = {
entry: './src/app.ts',
output: {
filename: 'bundle.js'
},
devtool: 'source-map',
resolve: {
extensions: ['', '.webpack.js', '.web.js', '.ts', '.js']
},
module: {
loaders: [
{ test: /\.ts$/, loader: 'ts-loader' }
]
}
}
要傳輸TypeScript代碼,我只需鍵入tsc
。要將所有代碼捆綁到bundle.js
,我只需輸入webpack
。 (tsc和webpack全球安裝)。
在我的src目錄中,我只有2個簡單的類。 car.ts
看起來如下所示。
export class Car {
public sayHi(): void {
console.log('car says hi');
}
}
app.ts
看起來像下面這樣。
import { Car } from './car'; //alternatively, import Car = require('./car');
let car = new Car();
car.sayHi();
然後,我將這個bundle.js
加載到HTML頁面中的瀏覽器中,如下所示。
<html>
<head>
<title>Test Webpack</title>
</head>
<body>
<script src="bundle.js"></script>
</body>
</html>
我可以在(Chrome)JavaScript控制檯中看到日誌消息「car says hi」。但是,我如何創建一個新的Car實例?以下JavaScript控制檯嘗試不起作用。
var c1 = new Car(); //Uncaught reference error
var c2 = new car.Car(); //Uncaught reference error
內部bundle.js
,我看到這個碼/產生模塊(片段)。
/* 0 */
/***/ function(module, exports, __webpack_require__) {
"use strict";
var car_1 = __webpack_require__(1);
var car = new car_1.Car();
car.sayHi();
/***/ },
/* 1 */
/***/ function(module, exports) {
"use strict";
var Car = (function() {
function Car() {
}
Car.prototype.sayHi = function() {
console.log('car says hi');
};
return Car;
}());
exports.Car = Car;
/***/ }
我的最終目標是讓與(打字稿)映射transpiled成一個單一的bundle.js
爲模塊,這樣我可以使用/引用代碼(如JavaScript在瀏覽器)的src
目錄中的所有打字稿文件如下。
var car = new mylib.Car();
var plane = new mylib.Plane();
car.sayHi();
plane.sayHi();
關於我在做什麼的錯誤?
如果你看看我的webpack.config.js,不要指定'ts-loader'嗎? –
由於您引用了官方文檔,我用'awesome-typescript-loader'換出了'ts-loader',我仍然得到相同的效果。沒有不同。我不能參考這個課程。 –
但你仍然試圖從控制檯引用?另外我可能會誤解,但我的印象是,你手動編譯了ts,然後捆綁在一起 – FabioCosta