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 ...');
});