[英]Parcel + Babel not transpiling ES6 from node_modules?
我似乎无法让 Babel 与 Parcel 一起工作,尽管预设是自动安装的。 它在本地和 Chrome 中工作,但它不转译 node_modules es6 文件,因此输出仍然具有const/let/...
并且它无法在 Safari 中运行。
.babelrc
{
"presets": ["@babel/preset-env","@babel/preset-react"]
}
(我也试过env
和react
的)。
package.json 脚本
"scripts": {
"start": "parcel index.html",
"build": "parcel build index.html",
为什么会这样?
完整的 package.json (注意这是为了让它工作而搞砸之后)
{
"name": "my-react-app",
"version": "1.0.0",
"description": "",
"main": "src/index.js",
"scripts": {
"start": "parcel index.html",
"build": "parcel build index.html"
},
"author": "",
"license": "ISC",
"dependencies": {
"@babel/core": "^7.1.5",
"@babel/preset-env": "^7.1.5",
"@babel/preset-react": "^7.0.0",
"axios": "^0.18.0",
"babel-polyfill": "^6.26.0",
"browserslist": "^4.3.4",
"lodash": "^4.17.11",
"node-sass": "^4.10.0",
"pinyin": "^2.8.3",
"prop-types": "^15.6.2",
"react": "^16.6.1",
"react-dom": "^16.6.1",
"react-notifications": "^1.4.3",
"react-router-dom": "^4.3.1"
},
"devDependencies": {
"cssnano": "^4.1.7",
"sass": "^1.14.3"
}
}
仍然使用const
获取 .js 文件, let
. 任何想法我缺少什么?
我从https://github.com/parcel-bundler/parcel/issues/1655#issuecomment-425593377找到了解决方案
// .browserslistrc.packages
node 10.11
// package.json
{
"scripts": {
"postinstall": "npm-run-all -p \"postinstall:*\"",
"postinstall:p-retry": "cpy --rename=.browserslistrc .browserslistrc.packages node_modules/p-retry",
"postinstall:query-string": "cpy --rename=.browserslistrc .browserslistrc.packages node_modules/query-string"
}
}
为每个需要添加转译的 npm 包添加postinstall:package-name
(在我的例子中是pinyin
),并在每次npm install
后运行npm run postinstall
。 Babel 现在也应该转译那个 npm 包了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.