不是来自 webpack 的内容是从“/app”目录(Docker / Webpack)提供的

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

我正在使用带有 docker 的 Webpack 配置。

开发步骤一切顺利。然而,这不适用于我的预生产和生产步骤。这些步骤之间的区别在于,当它是开发步骤时,我复制整个存储库,而当它是预生产/生产步骤时,我仅复制构建文件。

为什么?因为我想优化我的服务器空间。

这是我的docker文件配置:

FROM node:alpine AS base
USER root
WORKDIR /app
COPY frontend/package*.json /app/
RUN npm install
RUN npm install -g serve

FROM base AS development
COPY frontend /app/
RUN npm run build:development

FROM base AS preproduction
COPY frontend/build /app/build
COPY frontend/public /app/public
COPY frontend/webpack.config.js /app/
COPY frontend/env /app/env

FROM base AS production
COPY frontend/build /app/build
COPY frontend/public /app/public
COPY frontend/webpack.config.js /app/
COPY frontend/env /app/env

如上所示,只有构建文件被粘贴到容器中,以便在应用程序存储库“app”中进行预生产和生产(构建是在运行 dockerfile 之前在 jenkins 管道中完成的)。

这是我的 webpack 配置:

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const Dotenv = require("dotenv-webpack");

module.exports = () => {
  console.info("Environment: ", process.env.NODE_ENV);
  return {
    entry: path.resolve(__dirname, "src", "index.tsx"),
    output: {
      path: path.resolve(__dirname, "build"),
      filename: "bundle.js",
      assetModuleFilename: "assets/[name][ext]",
    },
    devServer: {
      compress: true,
      port: 3000,
      static: __dirname,
      historyApiFallback: true,
    },
    plugins: [
      new Dotenv({
        path: path.resolve(__dirname, `./env/.env.${process.env.NODE_ENV}`),
        systemvars: true,
      }),
      new HtmlWebpackPlugin({
        template: path.resolve(__dirname, "build", "index.html"),
        filename: "index.html",
        favicon: "./public/favicon.ico",
        manifest: "./public/manifest.json",
        inject: "body",
      }),
    ],
    ...
}

这是我的 package.json 脚本命令,我正在运行:

"cleanBuild": "rm -rf build/* && cp public/index.html build/index.html",
"build:preproduction": "npm run cleanBuild && NODE_ENV=preproduction webpack --mode production",
"start:preproduction": "NODE_ENV=preproduction webpack serve --mode production --port 3000 --allowed-hosts all",

那么,有谁知道是否必须将 src 文件存在于应用程序文件夹中才能让 webpack 工作?

如果没有,我该如何管理或解决我的问题?

node.js docker webpack
1个回答
0
投票

为了解决这个问题,我复制粘贴了SRC文件,这是为了让webpack正常运行所必需的。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.