微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的“包”是什么.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