1.关于 Spartacus 开源项目的码详 peerDependencies
2.udev机制
3.qt-everywhere-opensource-src-4.8.5è¿ä¸ªå
å«qt createå
关于 Spartacus 开源项目的 peerDependencies
通过ng new app创建的Angular应用,自带了个依赖。码详
在客户Storefront中使用Schematics安装了library后,码详本地新建一个空文件夹,码详并执行命令行操作。码详
该文件夹内只有一个node_modules文件夹,码详卡蜜源码其中包含许多js文件和TypeScript的码详.d.ts文件。
在@Spartacus/storefront的码详package.json中,除了tslib的码详dependencies外,还包含了一些在Spartacus项目源代码package.json中定义的码详依赖。
npm能够很好地处理子依赖关系,码详例如,码详招标门户 源码如果某个包依赖于request版本2和其他库,码详但其他库依赖于request版本1,码详生成的码详依赖关系图如下:
这种情况下,some-other-library将拥有自己的请求v1副本,可以独立使用,而不会干扰包的v2副本,这通常是非常理想的。
然而,有一个用例可能会失败:插件。插件包旨在与另一个host包一起使用,即使它并不总是商城盘源码直接使用host包。Node.js包生态系统中存在许多这种模式的例子。
从本质上讲,插件旨在与主机包一起使用,更重要的是,它们旨在与特定版本的主机包一起使用。例如,我的chai-as-promised插件的1.x和2.x版本适用于chai 0.5版本,而3.x版本适用于chai 1.x。
另一个例子是,grunt 0.3.1版本的grunt-contrib-stylus可以与grunt 0.4.0rc4一起使用,但由于删除了API,gge源码论坛在与grunt 0.4.0rc5一起使用时会中断。
假设plugin显式声明了host package的版本号,即使对于确实具有这种直接依赖关系的插件,可能是由于host包提供了实用程序API,在插件的package.json中指定依赖项也会导致依赖关系树包含host包的多个副本。
例如,假设winston-mail 0.2.3在其dependencies中指定了winston: 0.5.x,因为这是对其进行测试的最新版本。
作为应用程序开发人员,使用了winston的最新版本0.6,并将它们放在package.json中。大唐飞鸟源码
一旦运行,将产生winston的两个不同版本。
这种问题的解决方案就是使用peerDependencies。
使用peerDependencies非常简单。在编写plugin时,请确定peerDependencies的host package的版本,并将其添加到package.json中。
现在,当安装chai-as-promised时,chai包将随之被安装。
如果稍后尝试安装另一个仅适用于0.x版本的Chai的Chai插件,将收到错误消息。
udev机制
在Linux系统中,当U盘插入时需要自动打开其目录,但每次挂载点不固定,如/media/sda1和/media/sda4。这时,了解udev机制就显得尤为重要。udev是一个设备管理系统,负责在设备注册后自动生成设备节点。在内核3.2.0版本中,设备注册流程涉及device_create、device_create_vargs、device_register和device_add等函数,它们会触发kobject_uevent和uevent_helper的调用,生成包含ACTION、DEVPATH和SUBSYSTEM等环境变量的uevent事件。
内核启动时会预设一些环境变量,例如TSLIB_TSDEVICE和QTDIR。uevent_helper在内核源码中初始化为"/sbin/hotplug",尽管在系统中可能找不到这个程序,但其在注册设备时会被调用。例如,当USB按键、狗注册或U盘插入时,uevent_helper会配合环境变量,调用call_usermodehelper来创建设备节点。
在嵌入式环境中,udev可能被替换为mdev,特别是对于2.6版本之后的系统。查看 BusyBox 的 mdev.c 和 mdev_main,可以看到设备注册时会生成设备节点,如通过make_device和mknod函数。若要对设备节点进行定制,如自动挂载U盘,就需要解析配置文件/etc/mdev.conf。配置文件的格式定义了设备的权限和自定义操作,例如设置sda[1-9]+设备的挂载与卸载操作。
在实际应用中,公司文件系统的配置可能与标准流程不同,例如通过修改/etc/udev/scripts/mount.sh来统一处理U盘挂载。只需修改相关部分,将挂载点从"/media/$name"改为"/upan",以确保所有U盘都能被挂载到统一目录下,实现自动挂载功能。
总之,udev机制是Linux设备管理的关键部分,通过理解其工作原理和配置文件,可以更好地定制设备行为,如实现U盘的自动挂载。在实际操作中,根据设备的注册流程和配置文件,进行适当的调整和定制是实现所需功能的关键。
qt-everywhere-opensource-src-4.8.5è¿ä¸ªå å«qt createå
ä¸é¢æ¯ç¼è¯é项,èªå·±å¯ä»¥ä¿®ä¿®æ¹æ¹./configure-opensource-embeddedarm-xplatformqws/linux-arm-gnueabi-g++-no-webkit-qt-libtiff-qt-libmng-qt-libjpeg-qt-libpng-no-qt3support-nomakedemos-nomakedocs-nomakeexamples-little-endian-host-little-endian-no-xcursor-no-mouse-linuxtp-qt-mouse-tslib-I/usr/local/tslib/include-L/usr/local/tslib/lib-fast-lrt-confirm-licensePS:å¨è§£åå çmkspecs/linux-arm-gnueabi-g++ç®å½ä¸éè¦é ç½®ä¸ä¸ä½ çlinux-arm-gnueabi-g++è·¯å¾,æ好æ¯è®¾ç½®æç»å¯¹è·¯å¾,å¦åå¯è½ä½ é ç½®ç交åç¼è¯å¨æ²¡ææ·»å å°ç¯å¢åééé¢ä¸å¥½~(å¦æé ç½®äºç¯å¢åéçè¯,é£å°±æ²¡å¿ è¦è®¾ç½®äº)æçç»ä½ åèä¸ä¸,å°±æ¯åé äº~##qmakeconfigurationforbuildingwitharm-linux-gnueabi-g++#MAKEFILE_GENERATOR=UNIXTARGET_PLATFORM=unixTEMPLATE=appCONFIG+=qtwarn_onreleaseincrementallink_prlgdb_dwarf_indexQT+=coreguiQMAKE_INCREMENTAL_STYLE=sublibinclude(../common/linux.conf)include(../common/gcc-base-unix.conf)include(../common/g++-unix.conf)#modificationstog++.confQMAKE_CC=arm-linux-gnueabi-gccQMAKE_CXX=arm-linux-gnueabi-g++QMAKE_LINK=arm-linux-gnueabi-g++QMAKE_LINK_SHLIB=arm-linux-gnueabi-g++#modificationstolinux.confQMAKE_AR=arm-linux-gnueabi-arcqsQMAKE_OBJCOPY=arm-linux-gnueabi-objcopyQMAKE_STRIP=arm-linux-gnueabi-stripload(qt_config)æ¥ä¸æ¥æ¯QTCREATEé ç½®å·¥å ·-->é项--->æ建åè¿è¡1.ç¼è¯å¨:ç¹å»æ·»å :"å称"éæ"ç¼è¯å¨è·¯å¾"**/arm-none-linux-gnueabi-g++æ¾å°ä½ çç¼è¯å¨,æè¿éæ¯ç¨ARMçå ¶ä»ä¸å¡«ä¹è¡.2.QtVersions:ç¹å»æ·»å :æ¾å°éè¿æºç ç¼è¯å¥½çqmakeæ件.ä¾å¦:/usr/local/Qt-4.8.6/bin/qmake3.æ建å¥ä»¶:ç¹å»æ·»å :"å称"éæ,éç¹æ¯"ç¼è¯å¨"è·"QTçæ¬",åå«éæ©ååæ·»å ç两项.è°è¯å¨:å¦ææ¯æ¡é¢ç¯å¢é£å°±éæ¡é¢ç,å¦ææ¯å¨åµå ¥å¼ä¸ç,é£ä¸è¦ä¹å¯ä»¥..