5

我有一个使用旧版本的react-bootstrap的项目

在我的 package.json 我有

"react-boostrap": "^0.13.3"

那里有一个导致问题的错误,它的修复非常简单,所以我分叉了 repo,回滚到 v0.13.3 的提交:

git reset --hard <commit-hash>

修复了我的 1 行,然后强制推回我的前叉。

然后我在主项目中更新了我的 package.json 以指向我的 fork:

"react-boostrap": "mygithubrepo/react-bootstrap"

我删除了 node_modules 目录并运行sudo npm cache clear以确保一切都很好而且新鲜。然后我跑了npm install,它确实从 repo 中拉下了我的 react-bootstrap 版本。

但是,它现在下拉的版本与 node_modules 文件夹中的格式不同。从本质上讲,它似乎并没有构建项目。

如果我使用:

"react-boostrap": "^0.13.3"

然后 node_modules 文件夹包含构建的代码,如下所示:

+node_modules
--+react_bootstrap
----+utils
-----Acordion.js
etc.....

但是当我将它指向我的 repo 的分叉版本时:

"react-boostrap": "mygithubrepo/react-bootstrap"

然后我只得到节点模块中的源代码库结构(它似乎没有被构建)

+node_modules
--+react_bootstrap
----+docs
----+ie8
----+src
-------+utils
--------Acordion.jsx
........etc.....
----+tools
etc.....

现在,当我使用 react bootstrap 引用它时require('react-bootstrap')它不起作用(因为尚未构建文件)。

那么我指向 npmjs 上的文件而不是 github 上的文件有什么不同呢?react-bootstrap package.json 中没有任何 prepublish/publish/postpublish 脚本,所以我不确定他们是否在推送到 npmjs 之前手动构建了它。

npm install基本上,当我在我的主项目上运行时,我需要自动构建我的分叉版本。有任何想法吗?

编辑 1

npm install根据乔纳森穆勒的回答,在更新我的 react-bootstrap 分支后,我在主项目 repo 上运行的错误如下:

>> Local Npm module "grunt-contrib-uglify" not found. Is it installed?
>> Local Npm module "grunt-amd-wrap" not found. Is it installed?
>> Local Npm module "grunt-react" not found. Is it installed?
>> Local Npm module "grunt-contrib-clean" not found. Is it installed?
>> Local Npm module "grunt-contrib-watch" not found. Is it installed?
>> Local Npm module "grunt-contrib-copy" not found. Is it installed?
>> Local Npm module "grunt-browserify" not found. Is it installed?
>> Local Npm module "grunt-contrib-requirejs" not found. Is it installed?
Warning: Task "clean:amd" not found. Use --force to continue.

Aborted due to warnings.
4

1 回答 1

2

在您的 package.json 中,添加以下内容以在您 npm install 时构建它:

{
  "scripts": {
    "postinstall": "grunt build"
  }
}

这样安装后会生成包

然后让它与 require 一起工作,将以下内容添加到 package.json 中:

{
  "main": "amd/react-bootstrap.js"
}

因此,当您“要求”它时,可以找到正确的文件。否则它会搜索 index.js

于 2015-09-10T10:58:21.860 回答