最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • bable-preset-env

    正文概述 掘金(Jodie同志)   2021-01-29   510

    bable-preset-env,通过根据目标浏览器或运行环境自动确认所需Babel和polyfills,将es2015+转为es5。

    没有任何配置的情况下bable-preset-env行为与babel-preset-latest(或babel-preset-es2015, babel-preset-es2016, 和 babel-preset-es2017 集合)完全相同。

    {
      "presets": ["env"]
    }
    

    但是我们不建议这样使用,因为这样完全没有利用它针对特定浏览器的强大功能。你可以配置它为仅包含需要支持的浏览器所需要的polyfills和转换。只编译需要的东西可以使包更小和更简单。

    下边的例子仅包括覆盖率达于0.25%的用户所需的polyfill和代码转换,忽略了IE11和Opera Mini。我们使用browserslist来解析此信息。因此你可以使用browserslist来查询任何有效的信息

    {
      "presets": [
        ["env", {
          "targets": {
            // The % refers to the global coverage of users from browserslist
            "browsers": [ ">0.25%", "not ie 11", "not op_mini all"]
          }
        }]
      ]
    }
    

    你还可以指定浏览器的版本,而不是使用带有{"target":{"chrome":"52"}}的查询。如果您的目标是node.js而不是浏览器,你可以配置babel-preset-envt为只包含特定版本所需要polyfill和代码转换

    {
      "presets": [
        ["env", {
          "targets": {
            "node": "6.10"
          }
        }]
      ]
    }
    

    为了方便,你可以使用node:current来设置为仅包含node.js用于运行Babel的版本。

    {
      "presets": [
        ["env", {
          "targets": {
            "node": "current"
          }
        }]
      ]
    }
    

    更多选项

    • How it Works(如何工作

    • Install(安装)

    • Usage(使用)

    • Options(选项)

    • Examples(案例)

    • Caveats(注意事项)

    安装

    npm install --save-dev babel-preset-env
    

    yarn add babel-preset-env --dev
    

    没有选项的默认行为将运行所有转换

    {  "presets": ["env"]}
    

    选项

    更多信息请查看 plugin/preset options文档

    targets

    { [string]: number | string }, 默认为 {}.

    获取要支持的环境变量的版本

    每一个目标环境使用一个数字或字符串(我们建议在制定一个次级版本时使用字符串如node:'6.10')

    事例环境:chrome, opera, edge, firefox, safari, ie, ios, android, node, electron.

    targets.node

    number | string | "current" | true

    如果你想根据当前node版本编译,可以配置为node:true或node:"current",这样配置将与process.versions.node相同。

    targets.browsers

    Array | string

    targets.uglify
    

    true

    使用uglify-js缩小代码

    使用uglify-js缩小代码时,由于uglify -s不支持任何ES2015+语法,因此在针对以后的浏览器时可能会遇到语法错误。

    为了防止这些错误-将uglify选项设置为true,这将启用所有转换插件,因此,您的代码将完全编译为ES5。但是,useBuiltIns选项仍将像以前一样工作,并且只包含目标所需的polyfill。

    Uglify通过Uglify-es支持ES2015语法。如果您使用的是uglify es不支持的语法,我们建议您使用babel-minify。

    注意:此选项在2.x中已被弃用,并替换为forceAllTransforms选项

    spec

    boolean, defaults to false.

    为此预设中支持它们的任何插件启用更符合规范但可能更慢的转换。

    loose

    boolean, defaults to false.

    为这个预设中允许它们的任何插件启用“松散”转换。

    modules

    "amd" | "umd" | "systemjs" | "commonjs" | false, 默认 "commonjs".

    启用ES6模块语法到另一个模块类型的转换。将此设置为false不会转换模块

    debug

    boolean, 默认 false.

    将使用的目标/插件和插件数据版本中指定的版本输出到控制台

    include

    Array, 默认[].

    总是包含的插件数组。

    exclude

    Array,默认 [].

    总是要排除/删除的插件数组。

    useBuiltIns

    boolean, defaults to false.

    一种为polyfill应用babel-preset-env的方法(通过“babel-polyfill”)。

    注:这不是目前polyfill实验/stage-x内置像常规的“babel-polyfill”所做的。这只适用于npm>=3(至少要与babel6一起使用)

    npm install babel-polyfill --save

    此选项启用一个新插件,该插件将语句import "babel-polyfill"或require("babel-polyfill")替换为基于环境的babel-polyfill的个别requires。

    注意:只需在整个应用程序中使用require("babel-polyfill")一次。多次导入将抛出一个错误,因为它可能导致全局冲突和其他难以跟踪的问题。我们建议创建一个只包含require语句的单条目文件。

    Examples

    以各种目标导出

    export class A {}
    

    仅针对Chrome 52

    .babelrc

    {
      "presets": [
        ["env", {
          "targets": {
            "chrome": 52
          }
        }]
      ]
    }
    

    Out

    class A {}
    exports.A = A;
    

    目标Chrome 52带有webpack 2/汇总和松散模式

    .babelrc

    {
      "presets": [
        ["env", {
          "targets": {
            "chrome": 52
          },
          "modules": false,
          "loose": true
        }]
      ]
    }
    

    Out

    export class A {}
    

    通过browserslist以特定浏览器为目标

    .babelrc

    {
      "presets": [
        ["env", {
          "targets": {
            "chrome": 52,
            "browsers": ["last 2 versions", "safari 7"]
          }
        }]
      ]
    }
    

    Out

    export var A = function A() {
      _classCallCheck(this, A);
    };
    

    通过设置node: true 或 node: "current"

    .babelrc

    {
      "presets": [
        ["env", {
          "targets": {
            "node": "current"
          }
        }]
      ]
    }
    

    Out

    class A {}
    exports.A = A;
    

    设置 debug 输出

    .babelrc

    {
      "presets": [
        [ "env", {
          "targets": {
            "safari": 10
          },
          "modules": false,
          "useBuiltIns": true,
          "debug": true
        }]
      ]
    }
    

    stdout

    Using targets:
    {
      "safari": 10
    }
     
    Modules transform: false
     
    Using plugins:
      transform-exponentiation-operator {}
      transform-async-to-generator {}
     
    Using polyfills:
      es7.object.values {}
      es7.object.entries {}
      es7.object.get-own-property-descriptors {}
      web.timers {}
      web.immediate {}
      web.dom.iterable {}
    

    设置include and exclude指定 plugins/built-ins

    始终包换箭头函数, 排除generators

    {
      "presets": [
        ["env", {
          "targets": {
            "browsers": ["last 2 versions", "safari >= 7"]
          },
          "include": ["transform-es2015-arrow-functions", "es6.map"],
          "exclude": ["transform-regenerator", "es6.set"]
        }]
      ]
    }
    

    参考链接:www.npmjs.com/package/bab…


    起源地下载网 » bable-preset-env

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元