[英]How to expose an object from a VanillaJS library built with webpack?
我正在開發一個 Vanilla JS 庫。 這個庫必須公開一個對象,我們稱之為sdk
:這個對象將包含所有庫方法,因此潛在用戶可以這樣做
<script src="thelibrary.js"></script>
<script>
sdk.myFunction();
</script>
這是我的 webpack 配置:
const path = require('path');
module.exports = {
entry:
['babel-polyfill', './src/index.js'],
output: {
path: path.join(__dirname, './dist'),
filename: 'my-sdk.js',
library: 'my-sdk-function',
libraryTarget: 'umd',
publicPath: '/dist/',
umdNamedDefine: true,
},
mode: 'production',
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['env', 'react', 'es2015', 'stage-0'],
},
},
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
},
{
test: /\.less$/,
use: ['style-loader', 'css-loader', {
loader: 'less-loader',
options: {
javascriptEnabled: true,
},
}],
},
],
},
};
這是我的index.js
const myFunction = () => {
console.log('hello');
}
const sdk = { myFunction };
我怎樣才能實現我的目標?
我有一個通過 python SimpleHTTPServer 提供的index.html
文件:
<body>
<script src="http://localhost:5000/dist/my-sdk.js"></script>
</body>
但我無法訪問sdk
對象......我的錯誤是什么?
非常感謝!
簡短的回答- 您正在尋找:
output: {
library: {
type: "window",
},
},
使用包含它的webpack.config.js
,我的sdk
對象在window
上可用 - 正如您在問題中所述。
長答案- 這很像多年前編寫 js 庫的方式。 它現在仍然可以是一個有效的用例,但可以將現代項目的人們從你的圖書館中帶走。 我的目標是構建至少 2 個文件:
我正在試驗的回購在這里: https : //github.com/marcin-wosinek/webpack-sdk
它是如何工作的一個例子在這里: https : //marcin-wosinek.github.io/webpack-sdk/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.