1

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

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

问题是当我启动项目时,“my-module”中的代码没有被转译,并在导入语句处引发错误。

my-module 中的代码将被大量编辑。如何使它起作用?

包.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"]
}
4

1 回答 1

1

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

  1. 放置一个.babelrcinmy-project或更高级别的目录。这将需要在该模块中(或全局)安装 babel 插件
  2. 如果您使用的是构建工具(即 webpack、browserify 等),您可以在此处声明 babel 配置。

这条评论帮助了我: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)
})
于 2018-03-22T14:38:40.440 回答