[英]How do I serve an HTML file in Express from a directory which is a level above my server folder?
[英]When using Webpack, which folder do I have my server statically serve?
假设我想(我的老板让我)使用webpack,我的文件结构如下:
在哪里builds
是webpack输出捆绑/编译src
文件夹的结果,然后如何使index.html
指向bundle.js
如果服务器上存在该文件夹),即我通过express.static()
公开哪个文件夹? 用下面的简单webpack.config
来执行此操作的正确“ webpack”方法是什么? 我是否缺少有关此工作原理的基本信息? 理想情况下,我想在index.html
执行以下操作
<html>
<script src='bundle.js'></script>
<!-- bundle.js spits a bunch of CSS into the html, dynamically builds elements, etc -->
</html>
还是那不是在Webpack中完成事情的方式?
webpack.config.js
module.exports = {
entry: './src/index.js',
output: {
path: 'builds',
filename: 'bundle.js',
},
module: {
loaders: [
{ test: /\.css$/,
loader: "style!css"
}
]
}
};
我已经尝试通过docs和这篇经常链接的文章来解决这个问题 。
由于不给最终用户公开任何目录结构是一种很好的做法,因为它为网络开发创造了机会,因此带有express的nodejs具有一种机制来处理这种情况。 您可以做的是通过这种方式公开您的Webpack
app.use('/buidscript', express.static(__dirname + '/builds/'));
然后,来自/buidscript/bundle.js
所有浏览器请求/buidscript/bundle.js
将自动从您的build目录中获取。
<script src='/buidscript/bundle.js'></script>
现在,您可以根据自己的想法收集想法,以任何方式实现它。
寻找您理想的情况
app.use(express.static(__dirname + '/builds'));
现在您可以使用
<script src='bundle.js'></script>
因为任何请求bundle.js都将在暴露的静态构建目录中进行搜索
将其添加到package.json的脚本中
“scripts”: {
“start”: “webpack-dev-server --content-base build/ --inline --hot”,
...
}
// Use it by running
$ npm start
现在,这将在开发模式下运行index.html之前构建您的bundle.js。
--content-base build/
将在您的构建文件夹中存储静态文件。 因此,您可以直接使用bundle.js。 它将查找任何文件更改并重新编译bundle.js
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.