【发布时间】:2018-08-16 19:32:59
【问题描述】:
有没有办法打包一个库,所以我可以将其入口点简单地称为foo 而不是foo.default?
我使用以下代码创建了一个库:
结构:
.
|-- src
| |-- index.js
|-- webpack.config.js
|-- dist
| `-- index.html
|-- package.json
./src/index.js
import jQuery from 'jquery';
var dk = function dk(selector) {
return document.querySelector(selector);
};
Object.assign(dk, {
__version__: 42,
ready(fn) {
jQuery(fn);
}
});
export default dk;
./webpack.config.js
var path = require('path');
module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'dk.js',
library: 'dk',
libraryTarget: "var"
},
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
options: {
cacheDirectory: true,
presets: ['env'],
}
}
}
]
},
externals: {
jquery: 'jQuery',
}
};
./dist/index.html
<!doctype html>
<html>
<head>
<script
src="https://code.jquery.com/jquery-3.1.0.js"
integrity="sha256-slogkvB1K3VOkzAI8QITxV3VzpOnkeNVsKvtkYLMjfk="
crossorigin="anonymous"></script>
</head>
<body>
<h1>hello world</h1>
<script src="dk.js"></script>
<script>
var dk = dk.default; // <=== HERE: why do I need this line?
dk.ready(function () {
dk('h1').innerText = 'so long and thanks for all the fish';
});
</script>
</body>
</html>
我相信我已经按照文档做了所有事情,但我没想到 .default 间接。我做错了什么?
【问题讨论】:
标签: webpack