Javascript 如何将babel与react将使用的npm包一起使用
试着做我认为很简单的事情 我有一个使用高级js语法的节点包。我想在react项目中依靠它 因此,我通过Javascript 如何将babel与react将使用的npm包一起使用,javascript,node.js,reactjs,npm,babeljs,Javascript,Node.js,Reactjs,Npm,Babeljs,试着做我认为很简单的事情 我有一个使用高级js语法的节点包。我想在react项目中依靠它 因此,我通过--save dev安装了babel软件包,并添加了一个。babelrc: { "presets": ["env"], "plugins": ["transform-object-rest-spread"] } 这还不够,所以我在install下添加了一个npm脚本来触发编译。然后我必须通过main将编译后的目标lib/index.js作为我的入口点。因此,我的package.json
--save dev
安装了babel软件包,并添加了一个。babelrc
:
{
"presets": ["env"],
"plugins": ["transform-object-rest-spread"]
}
这还不够,所以我在install
下添加了一个npm脚本来触发编译。然后我必须通过main
将编译后的目标lib/index.js
作为我的入口点。因此,我的package.json最终看起来是这样的:
{
"name": "bla",
"version": "1.0.0",
"scripts": {
"postinstall": "babel src --out-dir lib"
},
"main": "lib/index.js",
"dependencies": {},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-preset-env": "^1.6.1",
"babel-preset-react-native": "^4.0.0"
}
}
当我在这个项目上本地运行npm install
时,它会正确构建。但是,当react脚本构建这个(dep来自github)时,我得到一个错误:sh:1:babel:notfound
为什么这么难?我做错了什么?
sh:1:babel:not found
来自您的shell,未找到babel二进制文件(通常在./node\u modules/.bin/babel下)
您希望在发布到npm之前进行编译,以便安装您的包的任何人都拥有生成的文件。但是,对于Github,请尝试以下方法:
“postinstall”:“npx-babel-src-out-dir-lib”
这项黑客技术取代了postinstall
:
...
"preinstall": "npm install --ignore-scripts && babel src --out-dir lib",
...
资料来源:
同样相关:我不确定我是否正确理解了这里的需求,但您能否不运行
babel
调用prepare
或预发布
脚本?这样一来,只有本地npm安装调用才能接收到该信息
查看有关npm脚本生命周期的更多信息:如果我从github安装,该怎么办?然后,您必须将生成(传输)文件作为包的一部分推送到github上。或者您可以将react项目设置为es6项目,并使用babel传输react代码和依赖项代码。请参阅更新(注意npX中的x)npX在适当的上下文中运行babel cmd。@jake仍然不好:您错误地安装了“babel”包,这在babel 6中是不可操作的。
我不同意,您不应该推送构建代码。首先,您的想法是正确的,这是一个公平和环境问题(sh:1:babel:notfound
来自您的shell,没有找到babel二进制文件)