webpack多页面配置之自动获取入口函数

版权声明: https://blog.csdn.net/qq_30868289/article/details/80221610

起初上手webpack大多是进行单页面的配置,但还是会遇到多页面的项目,关于多页面的配置我会有一篇单独的文章来进行介绍,今天我们来共同学习一下webpack多页面配置中的自动获取入口的方法。
先看一下实现方式吧:

var path = require('path');
var fs = require('fs');
module.exports =function getEntrys() {
    var matchs;
    var files = {};
    var entry = [];
    var modules = path.resolve(__dirname, './src/modules/');

    var dirs = fs.readdirSync(modules);
    dirs.forEach(function(item, index) {
            var itemPath = path.resolve(modules, item);
            var sta = fs.statSync(itemPath);
            if (sta.isDirectory()) {
                var filesDir = fs.readdirSync(itemPath);
                filesDir.forEach(function(val, index) {
                    matchs = /(.+)\.js$/g.test(val);
                    if (matchs) {
                        var prname = val.split('.')[0];
                        files[prname] = path.resolve(itemPath, val);
                    }
                });
            }
        });
    return files;
};

入口文件的目录如图:
这里写图片描述
这个函数可以获取入口文件所在的目录。然后将其用在webpack的配置中就ok啦。

函数关键语法讲解

path.resolve

path.resolve方法用于将相对路径转为绝对路径
它可以接受多个参数,依次表示所要进入的路径,直到将最后一个参数转为绝对路径。如果根据参数无法得到绝对路径,就以当前所在路径作为基准。除了根目录,该方法的返回值都不带尾部的斜杠。

// 格式
path.resolve([from ...], to)

// 实例
path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')

上面代码的实例,执行效果类似下面的命令。


$ cd foo/bar
$ cd /tmp/file/
$ cd ..
$ cd a/../subfile
$ pwd

__dirname

__dirname:全局变量,存储的是文件所在的文件目录

fs.readdirSync

方法将返回一个包含“指定目录下所有文件名称”的数组对象。

fs.statSync(path,callback)

参数:
1)、path为文件的路径
2)、callback:回调函数 ,有两个参数,err:在获取文件信息失败时,会存储错误信息,stats:存储文件信息的参数。

stats:是fs.stats()对象,执行fs.stat后将stats类实例返回给其回调函数 ,因此可以通过stats对象上的isFile()方法来判断读取的是否为文件(而不是文件夹)

var fs=require('fs')
fs.stat('./router',function(err,stats){     //读取router文件夹
    console.log(stats.isFile()) //判断文件夹是否为文件; 返回false
}) 

猜你喜欢

转载自blog.csdn.net/qq_30868289/article/details/80221610