Babelify不会在node_modules中转换jsx代码

时间:2016-10-18 12:15:42

标签: javascript reactjs npm node-modules jsx

我已成功配置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。

谢谢!

1 个答案:

答案 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。