Node.js 包括不必要的依赖项和输出中缺少函数的汇总

Node.js 包括不必要的依赖项和输出中缺少函数的汇总,node.js,ecmascript-6,rollupjs,Node.js,Ecmascript 6,Rollupjs,我第一次使用rollup,它产生了一些意想不到的结果。下面是我示例中的三个文件,以及rollup的输出和我正在寻找的输出类型 我有三个文件01.js,02.js,03.js 01.js 02.js 03.js 这就是罗拉普正在返回的内容。实际的 这就是我希望rollup能够返回的结果。期望 我的印象是,汇总将消除项目中不需要的所有依赖关系。但是,您可以看到,实际输出还包括一个不必要的依赖项lodash,并且它还缺少另一个内部函数StupdReference 我很好奇为什么这没有像我预期的那样起作

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

我有三个文件01.js,02.js,03.js

01.js

02.js

03.js

这就是罗拉普正在返回的内容。实际的

这就是我希望rollup能够返回的结果。期望

我的印象是,汇总将消除项目中不需要的所有依赖关系。但是,您可以看到,实际输出还包括一个不必要的依赖项lodash,并且它还缺少另一个内部函数StupdReference

我很好奇为什么这没有像我预期的那样起作用。我还想知道我是否正确使用了汇总工具。如果这不是预期用途,我真的很想找到一个能够实现我所寻找的功能的工具。我想提供一个函数或类似于上面01.js的文件,并且只提供运行该函数所需的代码

更新1

不确定我的代码发生了什么,但是汇总站点上的编辑器能够拉入另一个文件并跟踪树

更新2

我意识到我可能错误地配置了babel,我安装了下面两个模块,还添加了.babelrc和rollup.config.js

rollup.config.js

B.法律改革委员会


通过这次更新,同样的输出仍在产生。

你会自责:-回购协议有一个拼写错误-stupidReference在几个地方拼写为stuidReference。把那些修好就好了。如果Rollup看到一个不知道其来源的标识符,它会假定它是一个全局标识符,而不是一个拼写错误

Lodash会被包括在内,即使它的依赖函数没有被包括在内,因为Rollup无法知道Lodash是否有副作用。一种选择是在捆绑包中包括Lodash,即使用,以便Rollup可以看到代码,但请注意,因此建议使用Lodash es并导入单个文件:

从“lodash es/map.js”导入地图;
你会自责的:-回购协议有一个拼写错误-StupdReference在几个地方拼写为stuidReference。把那些修好就好了。如果Rollup看到一个不知道其来源的标识符,它会假定它是一个全局标识符,而不是一个拼写错误

Lodash会被包括在内,即使它的依赖函数没有被包括在内,因为Rollup无法知道Lodash是否有副作用。一种选择是在捆绑包中包括Lodash,即使用,以便Rollup可以看到代码,但请注意,因此建议使用Lodash es并导入单个文件:

从“lodash es/map.js”导入地图;
嘿,里奇!我肯定是在踢自己。至于洛达斯,我有点困惑。因为我的构建中不需要lodash,01.js中的任何函数都不使用它,所以它是一个未使用的导入。我们不需要在源代码中包含lodash的map函数,也不需要将它作为汇总创建的捆绑包的npm依赖项。map是一个未使用的导入,只是打开了一个GH–理想情况下它会放弃该说明符,但lodash本身并不是,因为它可能会产生副作用。有一些关于更积极地抛弃这些副作用的选项的讨论,但这是非常棘手的,我想要的是有点不同。我感兴趣的是构建一个工具,将特定的文件/函数分解成一个单独的节点模块,构建一个相关的packages.json文件。忽略未使用的DEP和潜在的副作用。我觉得汇总只是一种方式,它会有所帮助,并且有一种方式可以知道哪些变量没有被使用。需要更多的研究。嘿,里奇!我肯定是在踢自己。至于洛达斯,我有点困惑。因为我的构建中不需要lodash,01.js中的任何函数都不使用它,所以它是一个未使用的导入。我们不需要在源代码中包含lodash的map函数,也不需要将它作为汇总创建的捆绑包的npm依赖项。map是一个未使用的导入,只是打开了一个GH–理想情况下它会放弃该说明符,但lodash本身并不是,因为它可能会产生副作用。有一些关于更积极地抛弃这些副作用的选项的讨论,但这是非常棘手的,我想要的是有点不同。我感兴趣的是构建一个工具,将特定的文件/函数分解成一个单独的节点模块,构建一个相关的packages.json文件。忽略未使用的DEP和潜在的副作用。我觉得汇总只是一种方式,它会有所帮助,并且有一种方式可以知道哪些变量没有被使用。需要更多的研究。
import { fakePromise } from './02'

export default fakePromise
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')
}
import Promise from 'bluebird'

export function stupidReference (str) {
  return Promise.resolve(str)
}
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;
npm i rollup-plugin-babel babel-preset-es2015-rollup --save
import babel from 'rollup-plugin-babel';

export default {
  entry: './01.js',
  plugins: [ babel() ],
  format: 'es6'
};
{
  "presets": [ "es2015-rollup" ]
}