Я новичок в веб-пакете и использую веб-пакет 4 для своего проекта.Но у меня проблема, у меня есть несколько файловых скриптов.В первый раз при сборке с сервером webpack, он работает нормально.Но когда сервер работает, я продолжаю создавать новый файловый скрипт (пример: c.js), переименовываю или удаляю существующий файл, который сервер не создает автоматически в этот скрипт в main.js.Как может автоматический веб-пакет перестроить мой новый файл (c.js) в main.js без команды run снова?
Это мой репозиторий на github: https://github.com/aiduc93/webpack4-scss-pug-es6
Вы можете выполнить этот шаг, чтобы воспроизвести мою проблему:
Шаг 1: запустить сервер с помощью 'npm run dev' и запустить localhost: 3000 в браузере.
Шаг 2: когда сервер работает, мы создаемВ новом файле (c.js) вы можете скопировать мой код в hide.js или show.js и изменить имя_плагина на «что угодно» (то есть: pluginName = «clickable»)
Шаг 3: перейти к индексу.pug, создайте новый тег p с кликабельными данными (то есть: кликаемыми по р (щелкающими по данным))
Шаг 4: обновите страницу в браузере и кликните по тексту по клику.Js не будет работать, потому что он не перекомпилируется.
Это моя структура
//folder javascript in project
javascript
| hide.js
| show.js
| server.js
//folder dist after build
dist
| main.js
Это скрипт в package.json
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack-dev-server --inline --hot",
"build": "webpack --mode production"},
Это webpack.config.js
const path = require('path');
const glob = require('glob');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const WebpackMd5Hash = require('webpack-md5-hash');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const BrowserSyncPlugin = require('browser-sync-webpack-plugin')
module.exports = {
entry: { main: glob.sync('./src/**/*.js*')} ,
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'main.js',
},
devtool: 'inline-source-map',
watch: true,
module: {
rules: [
{
test: /\.pug$/,
use: ["html-loader", "pug-html-loader"]
},
{
test: /\.js$/,
exclude: /node_modules/,
use: ["babel-loader"]
},
{
test: /\.scss$/,
use: ExtractTextPlugin.extract(
{
fallback: 'style-loader',
use: [ 'css-loader', 'sass-loader']
})
},
{
type: 'javascript/auto',
test: /\.json$/,
use: [
{
loader: 'file-loader',
options: {
name: "./plugin-config/[name].[ext]"
}
}
]
}
]
},
devServer: {
contentBase: path.join(__dirname, "dist"),
compress: true,
inline: true,
port: 3000,
// historyApiFallback: true,
hot: true
},
plugins: [
new ExtractTextPlugin(
{ filename: 'style.css'}
),
new CleanWebpackPlugin('dist', { watch: true,
}),
new HtmlWebpackPlugin({
inject: false,
hash: true,
template: './src/index.html',
}),
new WebpackMd5Hash(),
]
};