3

複数の HTML ファイルを使用してそれ自体に処理するwebpack(v3.5.6) ビルドがあり、 . 構成はビルドには問題なく機能しますが、 (v2.7.1)を使用すると失敗します。これは、ソース HTML ファイルのコメントが無視されないように見えるためです。HTML のコメント セクションからリソースを要求しようとしますが、それらのリソースの一部は現時点では存在しません。html-loaderurl-loaderWebpack Dev ServerWebpack Dev Server

からのサンプル エラーを次に示しますWebpack Dev Server

./about-us.html のエラー
モジュールが見つかりません: エラー: 'C:\Users\usr\dev\www' の './img/old-image.png' を解決できません
 @ ./about-us.html
 @ ./entry.js
 @ multi (webpack)-dev-server/client?http://localhost:8080 ./entry.js

私の(未完成の)webpack設定は以下の通りです:

webpack.common.js :

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

const CleanWebpackPlugin = require('clean-webpack-plugin');

const env = process.env.NODE_ENV;

module.exports = {
  エントリ: './entry.js',
  出力: {
    パス: path.resolve(__dirname, 'dist'),
    ファイル名: 'bundle.js'
  }、
  モジュール: {
    ルール: [{
        テスト: /\.html$/,
        使用する: [
          {
            ローダー: 'ファイルローダー',
            オプション: {
              名前: '[名前].[拡張子]',
            }、
          }、
          {
            ローダー: '抽出ローダー',
          }、
          {
            ローダー: 'html-ローダー',
            オプション: {
              属性: ['img:src'],
              補間:真、
            }、
          }、
        ]、
      }、
      {
        テスト: /\.js$/,
        除外: /(node_modules)/,
        使用する: {
          ローダー: 'babel-loader',
          オプション: {
            プリセット: ['env']
          }
        }
      }、
      {
        テスト: /\.css$/,
        使用: env === 'プロダクション' ?
          ExtractTextPlugin.extract({
            フォールバック: 'style-loader',
            使用: ['css-loader']
          }) : ['style-loader', 'css-loader']
      }、
      {
        テスト: /\.(png|jpg|gif|svg)$/,
        使用する: [{
          ローダー: 'url-loader',
          オプション: {
            制限: 8192,
            名前: '[パス][名前].[拡張子]'
          }
        }]
      }
    ]
  }、
  解決: {
    エイリアス: {
      'vue$': 'vue/dist/vue.common.js',
    }、
  }、
  プラグイン: [
    new CleanWebpackPlugin(['dist', 'build'])
  ]、
};

webpack.dev.js :

const merge = require('webpack-merge');

const common = require('./webpack.common.js');

module.exports = merge(common, {
  開発サーバー: {
    contentBase: './dist'
  }、
});

webpack.prod.js:

const merge = require('webpack-merge');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
const ExtractTextPlugin = require("extract-text-webpack-plugin");

const common = require('./webpack.common.js');

module.exports = merge(common, {
  プラグイン: [
    新しいUglifyJSPlugin()、
    new ExtractTextPlugin({
      ファイル名: 'styles.css'
    }))
  ]
});

entry.js:

require('./about-us.html');
require('./index.html');
require('./css/style.css');
require('./js/sidebar.js');
4

1 に答える 1