在我的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.....
但当我把它指向我的分裂版本的回购时:
"react-boostrap": "mygithubrepo/react-bootstrap"
然后我得到节点模块中的源代码库结构(它似乎没有构建)
+node_modules --+react_bootstrap ----+docs ----+ie8 ----+src -------+utils --------Acordion.jsx ........etc..... ----+tools etc.....
现在,当我使用require(‘react-bootstrap’)引用react bootstrap时,它不起作用(因为文件尚未构建).
那么我指向npmjs上的文件而不是github上的文件有何不同?在react-bootstrap package.json中没有任何preublish / publish / postpublish脚本,所以我不确定他们是否在推送到npmjs之前手动构建它.
基本上,当我在主项目上运行npm install时,我需要自动构建我的分叉版本.有任何想法吗?
编辑1
根据Jonathan Muller的回答,在更新我的react-bootstrap的fork后,我在主项目repo上运行的npm安装错误:
>> 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.在你的package.json中,添加以下内容以在你安装它时构建它:
{ "scripts": { "postinstall": "grunt build" } }
这样,包将在安装后构建
然后,为了使它与require一起使用,将以下内容添加到package.json:
{ "main": "amd/react-bootstrap.js" }
因此,当您“需要”它时,可以找到正确的文件.否则搜索index.js