如何在 npm 脚本中设置 process.env 变量?

2024-02-29

我使用以下命令创建了一个新的 Vue 应用程序(基于 Vite )npm init vue@latest并选择 Playwright 进行 e2e 测试。生成的配置文件提供了一个字段来设置无头模式

const config: PlaywrightTestConfig = {
  // ...
  use: {
    // ...
    headless: !!process.env.CI,
  },
  // ...
};

但我不知道如何设置这个环境变量。生成的脚本

"test:e2e": "playwright test",

不在无头模式下运行。所以我尝试在运行之前设置这个变量。我尝试过的脚本

  • "test:e2e:ci": "NODE_ENV=CI playwright test"
  • "test:e2e:ci": "set NODE_ENV=CI& playwright test"
  • "test:e2e:ci": "set NODE_ENV=CI & playwright test"
  • "test:e2e:ci": "set CI=true & playwright test"
  • "test:e2e:ci": "set NODE_ENV=CI && playwright test"
  • "test:e2e:ci": "set CI=true && playwright test"

有人知道如何修复 ci 脚本吗?


这是生成的配置文件

https://pastebin.com/tbXNuscy https://pastebin.com/tbXNuscy

有很多用途process.env.CI我正在寻找一种方法来动态设置它(在我需要它的 npm 脚本中)


您可以添加一个.env文件在你的项目文件夹中

.env

NODE_ENV=CI

vite.config.js

import { defineConfig, loadEnv } from 'vite';

export default ({ mode }) => {

    process.env = {
        ...process.env,
        ...loadEnv(mode, process.cwd())
    };

    return defineConfig({
        // ...
    });
};

然后你可以使用配置.env像下面这样:

in vite.config.js本身,使用process.env

import { defineConfig, loadEnv } from 'vite';

export default ({ mode }) => {

    process.env = {
        ...process.env,
        ...loadEnv(mode, process.cwd())
    };

    return defineConfig({
        server: {
            hmr: {
                // you may use process.env here
                host: process.env.VITE_APP_HOST,
            },
        },
    });
};

在其他文件中,使用import.meta.env instead

import axios from 'axios';

axios.defaults.baseURL = import.meta.env.VITE_API_BASE;

Notice:

如果客户端需要配置,则添加VITE_前缀,否则客户端看不到。

更多详细信息请点击此处 https://vitejs.dev/guide/env-and-mode.html#env-files


update:

你可以使用不同的modes https://vitejs.dev/guide/env-and-mode.html#modes对于您的测试环境和其他环境

.env.test

CI=true

包.json

"test:e2e": "playwright test --mode=test",

.env.prod

CI=false

包.json

