【问题标题】:Why does Aurelia install so many dependencies?为什么 Aurelia 会安装这么多依赖项?
【发布时间】:2016-12-15 10:02:51
【问题描述】:

我很想知道为什么当我创建一个新的 Aurelia 项目时,每个项目都会安装 +600 个 node_modules。可以理解,这些模块共同不会占用太多空间,但是所有这些模块都是必需的吗?我的印象是 Aurelia 的目标是帮助开发人员摆脱对 3rd 方库的依赖,所以每个项目都带有大量 3rd 方库转储似乎很奇怪。

【问题讨论】:

  • 这些 node_modules 中有 90% 是构建工具。尽管它们不是必需的,但它们的存在是为了让您的生活更轻松。

标签: aurelia


【解决方案1】:

我的猜测是您是从 CLI 开始您的项目 - 它预设了 HTTP 服务器、ES6/2015、SASS、实时重新加载等。

我创建了干净的 Aurelia 项目并查看了 package.json - 有 5 个依赖项和 34 个开发依赖项。使用上述所有工具在当今的 JS Web 开发中有点标准,从 CLI 生成项目减少了前期设置所需的时间。所有这些功能都有自己的依赖项,这就是node_modules/ 文件夹快速增长的原因。

底线是 - 您可以启动新的 Aureila 项目,但依赖项要少得多。在他们的主页上,您可以找到starter project,只有三个。但这也意味着您将无法使用当今使用的大多数工具。

另外,如果我错了,请纠正我,我没有印象 Aurelia 曾经打算将开发人员从第三方库和模块中转移出来,只是为了现代、快速和不引人注目。

【讨论】:

  • 是的,绝对使用 CLI。我对我的第 3 方声明的困惑来自于在 Hansel 会议纪要上听 Rob Eisenberg 并阅读他的帖子here。我是 Aurelia 的新手,所以我最初的反应是他指的是 3rd 方库,但现在我相信他的意思是核心 Aurelia 框架没有 3rd 方依赖项?
【解决方案2】:

所有现代 Web 框架都有大量工具。原因不分先后——

1.转译 ESNext 或 TypeScript - 如果你想用 Future JavaScript 编写,但要让它在所有浏览器中工作,你需要这一步。 Babel 和 TypeScript 工具都带有额外的东西。如果您想查看覆盖范围(每个人都这样做),还有另一个工具。

2。测试 - 单元测试和端到端测试需要测试框架、测试运行器,如果你想像上面那样编写(esnext 或 TypeScript),你还需要转译。

3.模块加载/捆绑 - Require.js、JSPM/System.js、WebPack 等用于让您的代码在浏览器中真正运行。如果没有模块加载器,您将无法将代码分解为单独的文件。如果没有捆绑器,您将在生产环境中加载大量额外文件。

4.为您的应用程序提供服务 - 如果您想在本地运行您的应用程序,您需要一种方法来提供它并观察变化。

5.调试 - 你想调试吗?现在您需要一种方法来将提供给浏览器的文件重新调试回原始源。

6. Linting - 对代码库进行 Lint 以确保样式一致性。

这些包中的每一个通常都有自己的依赖项,它们也会被拉下。

这种专注于单一焦点的小型软件包的约定可以说比为您做所有事情的大型软件包更好。这允许您删除一个包并将其替换为执行相同操作但以您想要的方式的包。

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多