我已经升级到最新的稳定后node和npm,我试过npm install moment --save.它package.json使用^前缀保存条目.以前,它是一个~前缀.
npm?~和之间有什么区别^?Bower使我能够使用以下语法指定包的版本要求:
"dependencies": {
"<name>": "<version>",
},
Run Code Online (Sandbox Code Playgroud)
但我一直无法找到用于该语法的语法<version>.我知道我可以指定版本:
">1.0.0"">=1.0.0""1.0.0 - 2.0.0".我也知道有一个包含代字号的通用版本语法:"~1.0.0".但我不确定它是什么意思,是否与它相同"=1.0.0".
我也有兴趣知道我是否能够指定多个非连续版本,例如完全1.0.3加上大于1.5.0等的版本等...
所以,我以前多次使用 Parcel,我从来没有遇到过问题。这一次它抛出了一些关于 SemVer 版本控制的愚蠢错误,我真的很想找到解决这个问题的解决方案。
我开始了新项目:安装了 npm w/ npm init(没有其他选项),然后安装了 Parcel npm install --save-dev parcel-bundler,然后创建了我的文件夹结构:
--node_modules
--index.html
--index.js
这是我的 package.json:
{
"name": "playground",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "parcel index.html"
},
"author": "",
"license": "ISC",
"devDependencies": {
"parcel-bundler": "^1.12.4"
}
}
Run Code Online (Sandbox Code Playgroud)
我已经配置了默认的 npm 脚本来运行包:"dev": "parcel index.html"并运行它。一切正常,但是当我通过<script src="/index.js"></script>它在 index.html 中连接我的 index.js 时,它会抛出很大的错误,说:
Run Code Online (Sandbox Code Playgroud)D:\workingSpace\playground\index.js: Invalid Version: undefined at new SemVer (D:\workingSpace\playground\node_modules\@babel\preset-env\node_modules\semver\semver.js:314:11) at compare (D:\workingSpace\playground\node_modules\@babel\preset-env\node_modules\semver\semver.js:647:10) at lt (D:\workingSpace\playground\node_modules\@babel\preset-env\node_modules\semver\semver.js:688:10) at D:\workingSpace\playground\node_modules\@babel\preset-env\lib\index.js:276:22 at Object.default (D:\workingSpace\playground\node_modules\@babel\helper-plugin-utils\lib\index.js:22:12) at …
foo该命令将安装哪个版本的软件包?
npm install foo@next
Run Code Online (Sandbox Code Playgroud)
该的package.json和semver文档不提next.
通常,bower.json文件指定一些依赖关系,但通常表达这些依赖关系,以便它们允许使用一系列版本的bower包(例如>=1.0,这意味着任何高于1.0的版本).
我有一个自动化流程,需要立即找到该系统上实际安装的bower包的版本.
如何以编程方式(仅版本本身)找到它,理想情况下使用标准的Unix命令行工具/ bower命令?
bower info <thepackagename>并没有表明这一点-它显示了什么是当前可从凉亭库信息(例如,即使我做bower info apackageIdonthaveinstalled它仍然会显示一个包含版本号的有效的JSON结构).
cat bower_components/thepackagename/bower.json | node_modules/json/lib/json.js version适用于某些软件包(假设json安装了npm软件包),但并非全部(例如jquery 2.2.0的bower软件包不包含bower.json).
在编写bower.json时,您可以在依赖项中指定版本号.有时我看到人们写作
{
...
"devDependencies" : {
"grunt" : "~0.3.13",
}
}
Run Code Online (Sandbox Code Playgroud)
究竟是什么意思?为什么不写> = 0.3.13?
这是某种最佳做法吗?
我正在学习如何使用http://semver.org/中名为"语义版本控制"的规则来分配和增加版本号.
在其所有规则中,第一个规则说:
使用语义版本控制的软件必须声明一个公共API.此API可以在代码本身中声明,也可以严格存在于文档中.无论如何,它应该是精确和全面的"
我对"公共API"感到困惑.它指的是什么?
我正在阅读版本控制npm,显然它提供了一个很好的方便命令来破坏你的软件包版本.
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease]
Run Code Online (Sandbox Code Playgroud)
抢鲜
让我们说你的包从版本开始 0.0.0
npm version prerelease => 0.0.1-0
npm version prerelease => 0.0.1-1
基本上只是破折号之后的数字
的prepatch
从0.0.0使用pre [major | minor | patch]开始代替......
npm version prepatch => 0.0.1-0
npm version preminor => 0.1.0-0
npm version premajor => 1.0.0-0
补丁
从0.0.0使用补丁开始......
npm version patch => 0.0.1
npm version patch => 0.0.2
我理解了碰撞主要版本和补丁版本的规则,但之前版本化事物的标准惯例是1.0.0什么?
在Node.js项目中,我不清楚将包升级到主要版本的正确工作流程是什么。
假设我正在安装stylelint:npm install --save stylelint默认情况下,在我的package.json 中放入字符串"stylelint": "^8.4.1"这意味着如果我想用 更新它npm update,我将只获得次要版本和补丁版本 (8.4. 2 可以,8.5.0 可以,9.0.0 不行)。
如果我检查npm outdated并发现我可以更新到 9.0.0,则npm update由于上述限制而无法正常工作。
那么,如果我想升级,我应该怎么做?
我是否需要手动将package.json修改为 stylelint 版本 ^9.0.0,删除node_modules目录并重新运行npm install?
或者我可能只需要删除^角色才能让它npm update完成它的工作?
要采用的常见/最佳实践是什么?
谢谢
node.js ×5
npm ×5
bower ×3
javascript ×2
versioning ×2
json ×1
node-modules ×1
npm-install ×1
package.json ×1
parcel ×1
updates ×1