Свернуть пакет, используя экспорт вместо module.exports - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть библиотека, которую я объединяю с использованием накопительного пакета, и это раздел из файла rollup.config.js:

export default {
  input: `src/${libraryName}.ts`,
  output: [
    { file: pkg.main, name: camelCase(libraryName), format: 'cjs', sourcemap: true },
    { file: pkg.module, format: 'es', sourcemap: true },
  ],

  ....
}

. Он генерирует два файла dist/libname.umd.js и dist/libname.es5.js.Я подтвердил от размещения оператора console.log в обоих файлах, что использование require('libname') загружает dist/libname.umd.js.Однако следующая строка:

var x = require('libname').X
console.log(x) // This is undefined

печатает undefined.Итак, я попытался отредактировать файл dist/libname.umd.js вручную и в нижней части файла, который я увидел:

exports.X = X;

с общей переменной X, связанной где-то выше в файле.Я изменил это на:

module.exports.X = X;

и тогда, кажется, работает.Я немного новичок в node / js, поэтому я не был уверен, что это способ экспорта модулей, но при чтении поста в блоге (http://www.hacksparrow.com/node-js-exports-vs-module-exports.html) оказывается, что оба они должны быть в порядке? IЯ все еще немного не уверен в этом.

Кроме того, когда я просто сделал это:

console.log(require('libname')

он печатает [Function: uniqSetWithForEach] и console.log(require('libname')()) печатает [].

РЕДАКТИРОВАТЬ Итак, пока я могу продолжать свою работу, я изменил rollup.config.ts, добавив outro:

export default {
  ...
  output: [
      { file: pkg.main, name: camelCase(libraryName), format: 'cjs',
        sourcemap: true,
        outro: 'module.exports = Object.assign({}, module.exports, exports)'
      }
  ]
  ...
}

, и это кажетсясделайте это сейчас, но я уверен, что это не чистое решение.

...