Webpack文档声明了这个输出。publicPath是:
输出。路径从JavaScript的视图。
你能详细说明一下这到底是什么意思吗?
我使用输出。路径和输出。文件名指定Webpack应该在哪里输出结果,但我不确定在输出中放什么。publicPath,以及是否需要。
module.exports = {
output: {
path: path.resolve("./examples/dist"),
filename: "app.js",
publicPath: "What should I put here?"
}
}
publicPath只是用于开发目的,我在第一次看到这个配置属性时感到困惑,但它是有意义的,因为我已经使用webpack一段时间了
假设你把你所有的js源文件放在SRC文件夹下,你配置你的webpack将源文件构建到带有output.path的dist文件夹中。
但是你想把你的静态资产放在一个更有意义的位置,比如webroot/public/assets,这次你可以使用out。publicPath='/webroot/public/assets',这样在你的html中,你可以引用你的js与<script src="/webroot/public/assets/bundle.js"></script>. js。
当你请求webroot/public/assets/bundle.js时,webpack-dev-server会在dist文件夹下找到js
更新:
感谢查理·马丁纠正我的答案
original: publicPath只是用于开发目的,而不仅仅是用于开发目的
不,这个选项在开发服务器中很有用,但它的目的是在生产环境中异步加载脚本包。假设您有一个非常大的单页应用程序(例如Facebook)。Facebook不希望每次你加载主页时都提供所有的javascript,所以它只提供主页上需要的javascript。然后,当你转到你的个人资料时,它会为那个页面加载更多的javascript和ajax。这个选项告诉它从服务器的哪个位置加载这个包
您可以使用publicPath指向您希望webpack-dev-server提供其“虚拟”文件的位置。publicPath选项将与webpack-dev-server的内容构建选项位于同一位置。Webpack-dev-server创建虚拟文件,在启动时使用。这些虚拟文件类似于webpack创建的实际捆绑文件。基本上,你会希望——content-base选项指向index.html所在的目录。下面是一个设置示例:
//application directory structure
/app/
/build/
/build/index.html
/webpack.config.js
//webpack.config.js
var path = require("path");
module.exports = {
...
output: {
path: path.resolve(__dirname, "build"),
publicPath: "/assets/",
filename: "bundle.js"
}
};
//index.html
<!DOCTYPE>
<html>
...
<script src="assets/bundle.js"></script>
</html>
//starting a webpack-dev-server from the command line
$ webpack-dev-server --content-base build
Webpack-dev-server已经创建了一个虚拟资产文件夹以及它所引用的虚拟bundle.js文件。你可以通过到localhost:8080/assets/bundle.js来测试,然后在应用程序中检查这些文件。它们只在运行webpack-dev-server时生成。