Как лучше всего решить эту проблему, описанную ниже?
... или мне следует использовать что-то другое, кроме Rollup для этой задачи?
...
Предположим, я разрабатываю библиотеку foo, которая предоставляет два модуля es6 a.js
и b.js
(т.е. разрешает import a from foo/a
и import b from foo/b
)
Исходные модули es6
// src/a.js
export default function a(x) { return x+'!' }
...
// src/b.js
import a from './a.js'
export default function b() { return a('Hi') }
Затем я хочу преобразовать как a.js, так и b.js в модули CommonJs и сохранить их в корневой папке проекта. Итак, я хочу, чтобы строка import a from './a'
превратилась только в const a = require('./a')
и пропустила объединение. Вот так:
Желаемый вывод CommonJS
// a.js
module.exports = function a(x) { return x+'!' }
...
// b.js
const a = require('./a')
module.exports = function b() { return a('Hi') }
Моим первым побуждением было использовать что-то вроде external: (id) => id!==currentFile
в rollup.config.js, чтобы определить все родственные модули как внешние. Это почти работает, но в результате относительный путь импорта переписывается на const a = require('./src/a')
(импорт es6-версии a.js
из папки src
).
Фактический результат
// a.js
module.exports = function a(x) { return x+'!' }
...
// b.js
const a = require('./src/a')
module.exports = function b() { return a('Hi') }
/src
, который вам не нужен? - person Tarun Lalwani   schedule 18.05.2018a.js
- person Már Örlygsson   schedule 18.05.2018