six*_*ude 5 node.js npm package.json primeng
我正在为Angular2使用一个非常优秀的小部件库,名为PrimeNg.
假设PrimeNg缺少我需要的一些功能,所以我将repo分叉并提交一个 pull请求以将我的更改转换为主repo.当我在等待pull请求被接受时,我想在我的package.json中包含我的repo的fork.
我尝试从这更新我的package.json:
"dependencies": {
...
"primeng": "1.0.0-beta.13",
...
}
Run Code Online (Sandbox Code Playgroud)
对此:
"dependencies": {
...
"primeng": "JakeSummers/primeng.git#d35f5635a216005018bed89d249816e0f65f68f6",
...
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.
查看我的node_modules目录,我们发现它基本上是空的:
[Aug-30 18:04][node_modules]$ tree primeng/
primeng/
??? LICENSE.md
??? package.json
??? README.md
0 directories, 3 files
Run Code Online (Sandbox Code Playgroud)
在更改为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
Run Code Online (Sandbox Code Playgroud)
进一步看看package.json文档,看起来我可能不会这样做
对于非特定于平台的构建步骤,例如将CoffeeScript或其他语言编译为JavaScript,请使用预发布脚本执行此操作,并使所需的包成为devDependency.
例如:
{ "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"
}
Run Code Online (Sandbox Code Playgroud)
预发布脚本将在发布之前运行,以便用户可以使用该功能而无需他们自己编译.在开发模式下(即本地运行npm install),它也将运行此脚本,以便您可以轻松地进行测试.
primeNg项目的package.json没有预发布脚本,我在讨论是否需要添加一个,如果是这样的话怎么样?该脚本何时运行?它会在git repo的拉动下运行吗?
任何指针或示例将不胜感激.谢谢!
问题是你有 Typescript 中的源代码,但你需要在 npm 包中编译 JS。很遗憾:
\n\n.npmignore文件排除所有打字稿来源;devDependencies,这意味着它不会被npm install --production;拉取prepublish或postinstall自动编译脚本。您可能可以从这些点看出解决方案是什么;几个想法:
\n\n.js文件签入 git 存储库;npm publish作为脚本的一部分进行编译prepublish;npm install:\n\n的一部分.ts文件.npmignore;devDependencies入dependencies;postinstall脚本。第一个选项最容易实现,但也最容易出错 \xe2\x80\x94 很容易忘记在提交之前运行编译步骤,因此您可能希望将其添加到 git hook 中。但到那时,你最好选择第二或第三。
\n\n如果您决定选择第二个并设置使用您自己的 fork,请确保prepublish在安装软件包时执行该脚本。
从 Github 安装*
\n\n看来npm install您提到的是正确的,尽管我主张采用更明确的格式:
// The thing that actually gets saved into `package.json`:\ngithub:${username}/${repository}#${optional-id}\n\n// So the command would be:\nnpm install github:JakeSummers/primeng#d35f5635a216005018bed89d249816e0f65f68f6\nRun Code Online (Sandbox Code Playgroud)\n\n* 还支持从自己的注册表npm和 github以外的地方安装如果你好奇的话,看看这里的“包”是什么
Jas*_*say -2
最简单的事情就是在 master 上制作你想要的代码,然后将其作为普通的 old 列在 package.json 中JakeSummer/primeng。
如果您需要重新运行发布内容,可以在推送代码之前执行此操作,可能是像npm run prepublish. 并非所有软件包都需要它,因此如果没有它,请不要假设。
| 归档时间: |
|
| 查看次数: |
1909 次 |
| 最近记录: |