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

olhwl3o2  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(362)

我使用npm init vue@latest创建了一个新的Vue应用程序(基于Vite),并为e2e测试选择了Playwright。

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

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

"test:e2e": "playwright test",

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

  • "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
process.env.CI有很多用途,我正在寻找一种方法来动态设置它(在需要它的npm脚本中)

sdnqo3pr

sdnqo3pr1#

您可以在项目文件夹中添加.env文件

.环境

NODE_ENV=CI

访问配置js

import { defineConfig, loadEnv } from 'vite';

export default ({ mode }) => {

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

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

然后,您可以使用.env中的配置,如下所示:
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

import axios from 'axios';

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

注意事项

如果客户端需要该配置,请添加VITE_前缀,否则在客户端看不到该配置。
更多详细信息,请单击此处
更新:
您可以为您的测试环境和其他环境使用不同的模式

.环境测试

CI=true

软件包.json

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

.环境产品

CI=false

软件包.json

"prod": "vite build --mode=prod",

相关问题