在节点模块中手动添加方法

Manually adding method in a node module

我正在为我的网站使用 material-ui,在 npm 上找到的包已经过时,最新版本(在 Github 上找到)。我手动将这行代码添加到他们的主题管理器 class 中,这反映了更改:

setContentFontFamily(newContentFontFamily) {
  if (typeof newContentFontFamily !== "undefined" && newContentFontFamily !== null) {
    this.contentFontFamily = newContentFontFamily;
    this.component = Extend(this.component, this.template.getComponentThemes(this.palette, this.spacing));
  }
},

但是,我的应用程序尚未注册这些更改,当我尝试设置字体时:

ThemeManager.setContentFontFamily('Open Sans, Roboto, sans serif');

控制台给我这个错误:

Uncaught TypeError: ThemeManager.setContentFontFamily is not a function

我正在使用 Browserify 来捆绑我的客户端 'require' 依赖项。这是 Browserify 问题,npm 问题,还是我不了解节点模块的工作原理?

编辑:这是我的 package.json

{
  "name": "FooProject",
  "version": "0.0.0",
  "description": "",
  "dependencies": {
    "highlight.js": "^8.7.0",
    "material-ui": "callemall/material-ui",
    "react": "^0.13.3",
    "react-bootstrap": "^0.24.5",
    "react-highlight": "^0.5.0",
    "react-tap-event-plugin": "^0.1.7",
    "underscore": "^1.8.3"
  },
  "author": "Tina Zheng",
  "devDependencies": {
    "babelify": "^6.1.3",
    "bower": "^1.4.1",
    "browserify": "^11.0.1",
    "gulp": "^3.9.0",
    "gulp-react": "^3.0.1",
    "gulp-reactify": "^3.0.1"
  }
}

您的问题的快速解决方案(除了联系作者并要求他们更新 npm 之外)是使用存储库 url 作为依赖项而不是 npm 模块:

git://github.com/user/project.git#commit-ish

如果存储库在 GitHub 上,您可以使用缩写形式:

"dependencies": {
    "express": "visionmedia/express",
    "mocha": "visionmedia/mocha#4727d357ea"
  }

(docs)

如果直接编辑依赖项,每次重建时它们都会被覆盖。