我意外删除了它,并且自package.json
以来对npm install
做了很多更改。 npm update
或package-lock.json
不再生成package-lock.json
。我尝试清除我的npm缓存和我的nvm缓存,但似乎没有任何工作。我尝试了几个版本的节点(6.10.3节点 - 3.10.10 npm是我希望它可以工作的),它不适用于任何版本。
有没有人有办法强制npm生成import UIKit
import Contacts
import ContactsUI
class ThirdViewController: UIViewController, CNContactPickerDelegate {
@IBOutlet weak var lblDetails: UILabel!
@IBOutlet weak var backTextField: UITextView!
@IBAction func btnSelectContact(_ sender: Any) {
let entityType = CNEntityType.contacts
let authStatus = CNContactStore.authorizationStatus(for:entityType)
if authStatus == CNAuthorizationStatus.notDetermined {
let contactStore = CNContactStore.init()
contactStore.requestAccess(for: entityType, completionHandler: {(success, nil) in
if success {
self.openContacts()
}
else {
print("not authorized")
}
})
}
else if authStatus == CNAuthorizationStatus.authorized {
self.openContacts()
}
}
func openContacts() {
let contactPicker = CNContactPickerViewController.init()
contactPicker.delegate = self as CNContactPickerDelegate
self.present(contactPicker, animated: true, completion: nil)
}
func contactPickerDidCancel(_picker: CNContactPickerViewController) {
_picker.dismiss(animated: true) {
}
}
func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
// when a contact is selected get the full name
let fullName = "\(contact.givenName) \(contact.familyName)"
// the following gets the email address from contact
var email = "No Email Address Found"
if !contact.emailAddresses.isEmpty {
let emailString = (((contact.emailAddresses[0] as AnyObject).value(forKey: "labelValuePair")
as AnyObject).value(forKey: "value"))
email = emailString! as! String
}
// start of adding postaladdresses
var streetAddress = "No Postal Address Found"
if !contact.postalAddresses.isEmpty {
let streetAddressString = (((contact.postalAddresses[0] as AnyObject).value(forKey: "labelValuePair")
as AnyObject).value(forKey: "value"))
streetAddress = streetAddressString! as! String
}
// end of postal addresses
// the following takes the information and populates a label on the view controller
self.lblDetails.text = "\(fullName)\n\(email)\n\(streetAddress)" // \n\(streetName)
}
}
文件?
答案 0 :(得分:65)
默认情况下,只要您运行package-lock.json
,就会更新npm install
。但是,可以通过在package-lock=false
中设置~/.npmrc
来全局禁用此功能。
当全局package-lock=false
设置处于活动状态时,您仍然可以通过运行来强制更新项目的package-lock.json
文件:
npm install --package-lock
此命令是强制package-lock.json
更新的唯一可靠方法。
答案 1 :(得分:11)
评论中回答了这个问题; package-lock.json
是npm
v5及更高版本中的一项功能。 npm shrinkwrap
是您在npm
的所有版本中创建锁文件的方式。
答案 2 :(得分:8)
在npm 6.x中,您可以使用
npm i --package-lock-only
根据https://docs.npmjs.com/cli/install.html
-package-lock-only参数仅更新package-lock.json,而不检查node_modules和下载依赖项。
答案 3 :(得分:1)
正如几个答案所解释的,您应该运行:
npm i
但是否不能解决...
检查您的npm
可执行文件的版本。(对我来说,这是3.x.x,它根本不使用package-lock.json
)
npm -v
它应该至少为5.x.x (introduced package-lock.json文件。)
要在Lunix上更新npm,请遵循these说明。
有关包文件的更多详细信息,请阅读this medium故事。
答案 4 :(得分:0)
每当你运行npm i时都会重新生成package-lock.json。
答案 5 :(得分:0)
如果您的 npm 版本比版本5 低,则安装更高的版本以自动生成 package-lock .json 。
示例:将您当前的 npm 升级到6.14.0版
npm i -g npm@6.14.0
您可以通过
查看最新的 npm 版本列表npm view npm versions
答案 6 :(得分:-1)
当使用本地包时,我发现可靠地重新生成 package-lock.json 文件的唯一方法是删除它,以及在链接的模块和所有相应的 node_modules 文件夹中,让它使用 {{1 }}