【问题标题】:Best practice of loading a npm module that is not main加载非 main 模块的最佳实践
【发布时间】:2017-03-05 13:47:08
【问题描述】:

当我使用 npm install jquery 拉入 jQuery 时,我可以使用例如加载它们像 var jQuery = require('jquery') 这样的 Webpack。

这将检查 node_modules 中的模块,对于 jQuery,"main": "dist/jquery.js" 中包含一个 package.json。

到目前为止一切都清楚了,不需要像require('../node_modules/jquery/dist/jquery.js')那样给出具体的路径。

但是假设我需要加载 jQuery 的缩小版或精简版,它包含在同一个 /dist 目录中。

我的想法是:

  1. 编辑 package.json 文件的主条目,这不是很好,因为如果我使用 npm 拉入新版本,它将被覆盖
  2. 为 Webpack 提供文件的完整路径,例如 require('../node_modules/jquery/dist/jquery.min.js')

Bot 方式感觉不太干净。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: jquery node.js module npm loading


    【解决方案1】:

    如果你真的想这样做,那么你可以这样做require('jquery/some/other/file')。在您的特定情况下,我不确定您为什么要加载缩小版本;如果这是一个前端项目,大概你会缩小最终的捆绑包。

    【讨论】:

    • 缩小版只是一个例子,还有很多有用的用例,比如超薄版。
    • 很公平。在我看来,如果一个模块想向你公开一些东西,它会的。不过,我很欣赏您认为存在有效的用例,在这种情况下,我的回答中显示的方法是我所看到的方法,并且似乎是“最好的”。你是对的,你不想修改 package.json。但是,您可以分叉包,修改 package.json 以指向 slim 版本并安装它。有人甚至可能已经这样做了——值得搜索 npm。
    猜你喜欢
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    相关资源
    最近更新 更多