0

我很难jspm_packages在. 我正在用 EM6(babel 引擎)编写一个应用程序。jspmpackages.json

我有一个 gulp 文件,将我的 ES6 javascript 放到一个名为.tmp/scripts

gulp.task('transpile:app', ['templates'], function() {
  return gulp.src('app/scripts/**/*.js')
    .pipe($.babel({ sourceMap: true }))
    .pipe(gulp.dest('.tmp/scripts'));
});

然后是一个捆绑任务,它应该将文件转换.tmp为一个名为的文件夹dist

// Bundle javascripts
gulp.task('bundle:app', function() {
  return gulp.src('')
    .pipe($.shell('jspm bundle-sfx app dist/scripts/app.js --minify --skip-source-maps'));
});

这就是失败的地方。

运行jspm bundle-sfx app dist/scripts/app.js --minify --skip-source-maps'提示此错误:

warn jspm_packages must be specified in the package.json within the baseURL for paths to resolve correctly.
     Building the single-file sfx bundle for app...

err  Error: ENOENT, open '/Users/connorblack/git/**********/jspm_packages/github/marionettejs/backbone.marionette@2.4.2.js'
         at Error (native)

奇怪的是,这个文件路径jspm_packages正在寻找它应该在上面的两个目录,从而提示ENOENT错误。

我对文档进行了一些研究,发现您可以在 中设置一个"packages"属性package.json,这就是我所做的,这就是我当前文件的样子:

...
"jspm": {
    "directories": {
      "baseURL": ".tmp/scripts",
      "lib": "app",
      "packages": "jspm_packages"
    },
...

我尝试了多种变体,但它们都以类似的错误告终。在我的文件系统上加前缀../../步骤,但是由于该命令已经在查找上面的两个目录,因此这无济于事。

如您所料,从 my 中完全删除该属性package.json会删除警告并更改ENOENT

     Building the single-file sfx bundle for app...

err  Error: ENOENT, open '/Users/connorblack/git/********/*********/skeleton/.tmp/scripts/jspm_packages/github/marionettejs/backbone.marionette@2.4.2.js'
         at Error (native)

现在它似乎正在寻找jspm_packagesbaseURL( .tmp/scripts) 下面的文件夹,这是我的 gulp 进程在从 ES6 转换为普通 JS 之前放置我的应用程序脚本的位置。

我在这里束手无策。我似乎无法jspm正确找到该过程jspm_packages,因此我无法编译我的应用程序。

任何帮助将不胜感激。

4

1 回答 1

1

当我尝试时,我遇到了类似的问题

jspm bundle app.js app/app.bundle.js 

但后来我变了

  "jspm": {
    "directories": {
      "baseURL": "app",
      "packages": "jspm_packages"
    },

到这个..

  "jspm": {
    "directories": {
      "baseURL": "app",
      "packages": "app/jspm_packages"
    },

捆绑开始工作......

于 2016-05-03T20:36:09.080 回答