Javascript cms模块和时事通讯模块(单独的代码库)将构建自己的捆绑包(因此没有generics.js,但仍然使用generics运行时)。或者这也是可能的?否则,使用cms的每个项目都应该构建整个cms客户端源代码,而构建这些源代码需要花费大量的时间?是的。您可以通

Javascript cms模块和时事通讯模块(单独的代码库)将构建自己的捆绑包(因此没有generics.js,但仍然使用generics运行时)。或者这也是可能的?否则,使用cms的每个项目都应该构建整个cms客户端源代码,而构建这些源代码需要花费大量的时间?是的。您可以通,javascript,typescript,vue.js,module,es6-modules,Javascript,Typescript,Vue.js,Module,Es6 Modules,cms模块和时事通讯模块(单独的代码库)将构建自己的捆绑包(因此没有generics.js,但仍然使用generics运行时)。或者这也是可能的?否则,使用cms的每个项目都应该构建整个cms客户端源代码,而构建这些源代码需要花费大量的时间?是的。您可以通过使用选项externals告诉Webpack泛型在运行时可用,例如:externals:['generics']。这样它就不会被捆绑。 import {messages} from "????"; messages.alert('Alert


cms模块和时事通讯模块(单独的代码库)将构建自己的捆绑包(因此没有generics.js,但仍然使用generics运行时)。或者这也是可能的?否则,使用cms的每个项目都应该构建整个cms客户端源代码,而构建这些源代码需要花费大量的时间?是的。您可以通过使用选项externals告诉Webpack泛型在运行时可用,例如:externals:['generics']。这样它就不会被捆绑。
import {messages} from "????";

messages.alert('Alert text');
src/
├── cms/
│   ├── index.ts
│   ├── ...
├── newsletter/
│   ├── index.ts
│   ├── ...
└── generics/
    ├── index.ts
    ├── messages.ts
    ├── dialogs.ts
export function open(title: string) {
    console.log('Opening dialog : ', title);
}
export function alert(msg: string) {
    console.log('alert : ', msg);
}
import * as m from './messages';
import * as d from './dialogs';

export let messages = m ;
export let dialogs = d;
import { dialogs, messages } from '../generics';

messages.alert('CMS started ...');
import { dialogs, messages } from '../generics';

messages.alert('Newsletter started ...');
// webpack.config.js
const path = require('path');

module.exports = {
    mode: 'development',
    entry: {
        'newsletter': './src/newsletter/index.ts',
        'cms': './src/cms/index.ts',
    },
    module: {
        rules: [
        {
            test: /\.ts?$/,
            use: 'ts-loader',
            exclude: /node_modules/
        }
        ]
    },
    resolve: {
        extensions: [ '.ts', '.js' ]
    },
    output: {
        filename: '[name].bundle.js',
        path: path.resolve(__dirname, 'dist'),
        publicPath: "dist/",
    }
};
               Asset      Size      Chunks             Chunk Names
       cms.bundle.js   4.6 KiB         cms  [emitted]  cms
newsletter.bundle.js  4.64 KiB  newsletter  [emitted]  newsletter
optimization: {
    splitChunks: {
        chunks: 'all',
        minChunks: 1,
        name: 'generics',
        minSize: 10,
    }
}
               Asset      Size      Chunks             Chunk Names
       cms.bundle.js  5.85 KiB         cms  [emitted]  cms
  generics.bundle.js  1.61 KiB    generics  [emitted]  generics
newsletter.bundle.js   5.9 KiB  newsletter  [emitted]  newsletter 
import(/* webpackChunkName: "generics" */ '../generics').then(generics => {
    console.log('Generics module loaded ...');
    generics.messages.alert('CMS started ...');
});
import(/* webpackChunkName: "generics" */ '../generics').then(generics => {
    console.log('Generics module loaded ...');
    generics.messages.alert('Newsletter started ...');
});
"module": "esnext",
"lib": [
    "es2015"
]   
import(/* webpackChunkName: "generics" */ 'generics').then(generics => {
    console.log('Generics module loaded ...');
    generics.messages.alert('Newsletter started ...');
});