我npm install从我的示例项目的根文件夹运行,使用脚本来构建它package.json.
构建需要prepublish脚本中当前的一些转换步骤,但是npm版本4显示一个警告即将发生重大变化,这使我相信新的 prepare构建事件脚本更具有未来性.
C:\code\antlr4ts-json>npm install
npm WARN prepublish-on-install As of npm@5, `prepublish` scripts will run only for `npm publish`.
npm WARN prepublish-on-install (In npm@4 and previous versions, it also runs for `npm install`.)
npm WARN prepublish-on-install See the deprecation note in `npm help scripts` for more information.
...
Run Code Online (Sandbox Code Playgroud)
不幸的是,只需将脚本移动prepublish到prepare中断向后兼容性:如果某人正在npm install使用npm@3,prepare则会默默忽略构建步骤.
升级构建时脚本的最佳做法是什么?理想情况下,我想更新我的,package.json以便npm install适用于任何npm @> = 3,但是另外生成一个明确的错误消息,指示在使用npm @ 3运行时需要npm @> = 4将是完全可以接受的. npm install
Bakground: 我试过包括
"engines": { "npm": ">=4.0.0" },
Run Code Online (Sandbox Code Playgroud)
感谢@toomuchdesign(和其他人),我明白为什么这不符合我的要求; engines只检查我的软件包作为依赖项安装的时间,而不是某些人从源代码构建它.那讲得通.
我将此计划更改的背景跟踪到npm问题#10074,这解释了为什么需要进行重大更改.但是我仍然不清楚如何更好地处理过渡.
Bur*_*ris 11
我找到了一个更好的解决方案check-node-version; 该软件包具有命令行界面,使其易于用于此目的.以下是我建议作为最佳实践的步骤:
npm install -D check-node-version@1,prepublish脚本重命名为prepare,prepublish脚本以处理向后兼容性,并建议升级npm(参见下文.)我的package.json现在看起来像这样:
"scripts": {
"prepare": "npm run antlr4 && tsc",
"prepublish": "check-node-version --npm \">=4\" || npm run prepare",
"antlr4": "rimraf gen && antlr4ts Json.g4 -o gen -visitor",
...
},
"devDependencies": {
"check-node-version": "^1.1.2",
...
Run Code Online (Sandbox Code Playgroud)
用这种方法:
npm install始终运行prepare脚本,即使npm@3已安装.如果npm@5安装(未经测试),这应该可以正常工作.
在npm@3这里甚至有关于升级NPM一个有用的信息,但因为脚本使用|| npm run prepare模拟更高版本的问题,将脚本错误后继续.
如果我后来想要一个硬依赖npm@4,删除该|| npm run prepare部分将导致脚本停止运行npm@3.
以下是构建使用的内容npm@3:
C:\code\antlr4ts-json>npm i
> antlr4ts-json@1.0.6-alpha prepublish C:\code\antlr4ts-json
> check-node-version --npm ">=4" || npm run prepare
node: v6.9.1
npm: v3.10.10
Error: Wanted npm version ">=4" (>=4.0.0)
To install npm, run `npm install -g npm@>=4`
> antlr4ts-json@1.0.6-alpha prepare C:\code\antlr4ts-json
> npm run antlr4 && tsc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1459 次 |
| 最近记录: |