如何使用“npm link”链接babel transpile模块

时间:2017-11-13 12:52:17

标签: node.js babeljs babel-polyfill babel-loader babel-register

我目前的项目(我的项目)中有很多代码需要在新项目中使用。这段代码是用ES6编写的,然后用babel编译。

我使用此共享代码创建了一个名为“my-module”的模块,并使用npm link将其链接到“my-project”

问题在于,当我启动项目时,“my-module”中的代码没有被转发并在import语句中抛出错误。

我的模块中的代码将被编辑很多。如何使其有效?

的package.json

  "scripts": {
    "start": "nodemon bin/dev",
    "clean": "rm -rf dist",
    "build": "yarn run clean && mkdir dist && babel src -s -d dist",
    "production": "yarn run build && node bin/production"
  },

.babelrc

{
  "presets": ["es2015", "stage-2"]
}

1 个答案:

答案 0 :(得分:0)

链接的项目找不到您的.babelrc文件。您有几个选择:

  1. .babelrc或更高级目录中放置my-project。这将要求babel插件安装在该模块中(或全局)
  2. 如果你正在使用构建工具(即webpack,browserify等),你可以在那里声明babel配置。
  3. 此评论帮助我:https://github.com/babel/gulp-babel/issues/93#issuecomment-249172581

    我的项目使用browserify,因此在.babelrc中的构建脚本中声明相同的插件并调用require.resolve会导致npm链接项目被正确转换。

    return browserify.transform('babelify', {
        sourceMaps: true, 
        global:true, 
        plugins: ['babel-preset-es2015'].map(require.resolve)
    })