【问题标题】:Setting up assets paths for webpack-dev-server为 webpack-dev-server 设置资源路径
【发布时间】:2018-05-02 06:32:18
【问题描述】:

又浪费了一天的时间来搞清楚如何设置 webpack-dev-server 热重载。我想通过以下路径在index.html 中提供我的JS 和CSS 资产:/dist/js/app.min.js/dist/css/styles.min.css

我到底应该如何配置webpack.config.js 以使用上述正确路径在index.html 中加载我的资产?使用当前配置,webpack-dev-server 仅将我的构建保存在 /dist 文件夹中,并且在 index.html 中我必须设置没有 js 或 css 文件夹的路径,例如:(<script src="/dist/app.min.js" />)。

我的 webpack.config.js:

const path = require('path');
const webpack = require('webpack');

module.exports = {
  context: path.resolve(__dirname, './'),
  entry: './src/app.js',
  output: {
    publicPath: '/dist/',
    path: path.join(__dirname, '/dist/js'),
    filename: 'app.min.js'
  },
  devServer: {
    hot: true
  },
  resolve: {
    extensions: ['.js', '.jsx', '.ts', '.tsx']
  },
  module: {
    rules: [
      {
        test: /\.(scss|sass|css)$/,
        use: ['style-loader', 'css-loader', 'sass-loader']
      }
    ]
  },
  plugins: [
    new webpack.NamedModulesPlugin(),
    new webpack.HotModuleReplacementPlugin()
  ]
};

我的项目结构:

【问题讨论】:

    标签: javascript webpack webpack-dev-server hot-reload


    【解决方案1】:

    你熟悉 HtmlWebpackPlugin 吗? https://webpack.js.org/plugins/html-webpack-plugin/#src/components/Sidebar/Sidebar.jsx

    这是我的设置:

    new HtmlWebpackPlugin({
      template: project.paths.client('index.html'), // absolute url to index.html
      hash: false,
      filename: 'index.html',
      inject: 'body',
    })
    

    这将获取您的条目并将它们注入您的 index.html

    【讨论】:

    • 我试过这个插件,但它把 index.html 放在 dist/js 文件夹中。如果我编辑 index.html 将被渲染的位置,那么 webpack-dev-server 会为我的模板 index.html 提供服务。另一件事,当我想使用 ExtractTextWebpackPlugin 为产品构建时,它不会添加任何 CSS 链接,所以我需要在我的 index.html 模板中指定该链接,但是 webpack-dev-server 将无法按预期工作。
    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 2018-04-25
    • 2013-02-09
    • 1970-01-01
    • 2020-03-24
    • 2019-06-24
    • 2014-02-09
    • 2021-10-13
    相关资源
    最近更新 更多