- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我知道在 package.json
中做类似的事情:
....
...
"dependencies" : {
"some-node-module" : "*"
}
这是一个坏主意,因为您基本上告诉 Node 始终将此模块更新到其最新版本,即使您的代码可能无法处理除此特定模块的当前版本之外的任何其他版本。
所以我应该做这样的事情:
....
...
"dependencies" : {
"some-node-module" : "3.4.1"
}
这基本上告诉 Node 始终使用我的代码构建的模块版本。
问题
我有一个应用程序,我首先在本地测试过。应用程序现已构建,并使用 package.json 依赖项
,npm
已在本地安装了所有相应的 Node 模块我的应用程序的根文件夹(与全局相反,在一些不起眼的文件夹中,我无法立即访问并且与此应用程序无关 - 我只是不喜欢 Node 模块的全局安装 - 我发现它们..“摘要”)。
鉴于所有 Node 模块现在都安装在本地,我的 package.json 中的 Node 模块依赖项部分现在不是多余的吗?
我的意思是,如果发生某些情况并且 npm 不可用或找不到模块的特定版本怎么办?
独立于动态 Node 模块安装并且首次在本地安装所有内容而不必使用 package.json 依赖项不是最好吗?
最佳答案
npm 安装和更新
"you're basically telling node to always update this module to its latest version"
软件包不会自动更新。 "*"
唯一会出现问题的是当您第一次通过 npm install 安装项目时。或者当您通过 npm update 手动运行更新时.
我个人更喜欢选择模块的特定版本,而不是使用任何通配符,但即使如此,也存在一些问题......这就是 npm Shrinkwrap
存在的原因。
npm 收缩包装
下一个问题:
basically tells node to always use the version of the module that my code was built around
有点正确。假设您使用您最喜欢的模块的 1.2.3
版本,并且 package.json
反射(reflect)了这一点,但模块本身是一个 package.json
对另一个模块的依赖,并且使用"*"
...因此,当您安装时,新的内部依赖项和通配符可能会破坏您认为已“锁定”的模块向下'。
看到问题了吗?硬编码版本控制顶级版本,但不强制执行任何低于该版本的内容...并且如果您依赖的模块作者(或者他们依赖的模块)使用通配符,您不能 100% 确定事情会成功。
要严格执行版本,您需要使用 npm shrinkwrap 。 (文档的链接提供了更多背景信息,如果您的项目使用多个非常简单的模块,这有助于理解。)
现在...你的问题。
你说:
I mean, what if something happens and npm is not available or the specific version of a module can't be found?
根据这个答案的前两部分,现在应该很清楚,在 package.json
中显式列出依赖项并没有什么坏处,因为 Node 不会每次都检查东西应用程序运行的时间。当调用特定操作(安装、更新等)时,npm
使用 package.json
,但即便如此,它也是一个手动触发器。
虽然情况各不相同,但我很少能想象在 package.json
中省略依赖项是一个好主意。如果您最终不得不重建该项目,您就会遇到麻烦。如果这个项目太好了你想分享它,你就会遇到麻烦。哎呀,如果这是为了工作而你想去度假并且需要将其安装在另一台机器上......你就会有麻烦了。
因此,考虑到初始安装后,依赖项不会产生负面影响...使用 --save
或将依赖项添加到 package.json
中。 future 的你会感谢你。 :)
关于Node.js - 本地安装模块时是否需要 package.json 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32311935/
我正在尝试使用 JAXB 从 XSD 生成 java 类。 XSD 是我公司的官方 xsd,因此我无法仅为我的项目修改它们。在该网站上进行了数百次尝试和搜索后,我决定直接提出问题。 我的 XSD 中有
我已经了解了以下链接中的详细信息,但仍然存在何时使用哪个文件的问题?https://docs.npmjs.com/files/package-lock.json 最佳答案 包.json 包含项目的相关
当我在 centos 上运行命令 rpmbuild -bb mypackage.spec 时,出现错误 error: Package already exists: %package debuginf
my.packages 是 src 目录中的自定义原型(prototype)包。 Plone 实例中的数千个项目与其类型一起添加。我想将包重命名为 my.package。通过简单地卸载 my.pack
根据 javadoc 规范,我在相关包的根目录中放置了一个名为 package-info.html 的文档文件。但是,当我在该文件夹上运行 Doxygen 时,不会拾取该文件中的文档。我如何告诉 Do
我已经定义了如下的包: (defpackage :thehilariouspackageofamirteymuri (:nicknames ampack amir teymuri) (:use
我正在思考这个问题: > .packages() > (.packages()) [1] "stats" "graphics" "grDevices" "utils" "datase
我在内存中有一个 System.IO.Packaging.Package(它是一个 WordprocessingDocument)并且想将它流式传输到浏览器以保存它。 Word 文档已被基于 MVC
即使这是我不常发现的东西,在成员之前注释/* package*/的原因是什么? /* package */ final void attach(Context context) { atta
我正在开发我的应用程序,但在添加包以便导入它时,我总是收到此错误。 error: type 'Package.Dependency' has no member 'Package' 这是我的 Pack
install.packages("data.table") trying URL 'https://cran.rstudio.com/bin/macosx/el-capitan/contrib/3.
放置手动创建的插件的最佳位置是什么: a) C:\Users\{UserName}\AppData\Roaming\Sublime Text 3\Packages 或 b) C:\Users\{Use
这是一个有趣的 Perl 行为。 (至少对我来说 :) ) 我有两个包 PACKAGE1 和 PACKAGE2,它们导出具有相同名称的函数 Method1()。 由于将有如此多的包将导出相同的功能,使
package-archives (("marmalade" . "http://marmalade-repo.org/packages/") ("gnu" . "http://elpa.gnu.or
任何人都可以让我知道 package-lock.json 文件的确切用途吗? 尽管许多人提到它用于查看版本化依赖树。 寻找简单易行的解释。 提前致谢。 最佳答案 npm install使用此文件来确保
Python documentation说 Consider this code: import sound.effects.echo import sound.effects.surround fr
我在 ubuntu 上运行 VPS: Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 C
我有这样一个结构 $ tree -h . ├── [1.0K] myproj │ ├── [ 0] index.py │ ├── [ 0] __init__.py │ └──
我正在尝试解压 System.IO.Packaging.Package我从网络服务器收到的。也就是说,我正在使用 System.IO.Packaging.Package.Open(Stream)方法并
关于 package.json 文件中的@types 依赖项,我有一个愚蠢的问题: 在下面的 URL 中解释了应该安装的类型作为运行时依赖 npm install --save @types/loda
我是一名优秀的程序员,十分优秀!