Hun*_*ker 6 cross-browser package.json babeljs npm-scripts babel-preset-env
我正在用npm脚本中的browserslist测试Babel。
这是我当前的package.json,Babel正在按照我的期望进行操作:
{
"name": "npm-scripts-igloo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"devserver": "live-server",
"watch-sass": "node-sass sass/style.scss css/style.css --output-style expanded --watch",
"compile-sass": "node-sass sass/style.scss css/style.compiled.css --output-style expanded",
"prefix-css": "postcss css/style.compiled.css --use autoprefixer -o css/style.prefix.css",
"compress-css": "node-sass css/style.prefix.css css/style.min.css --output-style compressed",
"build-css": "npm-run-all compile-sass prefix-css compress-css",
"babel": "babel app.js --watch -o js/app.compiled.js",
"start": "npm-run-all -p devserver watch-sass babel"
},
"browserslist": [
"last 5 versions"
],
"babel": {
"presets": [
[
"env",
{
"targets": {
"browsers": [
"cover 99.5%"
]
}
}
]
]
},
"author": "",
"license": "ISC",
"devDependencies": {
"@fortawesome/fontawesome-free": "^5.6.1",
"autoprefixer": "^9.4.7",
"babel-cli": "^6.26.0",
"babel-preset-env": "^1.7.0",
"live-server": "^1.2.1",
"node-sass": "^4.11.0",
"npm-run-all": "^4.1.5",
"postcss-cli": "^6.1.1"
}
}
Run Code Online (Sandbox Code Playgroud)
我没有使用.babelrc文件或Babel的任何其他配置。
我尝试使用browserslist键锁定Edge 16:
"browserslist": [
"Edge 16"
]
Run Code Online (Sandbox Code Playgroud)
使用此配置,Babel不应将其转换const
为var
,而是按如下说明进行转换:
Babel不会更改const,因为Edge 16支持它
https://github.com/browserslist/browserslist-example
但是,如果我使用babel键锁定Edge 16:
"babel": {
"presets": [
[
"env",
{
"targets": {
"browsers": [
"Edge 16"
]
}
}
]
]
}
Run Code Online (Sandbox Code Playgroud)
那么Babel不会正确地更改const
为var
Edge 16 ,因为Edge 16支持它。
我更喜欢使用browserslist键,因为这是推荐的做法 https://github.com/browserslist/browserslist
另外,我然后可以简单地与autoprefixer共享此browserslist选项,这应该是这样工作的。
但是,问题在于Babel似乎忽略了browserslist键。
如果我使用包含以下内容的.browserslistrc文件,则情况也是如此:
Edge 16
Run Code Online (Sandbox Code Playgroud)
此幻灯片上带有星号的注释:https : //slides.com/ai/browserslist#/14 报告: 仅Babel 7支持配置文件
因此,我尝试将Babel更新为v7:
npm install @babel/core -D
Run Code Online (Sandbox Code Playgroud)
这在devDependencies中产生了以下内容:
"@babel/core": "^7.3.4"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎没有任何区别。
因此,我的问题是:
为什么浏览器列表键似乎没有影响Babel?我的语法有问题吗?
在package.json中的browserslist键出现在哪里有关系吗?即关键顺序重要吗?
小智 -2
它对我有用 babel@7.6.0 并在 .babelrc fie 中进行以下配置
'@babel/preset-env', {
'useBuiltIns': 'usage',
'corejs': 3,
'targets': {
'browsers': ['chrome 74']
}
}
Run Code Online (Sandbox Code Playgroud)
在这里找到更多信息。
or 组合符可以使用关键字 or 以及 ,。最后 1 个版本或 > 1% 等于最后 1 个版本,> 1%。
还支持查询组合来执行前一个查询的交集:最后 1 个版本和 > 1%。
归档时间: |
|
查看次数: |
931 次 |
最近记录: |