"prod": "vite build --mode=prod",
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 npm 脚本中设置 process.env 变量? 的相关文章

  • 使用 fb.ui 时如何检测用户取消共享

    我正在使用提供的文档here https developers facebook com docs sharing reference share dialog使用以下代码 共享对话框正确显示 问题是我无法区分用户在对话框中执行的 取消 和
  • 在 config() 模块中注入依赖项 - AngularJS

    目前在 app js 中我有以下路线 var gm angular module gm gm services gm directives gm filters gm controllers ngSanitize gm config rou
  • Vue.js + Element UI:在更改时获取“event.target”

    我无法获取在事件处理程序中触发事件的 html 字段 在 javascript 中是event target 我有一个表格 附加到更改事件函数的输入元素 管理更改事件的函数 我的代码如下 var Main methods change pa
  • 如何在 Nodejs - mongodb 搜索中对结果进行排序,但是,通过调用动态方法

    我正在 Nodejs 中开发一个 Web 应用程序 通过 mongo 本机连接器连接到 mongodb 在我的一个 js 文件中 我有一个通用方法来调用 find 或 findOne 操作以从 mongodb 集合中检索我需要的任何内容 如
  • 将相同的多个对象推送到多个数组中

    这是后续使3个数组相互对应 第一个是对象名称 https stackoverflow com questions 57564488 make 3 arrays correspond to each other with the first
  • 如何避免多系列折线图d3.js的工具提示重叠

    我已经在多系列折线图上创建了工具提示 如下所示在这里回答 https stackoverflow com questions 34886070 d3 js multiseries line chart with mouseover tool
  • 使用 lambda 更新 amazon s3 对象元数据而不执行对象复制?

    是否可以使用 lambda 函数添 加或更新 s3 对象元数据而不复制对象 这篇 2 年前的帖子说我们确实需要复制一份 https stackoverflow com questions 32646646 how do i update m
  • 优化重叠矩形的绘制

    我有很多矩形 有些与其他矩形重叠 每个矩形都有一个绝对 z 顺序和一个colour 每个 矩形 实际上是粒子效果 网格或纹理的轴对齐边界框 并且可能是半透明的 但只要您不尝试剔除其他矩形后面的矩形 就更容易抽象地思考彩色矩形 所以我将在问题
  • 从字符串中提取电子邮件地址

    我有一个像这样的字符串 Francesco Renga lt email protected cdn cgi l email protection gt 我只需要提取电子邮件 即 电子邮件受保护 cdn cgi l email protec
  • 在多个 angular.js 应用程序之间共享单个服务

    我正在构建一个电子商务网站 基于 shopify 并且使用多个小型 angularjs 应用程序来处理诸如快速购物车 愿望清单 过滤产品和其他一些较小项目之类的事情 我最初使用了一个大型应用程序 具有路由和所有内容 但当我没有完整的 RES
  • 使用 Moment.js 从 ISO 字符串中提取 utcOffset

    使用 moment js 我尝试从 ISO 日期字符串中提取偏移量 以便稍后在格式化纪元时间戳时使用该偏移量 以确保时间戳的转换位于同一时区 即使字符串中的偏移量为 0400 结果始终为0 var currentTime 2015 03 1
  • 如何使用谷歌地图检测一个点是否在多边形内部?

    我想检测到google maps LatLng是在一个里面google maps Polygon 我怎样才能做到这一点 Cheers 你可以使用这个谷歌地图V3 google maps geometry poly containsLocat
  • 如何从矩形点计算旋转角度?

    我有4分1 2 3 4闭合一个矩形 这些点按以下方式排列在数组中 x1 y1 x2 y2 x3 y3 x4 y4 我遇到的问题是矩形可以旋转一定角度 如何计算原始点 灰色轮廓 和角度 我试图在 javascript css3 transfo
  • 如何为多个元素添加Class?

    我正在使用这段 javascript 向多个元素添加一个类 我试图引用多个 div 并向它们添加类 它只适用于第一个 JavaScript
  • React-Router v5 History.push 不触发组件

    很抱歉朋友们又问这个问题了 我找到了解决这个问题的几个方法 但他们让我很困惑 我只是想问一个优雅的方法来做到这一点 正如你通过标题所理解的 我有一个关于反应路由的问题 让我解释 我有一个按钮 其名称是Login 单击按钮后 我执行了一些逻辑
  • 节省页面加载时间的提示[重复]

    这个问题在这里已经有答案了 我的问题 削减那些不必要的 kb 并使页面加载速度更快的最佳方法是什么 全部是什么优化实践 编码实践 在js php中 如果执行可以使您的页面更轻 为什么我问这个 我读了这篇关于 jquery js 与 jque
  • 为什么 if 语句中的赋值等于 true?

    首先我要说的是我理解两者之间的区别 and 第一个用于将右侧值分配给左侧变量 第二个用于比较两个值的等价性 第三个不仅用于等价性 还用于类型比较 即true 1会回来false 所以我知道almost任何时候你看到if 作者很有可能打算使用
  • 如何在 Vue.js 2 中使用事件总线通过自定义事件传递数据

    我在用着Vue js 2 5 x 在我的玩具项目中 我实现了一个事件总线 类似于所示的here https alligator io vuejs global event bus 事件总线在 Vue 原型中全局注册为 eventBus 然后
  • 添加元数据到快速路线

    有什么方法可以将元数据添加到 Express 的路线中吗 例如 app get some route function req res some meta data 我正在寻找一种针对我的节点应用程序的 AOP 方法 因此我想通过身份验证和
  • jQuery.ajax() 记录 HTTP 请求

    我有一个发送 HTTP POST 请求的函数 我想记录它以进行调试 这是函数 function serverRequest URL DATA callback ajax url URL type POST dataType text con

随机推荐