鍍金池/ 問(wèn)答/HTML/ 使用了webpack4.6的devServer,但是修改一些依賴的js文件無(wú)法自

使用了webpack4.6的devServer,但是修改一些依賴的js文件無(wú)法自動(dòng)刷新頁(yè)面?

先直接上代碼吧,然后再描述問(wèn)題~

webpack.common.js

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

module.exports = {
    entry: {
        app: './src/index.js'
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                include: path.resolve(__dirname, "src"),
                exclude: /(node_modules|bower_components)/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env'],
                        plugins: ['@babel/transform-runtime']
                    }
                }
            },
            {
                test: /\.css$/,
                include: path.resolve(__dirname, "src"),
                use: [
                    'style-loader',
                    'css-loader'
                ]
            },
            {
                test: /\.(png|svg|jpg|gif)$/,
                use: [
                    'file-loader'
                ]
            },
            {
                test: /\.(woff|woff2|eot|ttf|otf)$/,
                use: [
                    'file-loader'
                ]
            }
        ]
    },
    plugins: [
        new CleanWebpackPlugin(['dist']),
        new HtmlWebpackPlugin({
            title: 'myProject'
        })
    ],
    output: {
        filename: '[name].bundle.js',
        path: path.resolve(__dirname, 'dist')
    }
};

webpack.dev.js

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

module.exports = merge(common, {
    devtool: 'inline-source-map',
    devServer: {
        contentBase: './dist',
        hot: true,
        inline: true,
    },
    plugins: [
        new webpack.NamedModulesPlugin(),
        new webpack.HotModuleReplacementPlugin()
    ],
});

package.json

{
  "dependencies": {
    "@babel/core": "^7.0.0-beta.46",
    "@babel/preset-env": "^7.0.0-beta.46",
    "@babel/runtime": "^7.0.0-beta.46",
    "babel-loader": "^8.0.0-beta.0",
    "webpack": "^4.6.0"
  },
  "devDependencies": {
    "@babel/plugin-transform-runtime": "^7.0.0-beta.46",
    "clean-webpack-plugin": "^0.1.19",
    "css-loader": "^0.28.11",
    "file-loader": "^1.1.11",
    "html-webpack-plugin": "^3.2.0",
    "style-loader": "^0.21.0",
    "webpack-cli": "^2.1.2",
    "webpack-dev-server": "^3.1.3",
    "webpack-merge": "^4.1.2"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "watch": "webpack --watch",
    "start": "webpack-dev-server --open --config webpack.dev.js",
    "build": "webpack --config webpack.prod.js"
  },
}

index.js

import someplugins from './someplugins.js';

function component() {
    do something...
    return element;
}
var element = component();
document.body.appendChild( element );

if (module.hot) {
    module.hot.accept('./someplugins.js', function() {
        document.body.removeChild(element);
        element = component(); 
        document.body.appendChild(element);
    });
}

如果我更新 someplugins.js 的也就是 index.js 引入的 js 模塊,雖然 devServer 會(huì)幫我重新編譯,但是卻不會(huì)自動(dòng)刷新頁(yè)面,而直接改動(dòng) index.js 的內(nèi)容則會(huì)重新編譯并刷新,不知道是不是我的配置在哪里出了問(wèn)題呢,還是有一些解決方案,還請(qǐng)大佬幫忙~

ps:這個(gè)環(huán)境基本上就是照著 webpack4.x 的官方指南搭建的。

回答
編輯回答
朽鹿

因?yàn)槟愀牧?package.json 中的 script,里面的 webpack 的js配置指向被你刪除了。

這里有一個(gè) webpack4 入門(mén)例子,你可以查看一下 https://github.com/crlang/eas...

2017年12月30日 23:49