如何让 Babel 在 Github Action 中工作?

问题描述 投票:0回答:1

我正在尝试运行一个运行 javascript ES6 代码的 Github Action。此前,我 在目标 javascript 文件 (en.js) 中的“export”关键字上收到“意外标记”错误,因此我尝试让 Babel 首先对其进行转译。

在工作流程中成功加载 babel-cli 后,Action 错误为:

Run npx babel ./src/localization --out-dir ./.github/workflows/babel-output
Error: Requires Babel "^7.0.0-0", but was loaded with "6.26.3". If you are sure you have a 
compatible version of @babel/core, it is likely that something in your build process is loading the wrong version.

如果我尝试安装 babel 7,错误是:

Run npm install -g --legacy-peer-deps babel@^7.0.0-0
npm ERR! code ETARGET
npm ERR! notarget No matching version found for babel@^7.0.0-0.
npm ERR! notarget In most cases you or one of your dependencies are requesting a package version that doesn't exist.

任何人都可以建议一种继续进行的方法吗?

工作流程yml文件是:

name: Compare Localization Keys
on:
  pull_request:
    branches:
      - localization_keys_comparison2
  push:
    branches:
      - localization_keys_comparison2

jobs:
  compare_keys:
    name: Compare Localization Keys
    runs-on: ubuntu-latest
    steps:
      - name: Get Code
        uses: actions/checkout@v3

      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: "18"

      - name: Add dependency
        run: yarn add @actions/core

      - name: Add dependency
        run: yarn add flat

        #it needs babel ^7 - 6.xx detected
      - name: Uninstall Wrong Babel Version
        run: npm uninstall -g babel

      #- name: Install Babel 7
      #run: yarn add babel@^7.0.0
      #run: npm install -g --legacy-peer-deps babel@^7.0.0-0

      - name: Install Babel Cli
        #run: yarn add --global babel-cli
        run: npm install --legacy-peer-deps --global babel-cli

      - name: Transpile JavaScript with Babel
        run: npx babel ./src/localization --out-dir ./.github/workflows/babel-output

      - name: Run comparison javascript file
        run: node --trace-warnings --experimental-modules ./.github/compare_localization_keys.js

compare_localization_keys.js 文件(上面)引用了 babel-output 文件夹中预期转译的 en.js 文件,但我们在工作流程中还没有成功走到这一步。

.babelrc 文件是:

{
  "presets": ["@babel/preset-env"]
} 

en.js 文件是:

export const en = {
  common: {
    loading: "Loading...",
//.. other object properties
  },
};

总体目标是创建一个 github 操作来比较 javascript 文件中的两个对象。

如有任何意见或建议,我们将不胜感激。

javascript github babeljs action
1个回答
0
投票

如果您在

type: module
中设置
package.json
并且不使用任何非标准语法,则不需要 Babel。

如果你确实想要 babelify,

babel
包已被弃用,没有 v7。使用
@babel/cli
@babel/core
@babel/preset-env
@babel/cli
提供命令 (
npx babel src ...etc
)。目标是让它们全部使用相似的版本(例如
npm i @babel/cli@latest @babel/core@latest @babel/preset-env@latest
@babel/[email protected]
等等)。

© www.soinside.com 2019 - 2024. All rights reserved.