当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 为什么npm不能在npm上正确地从包的fork中构建依赖?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我有一个使用旧版本 react-bootstrap的项目 在我的package.json我有 "react-boostrap": "^0.13.3" 并且有一个错误导致问题,它的修复非常简单所以我分叉了repo,回滚到v0.13.3的提交做: git reset --hard c
我有一个使用旧版本 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.....

但当我把它指向我的分裂版本的回购时:

"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

网友评论