汇总包括不需要的依赖关系,并在输出中缺less一个函数

我第一次使用rollup ,它产生了一些意想不到的结果。 下面我有我的例子中的三个文件,以及来自rollup的输出和我正在寻找的输出种类。

这是我的完整示例的回购。

我有三个文件01.js02.js03.js

01.js

 import { fakePromise } from './02' export default fakePromise 

02.js

 import { map } from 'lodash' import { stupidReference } from './03' export function fakePromise (str) { return stupidReference(str) } export function fakeMap (arr) { return map(arr, item => item + ' is stupid') } 

03.js

 import Promise from 'bluebird' export function stupidReference (str) { return Promise.resolve(str) } 

这是rollup正在返回。 (实际)

 import { map } from 'lodash'; import Promise from 'bluebird'; function fakePromise (str) { return stupidReference(str) } export default fakePromise; 

这是我希望汇总返回。 (预期)

 import Promise from 'bluebird'; function stupidReference (str) { return Promise.resolve(str) } function fakePromise (str) { return stupidReference(str) } export default fakePromise; 

我的印象是,汇总会摆脱你在项目中不需要的所有依赖。 但是你可以看到实际的输出还包含一个不需要的依赖lodash ,而且它也缺less另一个内部函数stupidReference

我很好奇,为什么这不是我所期望的。 我也很好奇,如果我正确使用rollup工具。 如果这不是预期的用途,我真的很想find一个工具,实现我正在寻找的function。 我想提供一个函数(或像01.js以上的文件),只有运行该function所需的代码。

更新1

不确定我的代码发生了什么,但汇总站点上的编辑器能够拉入另一个文件并跟随树。 这里有一个链接到我所拥有的。

更新2

我意识到我可能configuration了babel不正确,我安装了下面的两个模块以及添加.babelrcrollup.config.js

 npm i rollup-plugin-babel babel-preset-es2015-rollup --save 

rollup.config.js

 import babel from 'rollup-plugin-babel'; export default { entry: './01.js', plugins: [ babel() ], format: 'es6' }; 

.babelrc

 { "presets": [ "es2015-rollup" ] } 

有了这个更新,相同的输出仍然在产生。

你会踢自己:-)回购有一个错字 – stupidReference拼写stuidReference在几个地方。 修复这些,它捆绑罚款。 (如果Rollup看到一个标识符,它不知道其来源,它认为它是一个全球性的,而不是一个错字)。

Lodash被包括,即使它的依赖函数不包括,因为Rollup不知道Lodash是否有副作用。 一个select是在包中包含Lodash(即使用rollup-plugin-node-resolve ),以便Rollup 可以看到代码,但是请注意, 颤抖的Lodash说起来容易做起来难 ,所以build议使用lodash-es并导入单个文件:

 import map from 'lodash-es/map.js';