gpt4 book ai didi

babeljs - 如何在 svelte/sapper 中使用第 3 阶段语法?

转载 作者:行者123 更新时间:2023-12-05 00:10:34 27 4
gpt4 key购买 nike

我想在我的工兵项目中使用类属性和私有(private)字段。显然它们现在必须由 babel 进行预处理。

我尝试在rollup.config.js中添加相应的babel插件,只是实现了一些东西。

  • babel rollup 插件只在 legacy 模式下使用。
  • 服务器部分根本不使用 babel。

  • 我试图将 babel rollup 插件添加到这样的服务器插件的末尾,
    babel({
    extensions: ['.js', '.mjs', '.html', '.svelte'],
    runtimeHelpers: true,
    exclude: ['node_modules/@babel/**'],
    plugins: [
    '@babel/plugin-proposal-class-properties',
    '@babel/plugin-proposal-private-methods',
    ],
    }),

    但它似乎根本没有生效。

    我还将它添加到客户端插件中(在旧条目之前),但它提示我需要添加 @babel/plugin-syntax-dynamic-import ,所以看起来 babel 必须识别整个语法才能进行预处理,而且我真的不想为现代浏览器编译动态导入。

    如何在 sapper 中启用 esnext 语法?

    最佳答案

    您需要预处理 <script> 的内容, 使用 preprocess rollup-plugin-svelte 中的选项:

    plugins: [
    svelte({
    // ...
    preprocess: {
    script: ({ content }) => {
    return transformWithBabel(content);
    }
    },
    // ...
    })
    ]

    在一个理想的世界里,我们会有一个现成的预处理器插件来做这件事;事实上, transformWithBabel函数现在留给读者作为练习。本质上它将涉及 import * as babel from '@babel/core'并直接使用 Babel API,我保证这会很有趣。

    请注意 @babel/plugin-syntax-dynamic-import不编译动态导入,它只允许 Babel 解析它。没有它,Babel 无法从 <script> 中的代码生成有效的 AST .

    关于babeljs - 如何在 svelte/sapper 中使用第 3 阶段语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57204295/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com