我的问题是,当我访问
我想要一个非常简单的设置。将app中的所有内容进行js转换,然后在dist中提供服务。那么
我的目录结构如下:
我认为这句话的意思是:“使用babel-loader转换所有js文件后,从index.js开始打包,并将该文件命名为bundle.js放入dist/文件夹中。然后在开发服务器上,从该文件夹中提供js内容并进行压缩。”
我不理解的是如何与index.html配合。我参考了https://webpack.js.org/configuration/dev-server/#devserver 。
如果我将contentBase路径更改为“.”,它将不会显示目录列表,但不会更新bundle。
简而言之:如何使开发服务器指向index.html并提供更新的资产?
最终,我找到了答案。
http://localhost:8080/webpack-dev-server/
时,webpack可以提供目录列表。如果我修改了dev server路径,则不会对bundle进行任何更改。我想要一个非常简单的设置。将app中的所有内容进行js转换,然后在dist中提供服务。那么
index.html
如何适应呢?我的目录结构如下:
app
index.js
dist
bundle.js
index.html
webpack.config.js
我在webpack.config文件中有以下内容:
const path = require('path')
module.exports = {
entry: './app/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
publicPath: '.',
},
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
exclude: /(node_modules)/,
}
]
},
devServer: {
contentBase: path.join(__dirname, 'dist'),
compress: true,
}
}
我认为这句话的意思是:“使用babel-loader转换所有js文件后,从index.js开始打包,并将该文件命名为bundle.js放入dist/文件夹中。然后在开发服务器上,从该文件夹中提供js内容并进行压缩。”
我不理解的是如何与index.html配合。我参考了https://webpack.js.org/configuration/dev-server/#devserver 。
如果我将contentBase路径更改为“.”,它将不会显示目录列表,但不会更新bundle。
简而言之:如何使开发服务器指向index.html并提供更新的资产?
最终,我找到了答案。
const path = require('path')
module.exports = {
entry: './app/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
exclude: /(node_modules)/,
}
]
},
devServer: {
contentBase: 'dist',
}
}
我很想说我有所顿悟,但实际上只是不停地尝试选项直到它起作用了。
webpack-dev-server
会完全从内存中构建和提供该文件,它不会触及实际的绑定_文件_(要做到这一点,你需要运行webpack -w
)。 - robertklepapp/index.js
中的代码,它不会展示结果。如果我添加警告,页面将刷新,但不会调用警告。如果我在没有开发服务器的情况下运行webpack命令,它可以正常工作。只有在使用开发服务器时,才无法更新。 - user3162553publicPath: path.join(__dirname, 'dist'), contentBase: path.join(__dirname, 'dist'),
它现在可以在更改时更新。但是更新仍然提供旧的内容! - user3162553publicPath
不应该是绝对路径,它是 URL 中的前缀,当webpack-dev-server
从中请求 bundle 时会查找它。 - robertklep