在 create-react-app 中使用 babel transform
Use babel transform with create-react-app
我正在开发一个 javaScript / React 游乐场(类似于非常简单的 codesandbox.io),我正在尝试弄清楚如何转换代码。我正在考虑使用 Babel 转换,但应用程序本身是使用 create-react-app 构建的,所以我无权访问 Babel。我的问题是,如果我执行类似以下操作并安装 Babel,它是否也会覆盖 create-rect-app 当前为应用程序转换代码的方式?
// transpile.js
const babelOptions = {
presets: [ "react", ["es2015", { "modules": false }]]
}
export default function preprocess(str) {
const { code } = Babel.transform(str, babelOptions);
return code;
}
编辑:
从那以后,我了解到我可以将 Babel standalone 用于这个用例!现在只是弄清楚如何配置它。我仍然会很感激帮助,但如果我首先找到解决方案,我会 post 为其他人:)
好的,我已经想通了,但这不是直截了当的。我会尝试在此处添加一些详细信息,以防其他人觉得有用。
我首先需要独立加载 Babel,所以我使用 答案创建了一个自定义挂钩来加载脚本:
import { useEffect } from 'react';
const useScript = url => {
useEffect(() => {
const script = document.createElement('script');
script.src = url;
script.async = true;
document.body.appendChild(script);
console.log(`${url} script loaded`);
return () => {
document.body.removeChild(script);
console.log(`${url} script removed`);
}
}, [url]);
};
export default useScript;
然后我像这样在我的组件中使用它:
import useScript from '../../../hooks/useScript';
useScript("https://unpkg.com/@babel/standalone/babel.min.js");
然后我稍后使用我在初始问题中编写的代码来转译我的代码。
我正在开发一个 javaScript / React 游乐场(类似于非常简单的 codesandbox.io),我正在尝试弄清楚如何转换代码。我正在考虑使用 Babel 转换,但应用程序本身是使用 create-react-app 构建的,所以我无权访问 Babel。我的问题是,如果我执行类似以下操作并安装 Babel,它是否也会覆盖 create-rect-app 当前为应用程序转换代码的方式?
// transpile.js
const babelOptions = {
presets: [ "react", ["es2015", { "modules": false }]]
}
export default function preprocess(str) {
const { code } = Babel.transform(str, babelOptions);
return code;
}
编辑:
从那以后,我了解到我可以将 Babel standalone 用于这个用例!现在只是弄清楚如何配置它。我仍然会很感激帮助,但如果我首先找到解决方案,我会 post 为其他人:)
好的,我已经想通了,但这不是直截了当的。我会尝试在此处添加一些详细信息,以防其他人觉得有用。
我首先需要独立加载 Babel,所以我使用
import { useEffect } from 'react';
const useScript = url => {
useEffect(() => {
const script = document.createElement('script');
script.src = url;
script.async = true;
document.body.appendChild(script);
console.log(`${url} script loaded`);
return () => {
document.body.removeChild(script);
console.log(`${url} script removed`);
}
}, [url]);
};
export default useScript;
然后我像这样在我的组件中使用它:
import useScript from '../../../hooks/useScript';
useScript("https://unpkg.com/@babel/standalone/babel.min.js");
然后我稍后使用我在初始问题中编写的代码来转译我的代码。