node.js – 如何将我的package.json指向我的primeNg的fork?

我正在为Angular2使用一个非常优秀的小部件库,名为PrimeNg.

假设PrimeNg缺少我需要的一些功能,所以我分叉回购并提交一个
pull request让我的变化进入主力
回购.当我在等待拉取请求被接受时,我想包括我的分支
我的package.json中的repo.

我尝试从这更新我的package.json:

"dependencies": {
    ...
    "primeng": "1.0.0-beta.13",...
}

对此:

"dependencies": {
    ...
    "primeng": "JakeSummers/primeng.git#d35f5635a216005018bed89d249816e0f65f68f6",...
}

不幸的是,这不起作用.

查看我的node_modules目录,我们发现它基本上是空的:

[Aug-30 18:04][node_modules]$tree primeng/
primeng/
├── LICENSE.md
├── package.json
└── README.md

0 directories,3 files

在更改为package.json之前,该目录包含以下内容

primeng/
├── components
│   ├── accordion
│   │   ├── accordion.d.ts
│   │   ├── accordion.js
│   │   └── accordion.js.map
│   ├── autocomplete
│   │   ├── autocomplete.d.ts
│   │   ├── autocomplete.js
│   │   └── autocomplete.js.map
│   ├── breadcrumb
│   │   ├── breadcrumb.d.ts
│   │   ├── breadcrumb.js
│   │   └── breadcrumb.js.map
│   ├── button
│   │   ├── button.d.ts
│   │   ├── button.js
│   │   └── button.js.map
│   ├── calendar
│   │   ├── calendar.d.ts
...
├── LICENSE.md
├── package.json
├── primeng.d.ts
├── primeng.js
├── primeng.js.map
├── prod
│   ├── application.js
│   ├── polyfills.js
│   └── vendor.js
└── README.md

62 directories,195 files

进一步观察package.json docs,看起来我可能不会这样做

For build steps that are not platform-specific,such as compiling CoffeeScript or other languages to JavaScript,use the prepublish script to do this,and make the required package a devDependency.

For example:

{ "name": "ethopia-waza","description": "a delightfully fruity coffee varietal","version": "1.2.3","devDependencies": {
        "coffee-script": "~1.6.3"
      },"scripts": {
        "prepublish": "coffee -o lib/ -c src/waza.coffee"
      },"main": "lib/waza.js"
}

The prepublish script will be run before publishing,so that users can consume the functionality without requiring them to compile it themselves. In dev mode (ie,locally running npm install),it’ll run this script as well,so that you can test it easily.

primeNg项目的package.json没有预发布脚本,我在讨论是否需要添加一个,如果是这样的话怎么样?该脚本何时运行?它会在git repo的拉动下运行吗?

任何指针或示例将不胜感激.谢谢!

Cross-posted this question to the PrimeNg git repo.

解决方法

问题是你在Typescript中有源代码,但你需要在npm包中编译JS.不幸:

> .npmignore文件excludes所有打字稿来源;
> typescript编译器在devDependencies中,这意味着它不会被npm install –production拉出;
>无需自动编译的preublish或postinstall脚本.

您可能会从这些点看到解决方案的内容;几点想法:

>编译并检查生成的.js文件到git仓库;
>使用prepublish脚本编译为npm publish的一部分;
>编译为npm install的一部分:

>从.npmignore删除.ts文件;
>将所有内容从devDependencies拉到依赖项中;
>添加postinstall脚本.

一个选项最容易实现,但也最容易出错 – 在提交之前很容易忘记运行编译步骤,因此您可能希望将其添加到git hook中.但在那时,你最好选择第二或第三.

如果您决定使用自己的第二个并使用自己的fork进行设置,请确保在安装软件包时执行预发布脚本.

从Github安装*

看起来你提到的npm安装是正确的,尽管我会提倡更明确的格式:

// The thing that actually gets saved into `package.json`:
github:${username}/${repository}#${optional-id}

// So the command would be:
npm install github:JakeSummers/primeng#d35f5635a216005018bed89d249816e0f65f68f6

* npm还支持从自己的registry和github以外的地方安装,如果你很好奇的话,看看here的“包”是什么.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...