简体   繁体   English

webpack - 如何在当前 webpack 配置目录之外构建 dist 文件夹

[英]webpack - how to build dist folder outside current webpack config directory

This is my current project directory这是我当前的项目目录

src
  -App.jsx
  -...
webpack
  -webpack.base.js
  -webpack.prod.js

package.json package.json

  "scripts": {
    "build": "webpack --config ./webpack/webpack.prod.js",
  }

When I run npm run build , the dist folder is created inside my webpack directory.当我运行npm run build时,会在我的 webpack 目录中创建dist文件夹。

src
  -App.jsx
  -...
webpack
  -dist
  -webpack.base.js
  -webpack.prod.js

What I want is我想要的是

dist
src
  -App.jsx
  -...
webpack
  -webpack.base.js
  -webpack.prod.js

This is my webpack config这是我的 webpack 配置

webpack.base.js webpack.base.js

const webpack = require("webpack");

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

module.exports = {
  entry: "./src/index.jsx",
  resolve: {
    extensions: ["*", ".js", ".jsx"],
    fallback: {...},
  },
  module: {
    rules: [...],
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: "public/index.html",
      filename: "index.html",
      favicon: "public/favicon.ico",
    }),
    new webpack.ProvidePlugin({
      Buffer: ["buffer", "Buffer"],
    }),
    new webpack.ProvidePlugin({
      process: "process/browser",
    }),
  ],
};

webpack.prod.js webpack.prod.js

const { merge } = require("webpack-merge");
const base = require("./webpack.base");
const path = require("path");

const Dotenv = require("dotenv-webpack");

module.exports = merge(base, {
  mode: "production",
  devtool: "inline-source-map", //For dev only
  output: {
    path: path.join(__dirname, "/dist"),
    filename: "bundle.js",
  },
  plugins: [
    new Dotenv({ path: "./.env.production" }),
  ],
});

You can specify an absolute path for output.path configuration.您可以为output.path配置指定绝对路径。

webpack/webpack.prod.js : webpack/webpack.prod.js

const { merge } = require("webpack-merge");
const base = require("./webpack.base");
const path = require("path");

module.exports = merge(base, {
  mode: "production",
  devtool: "inline-source-map",
  output: {
    path: path.join(__dirname, "../dist"),
    filename: "bundle.js",
  },
});

Output: Output:

⚡  tree -L 2 -I 'node_modules'               
.
├── dist
│   └── bundle.js
├── package-lock.json
├── package.json
├── src
│   └── index.jsx
└── webpack
    ├── webpack.base.js
    └── webpack.prod.js

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM