英文:
How To Get Babel Working In A Github Action?
问题 {#heading}
我试图运行一个GitHub Action,该Action运行JavaScript ES6代码。以前,我在目标JavaScript文件(en.js)中的'export'关键字上遇到了一个'unexpected token'错误,所以我尝试让Babel首先将其转译。
在工作流中成功加载了babel-cli后,出现了以下错误:
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.
有人可以提出继续的方法吗?
workflow 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
#它需要babel ^7 - 检测到6.xx
- 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...",
//.. 其他对象属性
},
};
总体目标是创建一个GitHub Action,用于比较两个JavaScript文件中的两个对象。
如有评论或建议,将不胜感激。 英文:
I'm trying to run a GitHub Action which runs javascript ES6 code. Previously, I
was getting an 'unexpected token' error on the 'export' keyword in the target javascript file (en.js), so I tried getting Babel to transpile it first.
With babel-cli successfully loaded in the workflow, the Action error is:
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
a compatible version of @babel/core, it is likely that something in your build process is loading the wrong version.
and if I try to install Babel 7, the error is:
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.
Can anyone suggest a way to proceed?
the workflow yml file is:
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
The compare_localization_keys.js
file (above) references the intended transpiled en.js file in the babel-output folder, but we haven't successfully gotten that far in the workflow yet.
the .babelrc
file is:
{
"presets": ["@babel/preset-env"]
}
the en.js file is:
export const en = {
common: {
loading: "Loading...",
//.. other object properties
},
};
The overall aim is to create a GitHub Action that compares two objects from JavaScript files.
Any comments or suggestions would be very gratefully received.
答案1 {#1}
得分: 0
如果你在 package.json
中设置了 type: module
并且没有使用任何非标准语法,就不需要使用 Babel。
如果你确实想要使用 Babel,babel
包已被弃用,没有 v7 版本。请使用 @babel/cli
、@babel/core
和 @babel/preset-env
。@babel/cli
提供了命令(npx babel src ...等等
)。尽量确保它们都是相似版本(例如 npm i @babel/cli@latest @babel/core@latest @babel/preset-env@latest
,或者 @babel/cli@7.22.10
等等)。
英文:
There's no need for Babel if you set type: module
in your package.json
and aren't using any non-standard syntax.
If you do want to babelify, the babel
package is deprecated, there is no v7. Use @babel/cli
, @babel/core
, and @babel/preset-env
. @babel/cli
provides the command (npx babel src ...etc
). Aim to have them all on a similar version (for example npm i @babel/cli@latest @babel/core@latest @babel/preset-env@latest
, or @babel/cli@7.22.10
, and so on).