假设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的拉动下运行吗?
任何指针或示例将不胜感激.谢谢!
解决方法
> .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