创建和使用Babel插件而不使其成为npm模块

时间:2016-04-02 03:21:18

标签: node.js babeljs

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

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

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

2 个答案:

答案 0 :(得分:20)

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

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

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

答案 1 :(得分:0)

这是我的整个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
  };
}

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

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