Ошибка компиляции jspm/ES6, неверное расположение пакетов

Мне трудно получить jspm_packages правильно работать в моем jspm конфигурация в моем packages.json, Я пишу приложение в EM6 (движок Babel).

У меня есть файл 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"
    },
...

Я пробовал несколько вариантов, но все они заканчиваются с похожей ошибкой. Приставка ../../ идет дальше по моей файловой системе, но так как команда уже ищет две директории выше, это не помогает.

Как и следовало ожидать, удаление атрибута полностью из моего 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_packages папка под моим baseURL (.tmp/scripts), где процесс gulp помещает сценарии моего приложения перед преобразованием из ES6 в обычный JS.

Я в конце моего остроумия здесь. Я не могу получить jspm Процесс, чтобы правильно найти jspm_packages и поэтому я не могу скомпилировать свое приложение.

Любая помощь будет принята с благодарностью.

1 ответ

У меня была похожая проблема, когда я пытался

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

Но я тогда изменился

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

к этому..

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

и комплектация начала работать...

Другие вопросы по тегам