【问题标题】:Create and use Babel plugin without making it a npm module创建和使用 Babel 插件而不使其成为 npm 模块
【发布时间】:2016-04-02 03:21:17
【问题描述】:

在我的项目中,我使用的是带有 require 钩子的 Babel 6。我需要加载我编写的自定义 babel 插件。但是我真的需要先使用 npm 发布我的插件,然后在我的主项目的.babelrc 中包含插件名称吗?

有没有办法直接加载插件代码?换句话说,我可以直接加载以下内容吗?

export default function({types: t }) {
  return {
    visitor: {
      ...
    }
  };
}

【问题讨论】:

    标签: node.js babeljs


    【解决方案1】:

    在 .babelrc 中列出插件的位置,提供插件的路径,而不是标准发布的插件名称。

    "plugins": ["transform-react-jsx", "./your/plugin/location"]
    

    导出插件函数时,您可能需要使用 module.exports = 而不是 export default,因为 ES2015 模块尚未在 Node 中完全实现。

    【讨论】:

    • 谢谢!我希望这在 babel 的网站/文档上更加明显。
    • 路径到底应该与什么相对?
    • 它与 babel 运行的每个文件有关......这意味着它总是在变化。最好的选择是使用path.resolve 获取插件的绝对路径并使用它
    【解决方案2】:

    这是我的整个babel.config.js 文件。

    module.exports = function (api) {
      api.cache(true);
    
      const presets = ["@babel/preset-env", "@babel/preset-react"];
      const plugins = [ 
        ["@babel/plugin-proposal-pipeline-operator", { "proposal": "minimal" }],
        "c:\\projects\\my-babel-plugin"
      ];
    
      return {
        presets,
        plugins
      };
    }
    

    插件数组中的第一项是数组形式的plugin with options。第二项是我自己的本地插件。

    my-babel-plugin 文件夹内需要有一个带有“main”条目的package.json,通常是"main": "lib/index.js""main": "src/index.js"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-18
      • 2016-02-01
      • 1970-01-01
      • 2017-01-13
      • 2019-10-30
      • 2019-07-12
      • 2020-06-04
      • 2017-12-08
      相关资源
      最近更新 更多