无法使用webpack将React项目的bundle.js复制到Spring项目中

问题描述 投票:1回答:1

我在Spring项目中有一个React项目。我想拥有一个调试环境,可以在其中监视React文件,并将其编译并复制到Spring项目(不同的目录)中。我正在使用Webpack 4.8。

当前,每次更改React代码时,我都必须运行npm run build:dev,将创建正确的bundle.js并将其移至正确的位置。但是每次都运行它很麻烦。我尝试用--watch追加脚本,尽管它确实创建了一个新版本,但并未复制到最终位置。

我的package.json脚本

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node_modules\\.bin\\webpack-dev-server --config .\\webpack.dev.js",
    "dev": "webpack --config .\\webpack.dev.js",
    "build": "webpack --config .\\webpack.prod.js",
    "copy:prod": "copy .\\dist\\bundle.js ..\\xxx\\src\\main\\resources\\static\\ /Y",
    "copy:dev": "copy .\\dist\\bundle.js ..\\xxx\\build\\resources\\main\\static\\ /Y",
    "build:dev": "npm run dev && npm run copy:dev",
    "build:prod": "npm run build && npm run copy"
  },

对于任何有兴趣的人,这是我的webpack.dev.js

const path = require("path");
const { resolve } = require("path")

const config = {
  mode: "development",
  entry: "./src/index.js",
  stats: {
    colors: true
  },
  devtool: "inline-source-map",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "bundle.js"
  },
  devServer: {
    contentBase: path.join(__dirname, "dist"),
    compress: true
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /(node_modules)/,
        use: {
          loader: "babel-loader",
          options: {
            presets: ["@babel/preset-env", "@babel/preset-react"]
          }
        }
      }
    ]
  }
};

 module.exports = config;

理想情况下,我希望对React代码进行任何更改以触发构建,并将构建复制到其他位置。当前的情况是,我可以使用--watch来获得正确的版本,但是没有将其复制到指定的位置。

reactjs spring webpack-4
1个回答
2
投票

好的,所以我使用了一个名为copy-webpack-plugin的库。现在更新的copy-webpack-plugin文件看起来像

webpack.dev.js

并更新了我的npm脚本

const path = require("path"); const { resolve } = require("path"); const CopyPlugin = require('copy-webpack-plugin'); const config = { mode: "development", entry: "./src/index.js", stats: { colors: true }, devtool: "inline-source-map", output: { path: path.resolve(__dirname, "dist"), filename: "bundle.js" }, devServer: { contentBase: path.join(__dirname, "dist"), compress: true }, module: { rules: [ { test: /\.js$/, exclude: /(node_modules)/, use: { loader: "babel-loader", options: { presets: ["@babel/preset-env", "@babel/preset-react"] } } } ] }, plugins: [ new CopyPlugin([ { from: './dist/bundle.js', to: '../../xxx/build/resources/main/static/', force: true}, { from: './dist/bundle.js.map', to: '../../xxx/build/resources/main/static/', force: true} ], { copyUnmodified: true }) ] }; module.exports = config;

现在,当我运行"dev": "webpack --config .\\webpack.dev.js --watch",时,我将更新的bundle.js复制到所需的位置,并且webpack还会监视我的React文件。

© www.soinside.com 2019 - 2024. All rights reserved.