Aurelia CLI,babel运行时和异步转换

时间:2017-04-06 00:23:50

标签: babeljs aurelia aurelia-cli gulp-babel

我正在将现有的Aurelia应用程序从JSPM / SystemJS移植到Aurelia CLI。

我无法将babel-runtime和相关联的转换用于au build。我认为问题归因于babel-runtime中所需的aurelia.json依赖关系 - 我无法解决它应该是什么,目前它看起来如下所示:

...
{
   "name": "babel-runtime",
   "path": "../node_modules/babel-runtime",
   "main": "core-js",
   "resources": [
     "./regenerator/index.js"
   ]
}
...

我有以下(相关)devDependencies:

...
"babel-plugin-syntax-flow": "^6.8.0",
"babel-plugin-transform-async-to-generator": "^6.22.0",
"babel-plugin-transform-builtin-extend": "^1.1.2",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-plugin-transform-es2015-modules-amd": "^6.8.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.10.3",
"babel-plugin-transform-es2015-modules-systemjs": "^6.9.0",
"babel-plugin-transform-flow-strip-types": "^6.8.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-polyfill": "^6.23.0",
"babel-preset-es2015": "^6.13.2",
"babel-preset-stage-1": "^6.5.0",
"babel-register": "^6.9.0"
...

和(相关)依赖关系:

"babel-runtime": "^6.23.0",

我的.babelrc

{
  "sourceMap": true,
  "moduleIds": false,
  "comments": false,
  "compact": false,
  "code": true,
  "presets": [
    ["es2015", {"loose": true}],
    "stage-1"
  ],
  "plugins": [
    "syntax-flow",
    "transform-decorators-legacy",
    "transform-async-to-generator",
    ["transform-runtime", {
      "polyfill": false,
      "regenerator": true
    }],
    "transform-flow-strip-types",
    ["transform-builtin-extend", {
        "globals": ["Array"]
    }]
  ]
}

au build上我收到以下类错误:

File not found or not accessible: D:/code/.../node_modules/babel-runtime/regenerator.js. Requested by D:\code\...
File not found or not accessible: D:/code/.../node_modules/core-js/library/fn/symbol.js. Requested by D:\code\...

在Aurelia CLI应用中成功设置babel-runtime的人可以帮忙吗?

更新

我已经设法通过列出它似乎引用的所有babel-runtimecore-js依赖项来使构建工作.... 这是正确的方法吗?

{
  "name": "babel-runtime",
  "path": "../node_modules/babel-runtime",
  "main": "core-js"
},
{
  "name": "babel-runtime/regenerator",
  "path": "../node_modules/babel-runtime/regenerator",
  "main": "index"
},
{
  "name": "babel-runtime/core-js",
  "path": "../node_modules/babel-runtime/core-js"
},
{
  "name": "core-js",
  "path": "../node_modules/core-js",
  "main": "index"
},
{
  "name": "core-js/library",
  "path": "../node_modules/core-js/library",
  "main": "index"
},
{
  "name": "regenerator-runtime",
  "path": "../node_modules/regenerator-runtime",
  "main": "runtime-module"
},
...

但是我现在看到来自require的运行时错误,这似乎表明我的依赖关系没有以正确的顺序加载

Uncaught Error: Module name "_export" has not been loaded yet for context: _. Use require([])
Uncaught Error: Module name "shim" has not been loaded yet for context: _. Use require([])

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我已经设法让这个工作....我从一个空的平板开始并逐个添加了移动部件,但是Aurelia CLI也有一些更新,所以我并非完全确定是否是我做错了,或者CLI中的问题已经解决。

我的.babelrc现在非常简单,第1阶段预设足以让异步转换工作:

{
  "sourceMap": true,
  "moduleIds": false,
  "comments": false,
  "compact": false,
  "code": true,
  "presets": [
    ["es2015", {"loose": true}],
    "stage-1"
  ],
  "plugins": [
    "transform-runtime",
    "transform-decorators-legacy"
  ]
}

core-jsbabel-runtimeaurelia.json相关的捆绑依赖项是:

"dependencies": [
  {
    "name": "core-js",
    "path": "../node_modules/core-js",
    "main": "client/core",
    "deps":[
      "../node_modules/core-js/shim",
      "../node_modules/core-js/library/**/*.js",
      "../node_modules/core-js/modules/**/*.js"
    ]
  },
  {
    "name": "regenerator-runtime",
    "path": "../node_modules/regenerator-runtime",
    "main": "runtime"
  },
  {
    "name": "babel-runtime",
    "path": "../node_modules/babel-runtime",
    "main": "regenerator/index",
    "deps": [
      "../node_modules/babel-runtime/core-js/**/*.js",
      "../node_modules/babel-runtime/helpers/**/*.js"
    ]
  },
  {
    "name": "babel-runtime/regenerator",
    "path": "../node_modules/babel-runtime/regenerator",
    "main": "index"
  },

  ...

和package.json相关位:

"dependencies": {
    ...
    "babel-runtime": "^6.23.0",
    "core-js": "^2.4.1",
    ...
  },
  "devDependencies": {
    ...
    "babel-plugin-transform-decorators-legacy": "^1.3.4",
    "babel-plugin-transform-es2015-modules-amd": "^6.8.0",
    "babel-plugin-transform-es2015-modules-commonjs": "^6.10.3",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-es2015": "^6.13.2",
    "babel-preset-stage-1": "^6.5.0",
    ....
  }

希望这可以帮助其他任何人尝试这项工作!