Передача параметров в базовую конфигурацию Webpack - PullRequest
0 голосов
/ 01 октября 2018

мы пытаемся настроить веб-пакет с базовой и множественной конфигурацией записей.С базой делаем практически все, кроме нескольких дополнительных файлов, включенных в зависимости от места назначения сборки.У нас есть запись для базы, настроенная следующим образом:

const webpack = require("webpack");
const CopyWebpackPlugin = require('copy-webpack-plugin');
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = (env) => {
    return {
        entry: {
            ...
        },
        output: {
            ...
        },
        optimization: {
            ...
        },
        module: {
            ...
        },
        resolve: {
            ...
        },
        plugins: [
            ...
        ]
    };
};

И настройки записи настроены следующим образом:

const webpack = require('webpack');
const merge = require('webpack-merge');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
const common = require('./webpack.common.js');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const path = require('path');

module.exports = (env) => {    
    return merge(common(env), {
        mode: 'production',
        plugins: [
            ...
        ]
    });
}

Это работает нормально на моей машине, но когда кто-то ещезапускает его, они получают:

TypeError: common не является функцией

Это лучший способ передать опции в файлы записи и базового веб-пакета?Кажется, что все локально работает нормально, все правильно строит и работает.Мы используем webpack.DefinePlugin, чтобы затем сделать доступными записи в приложении javascript.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Здесь хорошее альтернативное решение webpack-merge .Не изобретайте велосипед.Уже существует:)

0 голосов
/ 05 октября 2018

Просто опубликовал минимальную настройку репро для дальнейшего использования (которая работала хорошо для меня), когда я удалил репозиторий.Проблема была в проблеме слияния, не связанной с веб-пакетом.

// file: src/hello-world.js
module.exports = () => {
    console.log("Hello, world!");
}

// file: src/index.js
const helloWorld = require('./hello-world');
helloWorld();

// file: webpack.common.js
module.exports = (env) => {
    console.log("./webpack.common: " + env + " was passed for argument 'env'.");
    return {
        mode: env
    }    
};

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

module.exports = (env) => {
    return merge(common(env), {});
};

// file: package.json
{
  "name": "webpack-param-repro",
  "version": "1.0.0",
  "description": "A minimal app to reproduce the problem in https://stackoverflow.com/q/52594681/824495",
  "main": "dist/main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Mehmet Seckin",
  "repository": {
    "type": "git",
    "url": "https://github.com/seckin92/webpack-param-repro"
  },
  "license": "ISC",
  "devDependencies": {
    "webpack": "^4.20.2",
    "webpack-cli": "^3.1.2",
    "webpack-merge": "^4.1.4"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...