alibaba / rax

🐰 Rax is a progressive framework for building universal application. https://rax.js.org
Other
8k stars 627 forks source link

[Question]有没有办法拿到构建的本地ip和port #2304

Closed xmsz closed 2 years ago

xmsz commented 2 years ago

背景

需求

SoloJiang commented 2 years ago

希望通过怎样的形式获取到 ip 和 port?目前控制台会打印调试 url

xmsz commented 2 years ago

希望通过怎样的形式获取到 ip 和 port?目前控制台会打印调试 url

希望在代码里获取

const request = axios.create({
  baseURL:  getBuildIp()
});
SoloJiang commented 2 years ago

这类需求感觉不太普遍,但你可以用以下做法自行实现一下:

  1. 可以写一个 build-scripts plugin
  2. 在插件中通过 https://rax.js.org/docs/guide/plugin-dev#context context.commandArgs.port 拿到端口,另外通过 address 这个 npm 包获取到本机 ip
  3. 通过 webpack define plugin 定义到 process.env.LOCAL_URL
xmsz commented 2 years ago
const address = require('address');

const defineVariables = {
  'process.env.SERVER_IP': JSON.stringify(address.ip()),
};

module.exports = ({ context, onGetWebpackConfig }) => {
  onGetWebpackConfig((config) => {
    config.plugin('DefinePlugin').tap(([args]) => {
      return [{ ...args, ...defineVariables }];
    });
  });
};