vue 项目使用 webpack 构建自动获取电脑ip地址

前端常用webpack构建项目,但是默认情况下都是 http://localhost:8080 ,那么如何使用电脑的ip地址自动构建呢?

引入address

cnpm i address --save-dev

vue.config.js 使用

const address = require('address');
const localhost = address.ip() || 'localhost';

module.exports = {
...
devServer: {
    open: process.platform === "darwin",

    disableHostCheck: false,
    
	// ip地址
    host: localhost,

    port: 8880,

    https: false,

    hotOnly: false, // See https://github.com/vuejs/vue-cli/blob/dev/docs/cli-service.md#configuring-proxy

    proxy: null // string | Object

    // before: app => {}
  },

...

}

按照上边配置便能解决问题了。

但是address包问什么能够解决问题,它又是怎么封装的呢?

学习address源码

大家是知道webpack是基于node的,这里的address不过是对node的os操作系统进行了封装。

os(操作系统)

os 模块提供了与操作系统相关的实用方法和属性。 使用方法如下:

const os = require('os');

address源码解析

这里主要用到了 os.networkInterfaces() 方法(最小边有效果图),然后对它进行封装成address

var os = require('os');
var fs = require('fs');
var child = require('child_process');

...
...
...
/**
 * Get all addresses.
 *
 * @param {String} [interfaceName] interface name, default is 'eth' on linux, 'en' on mac os.
 * @param {Function(err, addr)} callback
 *  - {Object} addr {
 *    - {String} ip
 *    - {String} ipv6
 *    - {String} mac
 *  }
 */
function address(interfaceName, callback) {
  if (typeof interfaceName === 'function') {
    callback = interfaceName;
    interfaceName = null;
  }

  var addr = {
    ip: address.ip(interfaceName),
    ipv6: address.ipv6(interfaceName),
    mac: null
  };
  address.mac(interfaceName, function (err, mac) {
    if (mac) {
      addr.mac = mac;
    }
    callback(err, addr);
  });
}
// 这是重点  这是重点 这是重点 这是重点 

address.interface = function (family, name) {
  var interfaces = os.networkInterfaces();
  var noName = !name;
  name = name || getInterfaceName();
  family = family || 'IPv4';
  for (var i = -1; i < 8; i++) {
    var interfaceName = name + (i >= 0 ? i : ''); // support 'lo' and 'lo0'
    var items = interfaces[interfaceName];
    if (items) {
      for (var j = 0; j < items.length; j++) {
        var item = items[j];
        if (item.family === family) {
          return item;
        }
      }
    }
  }

  if (noName) {
    // filter 127.0.0.1, get the first ip
    for (var k in interfaces) {
      var items = interfaces[k];
      for (var i = 0; i < items.length; i++) {
        var item = items[i];
        if (item.family === family && item.address !== '127.0.0.1') {
          return item;
        }
      }
    }
  }
  return;
};


....
...
...


/**
 * Get current machine IPv4
 *
 * @param {String} [interfaceName] interface name, default is 'eth' on linux, 'en' on mac os.
 * @return {String} IP address
 */
address.ip = function (interfaceName) {
  var item = address.interface('IPv4', interfaceName);
  return item && item.address;
};

...
...
...

module.exports = address;

os.networkInterfaces()效果图

在这里插入图片描述

感兴趣的小伙伴可以戳这里看源码~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue项目使用Webpack的步骤如下: 1. 安装Vue CLI 我们可以通过以下命令全局安装Vue CLI: ``` npm install -g @vue/cli ``` 2. 创建Vue项目 我们可以通过以下命令创建Vue项目: ``` vue create my-project ``` 其中,my-project为项目名称。 3. 安装WebpackVue项目使用Webpack需要安装相关依赖,可以通过以下命令安装: ``` npm install webpack webpack-cli --save-dev ``` 4. 配置WebpackVue项目使用Webpack需要进行相关配置文件的编写。我们可以在根目录下创建一个webpack.config.js文件来配置Webpack。 一个简单的Vue项目Webpack配置文件如下: ``` const path = require('path'); module.exports = { mode: 'development', entry: './src/main.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js' }, module: { rules: [ { test: /\.vue$/, loader: 'vue-loader' }, { test: /\.js$/, loader: 'babel-loader' }, { test: /\.css$/, use: [ 'vue-style-loader', 'css-loader' ] } ] }, resolve: { alias: { 'vue$': 'vue/dist/vue.esm.js' } } }; ``` 其中,mode字段表示Webpack的模式,可以设置为development或production;entry字段表示入口文件;output字段表示输出文件;module字段表示模块加载器;resolve字段表示模块解析器。 5. 修改package.json 我们需要在package.json文件中添加一些脚本来方便使用Webpack。例如,我们可以将以下代码添加到scripts字段中: ``` "scripts": { "dev": "webpack --mode development", "build": "webpack --mode production" } ``` 这样就可以通过运行`npm run dev`进入开发模式,运行`npm run build`构建生产环境文件。 这就是Vue项目使用Webpack的详细步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值