代码之家  ›  专栏  ›  技术社区  ›  Peter Wilson

webpack 4_pug文件不能自动编译

  •  0
  • Peter Wilson  · 技术社区  · 6 年前

    我正在一个项目中使用pugjs作为模板引擎。 和Webpack4作为bundler。

    当我改变 .pug 我必须手动重新运行编译器的文件。

    关于如何设置它以便编译器在编辑文件后运行,有什么帮助吗?.

    web包.config.js

    const path = require('path');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const WebpackMd5Hash = require('webpack-md5-hash');
    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    const CleanWebpackPlugin = require('clean-webpack-plugin');
    
    
    module.exports = {
    entry: {
        main: './src/index.js'
    },
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name].[chunkhash].js'
    },
    module: {
        rules: [
            {
                test: /\.scss$/,
                use: ['style-loader', MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'sass-loader']
            },
            {
                test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
                exclude: [/images/],
                use: [{
                    loader: 'file-loader',
                    options: {
                        name: '[name].[ext]',
                        outputPath: './assets/fonts/'
                    }
                }]
            },
            {
                test: /\.(png|svg|jpg|gif)$/,
                exclude: [/fonts/],
                use: {
                    loader: 'file-loader',
                    options: {
                        outputPath: './assets/images/',
                        name: '[name].[ext]',
                    }
                }
            },
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: {
                    loader: "babel-loader"
                }
            },
            {
                test: /\.pug$/,
                use: ['html-loader?interpolate', 'pug-html-loader']
            }
        ]
    },
    plugins: [
        new CleanWebpackPlugin('dist', {}),
        new MiniCssExtractPlugin({
            filename: 'style.[contenthash].css',
        }),
    
        new HtmlWebpackPlugin({
            // inject: false,
            hash: true,
            template: './src/index.pug',
            filename: 'index.html',
            title:'home'
        }),
        new HtmlWebpackPlugin({
            filename: 'contact.html',
            hash: true,
            template: './src/contact.pug',
            // inject: false,
            title: 'contact'
        }),
        new WebpackMd5Hash()
     ]
    };
    

    更新1 我用的时候它很好用 webpack 命令,但它不会为sue创建dev服务器 但当我使用 webpack-dev-server 它创建了服务器,但没有在终端中创建dist文件夹而没有错误!

    1 回复  |  直到 6 年前
        1
  •  2
  •   Nima Hejazi    6 年前

    您有两种选择:

    1. 使用Webpack的监视模式
    2. 使用Webpack开发服务器

    Webpack监视模式 只需运行Webpack --watch 论点

    webpack --watch
    

    使用上面的命令,webpack将监视您的文件,并进行任何更改,重新编译您的代码。这是最简单的方法。

    Webpack开发服务器 这个 webpack-dev-server 为您提供了一个简单的Web服务器,并在每次更改文件时重新加载浏览器。

    安装 Webpack开发服务器 :

    npm install --save-dev webpack-dev-server
    

    同时添加devserver webpack.config.js文件:

    module.exports = {
        devServer: {
            contentBase: './dist'
        }
    }
    

    现在运行它 Webpack开发服务器 . 您可以访问您的网页 localhost:8080 对文件的任何更改也将重新编译包并重新加载浏览器。

    注意,您可能需要使用 npx :

    npx webpack --watch
    

    npx webpack-dev-server
    

    更新1 Webpack开发服务器 不会在硬盘上生成任何文件,它只会在内存中创建文件以加快处理速度。否则,结果是相同的。