Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript webpack:commonchunksplugin与webworker和多个区块_Javascript_Webpack_Webpack 2 - Fatal编程技术网

Javascript webpack:commonchunksplugin与webworker和多个区块

Javascript webpack:commonchunksplugin与webworker和多个区块,javascript,webpack,webpack-2,Javascript,Webpack,Webpack 2,我使用的是一个遗留应用程序,目前必须以非常具体的方式进行拆分: 一个简化的例子是: 我有4个模块: //moduleA.js export const moduleA = ['moduleA']; //moduleB.js import {moduleA} from './moduleA'; export const moduleB = ['moduleB'].concat(moduleA); //moduleC.js import {moduleA} from './moduleA';

我使用的是一个遗留应用程序,目前必须以非常具体的方式进行拆分: 一个简化的例子是: 我有4个模块:

//moduleA.js
export const moduleA = ['moduleA'];


//moduleB.js
import {moduleA} from './moduleA';
export const moduleB = ['moduleB'].concat(moduleA);


//moduleC.js
import {moduleA} from './moduleA';
import {moduleB} from './moduleB';
export const moduleC = ['moduleC'].concat(moduleA).concat(moduleB);


//webworkerModule.js
import {moduleB} from './moduleB';
import {moduleA} from './moduleA';

console.log("Webworker Module", moduleA, moduleB);
我需要做的是输出5个文件:

  • manifest.js
    包含Web包的公共运行时
  • 仅包含moduleA代码的
    moduleA.js
  • 仅包含moduleB代码的
    moduleB.js
  • 仅包含moduleC代码的
    moduleC.js
  • webworkerModule.js
    包含模块A和模块B的代码以及webpack运行时
我尝试了多种配置,但无法获得我想要的

const path = require('path');
const webpack = require('webpack');

const config = {
    entry:{
        moduleA:'./src/moduleA.js',
        moduleB:'./src/moduleB.js',
        moduleC:'./src/moduleC.js',
        webworkerModule:'./src/webworkerModule.js',
    },
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name].js'
    },
    resolve: {
        extensions: ['.js']
    },
    plugins: [
        new webpack.optimize.CommonsChunkPlugin({
            name: 'webworkerModule',
            chunks: ['webworkerModule'],
            minChunks: Infinity
        }),
        new webpack.optimize.CommonsChunkPlugin({
            name: ['moduleA', 'moduleB', 'manifest'],
            chunks: ['moduleA', 'moduleB', 'moduleC'],
            minChunks: Infinity
        })
    ]
};

module.exports = config;
例如,上面的配置生成正确的webworkerModule.js,但moduleA和moduleB在其他文件中重复

有人对此有什么见解吗?

我找到了一个解决方案:

const path = require('path');
const webpack = require('webpack');

const configWW = {
    entry:{
        webworkerModule:'./src/webworkerModule.js',
    },
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name].js'
    },
    resolve: {
        extensions: ['.js']
    },
};

const configOthers =  {
    entry: {
        moduleA:'./src/moduleA.js',
        moduleB:'./src/moduleB.js',
        moduleC:'./src/moduleC.js',
    },
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name].js'
    },
    resolve: {
        extensions: ['.js']
    },
    plugins: [
        new webpack.optimize.CommonsChunkPlugin({
            names: ['moduleB', 'moduleA', 'manifest'],
            minChunks: Infinity
        })
    ]
};

module.exports = [configWW, configOthers];

这个解决方案的要点是,我不知道可以有多个独立的配置。

也许可以帮助您。谢谢,它帮助我找到了一个解决方案