【问题标题】:How to get same functionality without repeating the same plugin in webpack如何在不重复 webpack 中的相同插件的情况下获得相同的功能
【发布时间】:2017-06-15 21:27:53
【问题描述】:

由于我的应用程序中有很多文件要连接,所以我不想一次又一次地编写相同的插件。我的方法是连接与我的应用程序中的特定模块相关的单个文件。请指教。

const ConcatPlugin = require('webpack-concat-plugin');

new ConcatPlugin({
    useHash: true, // md5 file
    sourceMap: true, // generate sourceMap
    options: {
        process: function(src, filepath) {
            src = src.replace('"use strict";','');
            return '$(function () {\n' + src + '\n});';
        }
    },
    fileName: 'js/react/_react.es6.do-not-edit.js',
    filesToConcat: [
        './js/react/promises.js',
        './js/react/comps.js',
        './js/react/press-release-component.js'
    ]
}),
new ConcatPlugin({
    useHash: true, // md5 file
    sourceMap: true, // generate sourceMap
    options: {
        process: function(src, filepath) {
            src = src.replace('"use strict";','');
            return '$(function () {\n' + src + '\n});';
        }
    },
    fileName: globalPath.theme + '/js/script.min.js',
    filesToConcat: [
        './js/languages.min.js',
        './js/_script.min.do-not-edit.js',
        './js/_react.es5.min.do-not-edit.js'
    ]
}),
new ConcatPlugin({
    useHash: true, // md5 file
    sourceMap: true, // generate sourceMap
    options: {
        process: function(src, filepath) {
            src = src.replace('"use strict";','');
            return '$(function () {\n' + src + '\n});';
        }
    },
    fileName: globalPath.theme + '/js/script.js',
    filesToConcat: [
        './js/script.js',
        './js/_react.es5.do-not-edit.js'
    ]
}),

【问题讨论】:

    标签: webpack concatenation frontend


    【解决方案1】:

    创建一个可以接收文件组数组的函数,这些文件组只是要连接的文件。遍历这些以创建插件实例并返回插件实例数组。您可能还需要使用扩展运算符。

    let appFileGroups = [
            [
              './js/script.js',
              './js/_react.es5.do-not-edit.js'
            ],
            [
              './js/script.js',
              './js/_react.es5.do-not-edit.js'
            ],
        ];
    
    
    
    function concatFileGroups(fileGroups) {
       return fileGroups.map(fileGroup => {
         new ConcatPlugin({
             useHash: true, // md5 file
             sourceMap: true, // generate sourceMap
             options: {
                 process: function(src, filepath) {
                     src = src.replace('"use strict";','');
                     return '$(function () {\n' + src + '\n});';
                 }
             },
             fileName: globalPath.theme + '/js/script.js',
             filesToConcat: fileGroup 
          })
       }
    }
    

    在 webpack 配置中:

      plugins : [
         concatFileGroups(appFileGroups),
         // if that doesnt work try this
         //...concatFileGroups(appFileGroups),
         // remaining plugins
    

    【讨论】:

    • 我解决了这个问题,但我看到 arguments[i].apply 不是一个函数
    • 试试...concatFileGroups(appFileGroups),
    • 感谢您抽出宝贵时间回复。干杯!
    • 对不起,我没有登录 SO,我使用了 copy-webpack-plugin 来实现相同的目的。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 2019-02-25
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多