返回
在webpack中使用动态方式创建入口
前端
2023-09-25 09:03:20
webpack动态创建入口方法
我们知道,create-react-app创建的应用默认是SPA的架子,入口只有index.html。但是有些情况下我们确实需要在同一个工程下开发多个SPA项目,比如一个项目中包含一个2C的H5项目和一个后台的管理项目。很多人都知道webpack支持多页面应用开发,我们可以通过webpack的多入口配置,实现不同入口文件对应不同页面,但是在需要开发多个SPA项目的时候,问题就来了。
网上关于多页面的配置已经很多了,这里只是想记录一些扩展方法。项目的基本结构如下。
.
├── package.json
├── node_modules
├── public
│ └── index.html
├── src
│ ├── index.js
│ ├── index2.js
│ └── index3.js
├── webpack.config.js
最简单的webpack配置如下。
const path = require('path');
module.exports = {
mode: 'development',
entry: {
index: './src/index.js',
index2: './src/index2.js',
index3: './src/index3.js',
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js',
},
};
这样配置之后,运行webpack命令即可在dist目录下生成三个js文件,分别是index.js、index2.js和index3.js。
但是这种配置有一个问题,就是当我们需要增加一个页面的时候,我们需要手动修改webpack.config.js文件,添加新的入口配置,然后重新运行webpack命令。这样不仅麻烦,而且容易出错。
为了解决这个问题,我们可以使用webpack的动态创建入口方法。
const path = require('path');
const glob = require('glob');
module.exports = {
mode: 'development',
entry: glob.sync('./src/*.js').reduce((entries, entry) => {
const entryName = path.parse(entry).name;
entries[entryName] = entry;
return entries;
}, {}),
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js',
},
};
通过这种方式,我们可以动态地创建入口文件,当我们需要增加一个页面的时候,只需要在src目录下添加一个js文件,然后运行webpack命令即可。
这种方法不仅简单易用,而且可以很好地支持多页面和SPA应用开发。