質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

1回答

578閲覧

webpackでhtmlを出力する方法

退会済みユーザー

退会済みユーザー

総合スコア0

0グッド

0クリップ

投稿2017/08/03 07:59

webpackをつかって、html,css,jsを複数出力したいのですが、
html-loaderを使ってhtmlを出力すると、下記のコメントのようなものが出力されてしまいます。

/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} . . .

html-loaderの代わりに、
file-loaderを使ってみたのですが、795dx8ew..htmlのような名称で別ファイルとして出力されてしまいました。
圧縮のあるなしに関わらず、下記のような形式でそのままindex.htmlとして出力したいのですが、どのようにすればできるのでしょうか?

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div>hogehoge</div> <div>hogehoge</div> <div>hogehoge</div> </body> </html>

下記がwebpack.config.jsになります。

require('babel-polyfill'); var path = require('path'); var webpack = require('webpack'); var ExtractTextPlugin = require('extract-text-webpack-plugin'); var HtmlWebpackPlugin = require('html-webpack-plugin'); var autoprefixer = require('autoprefixer'); var path = require('path'); var glob = require('glob'); const all_entries = {}; // 全出力ファイルリスト // html const html_BasePath = path.resolve(__dirname, '../src/'); const html_targets = glob.sync(`${html_BasePath}/**/index.html`); const html_entries = {}; html_targets.forEach(value => { const html_re = new RegExp(`${html_BasePath}/`); const html_key = value.replace(html_re, ''); // html_entries[html_key] = value; all_entries[html_key] = value; }); console.log(html_entries); // js const js_BasePath = path.resolve(__dirname, '../src/'); const js_targets = glob.sync(`${js_BasePath}/**/index.js`); // const js_entries = {}; js_targets.forEach(value => { const js_re = new RegExp(`${js_BasePath}/`); const js_key = value.replace(js_re, ''); // js_entries[js_key] = value; all_entries[js_key] = value; }); // css const css_BasePath = path.resolve(__dirname, '../src/'); const css_targets = glob.sync(`${css_BasePath}/**/index.scss`); // const css_entries = {}; css_targets.forEach(value => { const css_re = new RegExp(`${css_BasePath}/`); const css_key = value.replace(css_re, ''); const scss_extension = new RegExp('.scss'); const css_extension = css_key.replace(scss_extension, '.css'); all_entries[css_extension] = value; }); module.exports = [{ devtool: 'inline-source-map', context: __dirname, entry: all_entries, output: { path: path.join(__dirname, '../dist'), filename: '[name]' }, devServer: { contentBase: 'dist', port: 3333 }, module: { rules: [ { test: /.html$/, use: 'html-loader' <== ここをfile-loaderにすると別ファイルになる }, { test: /.js$/, exclude: /node_modules/, use: 'babel-loader' }, { test: /.(scss|css)$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: [ 'css-loader', 'sass-loader' ] }) }, { test: /.(jpg|png|gif)$/, exclude: /node_modules/, use: [ 'file-loader', 'url-loader' ] } ] }, resolve: { extensions: ['*', '.html', '.js', '.css', '.scss'] }, plugins: [ new webpack.optimize.UglifyJsPlugin(), new ExtractTextPlugin({ filename: '[name]', ignoreOrder: true, allChunks: true }), new webpack.LoaderOptionsPlugin({ options: { postcss: [autoprefixer({ browsers: ['> 1%'] })], } }) ] }]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

投稿2019/03/11 21:17

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問