我已成功配置Babelify以将jsx代码转换为js,并且我之前已经创建了node_modules,因此我可以在没有特定文件位置的情况下链接它们,只有包名称。但是当我在我的node_module代码中包含jsx代码时,babelify会报告我尝试使用html标记样式数据的意外令牌。我正在制作我自己的react-bootstrap版本以更好地满足我的需求。我查看了react-bootstrap做了什么,他们甚至没有使用jsx,他们使用React.createElement调用。在节点模块中使用jsx是不可能的吗?这将是一个奇怪的限制。
我的目标是能够'需要'我写的模块而不指定特定的文件路径,只指定包名。当我在node_module文件之外工作时,我的代码会编译。
我的package.json文件:
{
"name": "react-bootstrap",
"version": "1.0.0",
"main": "index.jsx"
}
当我只在'require'中指定包名时,Babelify只在node_module文件中查找,如果有一个package.json命令也可以查看其他文件夹,这样的东西可能会解决我的问题。除非这也只编译js而不是jsx。
谢谢!
答案 0 :(得分:0)
我找到了解决方案。需要进行语言化的每个模块都需要在package.json中指定babelify变换。
编译时我使用命令:
watchify src/main.jsx -v -t [ babelify --preset [ react ] ] -o public/js/index.js
因为我在我的命令中设置了babelify react预设,我认为它可以在任何地方工作。我发现我可以使用:
watchify src/main.jsx -v -t -o public/js/index.js
如果我添加:
"browserify": {
"transform": [["babelify", { "presets": ["react"] }]]
},
到我的package.json。所以我只是将上面的命令添加到我的react-bootstrap package.json。