Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将babel与react将使用的npm包一起使用_Javascript_Node.js_Reactjs_Npm_Babeljs - Fatal编程技术网

Javascript 如何将babel与react将使用的npm包一起使用

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

试着做我认为很简单的事情

我有一个使用高级js语法的节点包。我想在react项目中依靠它

因此,我通过
--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二进制文件)