在 Mint 下安装 pencil,折腾半天,发现它对 firefox 的支持,只到 46.0 。本来打算研究下怎么用 xulrunner 来跑 pencil 这个 web 应用,查看项目资源的时候,发现原来他们在筹划用 node.js 来重写项目。虽然还没有正式发布,但是貌似已经可以用了...有点猴急想试试,遂有了后面的尝试。

1. node.js 的安装包

作为 node.js 的应用包,首先应该具备的就是 package.json。下面是这次尝试的 app 中 package.json 的部分内容。

{
"name": "Pencil",
"productName": "Pencil",
"description": "An open-source GUI prototyping tool that is available for ALL platforms.",
"version": "3.0.0-beta.2",
"author": {
"name": "Evolus",
"url": "http://evolus.vn",
"email": "contact@evolus.vn"
},
"maintainers": [
{
"email": "an.duong@evolus.vn",
"name": "dgthanhan"
},
{
"email": "ngtdungnt@gmail.com",
"name": "Nguyen Tien Dzung"
}
],
"copyright": "Copyright © 2008-2016 Evolus. All rights reserved.",
"homepage": "http://pencil.evolus.vn",
  ...
  "dependencies": {
    "archiver": "1.0.0",
    "electron-squirrel-startup": "1.0.0",
    "less": "2.7.1",
    "lodash": "4.13.1",
    "moment": "2.13.0",
    "nugget": "2.0.0",
    "q": "1.4.1",
    "rimraf": "2.5.2",
    "tmp": "0.0.28",
    "unzip2": "0.2.5"
  },
...
}

从中,我们可以看到这个应用的一些基本信息,如作者版本,license,版本,依赖关系等等。

2. npm

npm 的全称是 node package manager,即 node.js 的安装包管理工具。这类似与红帽子里面的 yum ,以及 debian 里面的 apt-get。

npm 我是用 apt-get 装的,无新意。或者使用脚本安装也可以:

curl http://npmjs.org/install.sh | sh

然后,安装上面 pencil 中的 app。安装使用 npm install指令,该指令会在当前目录中搜索 package.json 文件。

安装完之后,出现的第一个问题是,无法连接到 registry。

npm ERR! Error: failed to fetch from registry:

搜了一下,原来是我大天朝把官方的库地址给墙了的缘故;换源后问题解决。具体是,编辑 "~/.npmrc"文件,并将第一行替换为:

registry = https://r.cnpmjs.org/

更换源之后,继续安装,又出现下面类似问题:

npm ERR! Error: No compatible version found:

提示需要的依赖包版本无法匹配,查看 package.json 。看到关于这个包的定义:

    "nugget": "^2.0.0",

而 cnpmjs 提供的包里面,nugget 有以下版本:

npm ERR! message Valid install targets:
npm ERR! message ["1.6.2","2.0.0","1.6.1","1.5.5","1.6.0","1.5.4","1.5.3","1.5.2","1.5.1","1.5.0","1.4.1","1.4.0","1.3.0","1.2.0","1.1.3","1.1.2","1.1.1","1.1.0","1.0.0"]

那么 “^” 是什么意思呢?在 stackflow 上找到一篇问答,摘录如下:

  • ~version Allows patch-level changes if a minor version is specified on the comparator
  • ^version Allows changes that do not modify the left-most non-zero digit in the [major,minor,patch] tuple
  • version Must match version exactly
  • >version Must be greater than version
  • >=version etc
  • <version
  • <=version
  • 1.2.x 1.2.0, 1.2.1, etc., but not 1.3.0
  • http://sometarballurl (this may be the URL of a tarball which will be downloaded and installed locally
  • * Matches any version

那么,使用 ^ 意味着,这个代码包的版本必须大于等于指定版本,且主版本号不能改变。所以,被选有 2.0.0 的,那为什么没法匹配呢?且先不管,我这里的做法是,直接改为固定版本,及去掉 “^”。然后,依赖关系检查,以及代码包下载,顺利完成。

安装的最后,跳出如下提示:

npm ERR! Not compatible with your version of node/npm: archiver@1.0.
npm ERR! Required: {"node":">= 0.10.0"}
npm ERR! Actual: {"npm":"1.1.4","node":"0.6.12"}

node 版本不匹配。

猝。

3. nvm, node version manager

在刚查阅的各种资料中,找到有个叫 nvm 的家伙。可以支持系统安装多个版本的 node.js , 并可以在各个版本间切换。如此的话,使用更高版本的 node 也就没问题了。

有空再试。

npm 使用记录的更多相关文章

  1. npm 错误记录

    npm run dev iview-weapp@1.1.0 dev /Users/Jovins/Desktop/小程序/iview-weapp gulp --gulpfile build/build- ...

  2. 好用的npm模块记录

    标签: node node盛行的今天,前端开发已经离不开npm模块的使用,大名鼎鼎的如gulp,webpack等,此处不多说,除了它们有那么几个常用的npm模块是我喜欢并依赖它的,下面就是我平时工作中 ...

  3. phonegap3.5了结

    搞了三天的phonegap3.5.最后怎么搞都搞不好了.修改了www中的index.html的内容,clean也不行,在node.js中cordova build也不行. 反正就是apk没有更新啦.至 ...

  4. winston日志管理2

    上次讲到 Exceptions  例外 Handling Uncaught Exceptions with winston 使用winston处理未捕获的异常(这个如果对于异步,我不是很喜欢用) 使用 ...

  5. 关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用

    关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用   工作环境:window下 在一切的最开始,安装node.js (中文站,更新比较慢http://nodejs.cn/) ...

  6. 关于npm --save还是-save的横岗数量的细节的记录

    最近又开始鼓捣npm了,所以得稍微记录一下. 首先是npm install xxx --save 和 npm install xxx -save这两的区别(注意加粗的部分,横杠数不一样).当我搜索-- ...

  7. Centos下Nodejs+npm环境-部署记录

    公司的一个项目上线,需要用到Nodejs和npm环境,这里记录下安装过程,方便回看同时供大家参考. 1)yum安装方式(版本比较老点,v5.12.0 + 3.8.6) 需要在centos中添加epel ...

  8. npm包发布记录

    下雪了,在家闲着,不如写一个npm 包发布.简单的 npm 包的发布网上有很多教程,我就不记录了.这里记录下,一个复杂的 npm 包发布,复杂指的构建环境复杂. 整个工程使用 rollup 来构建,其 ...

  9. 【NPM】使用问题记录

    [NPM]使用问题记录 =========================================================================== 1.MSBUILD : ...

随机推荐

  1. 我们为什么要使用maven,公司推行maven杂谈

    最近在公司内推荐使用maven,推荐一个落后于业内十年的技术,实在没什么好说的,可是没想到遇到了前所未有的阻力,总是听到各种各样的质疑,我就闹不明白了,推行这个东西是为了更规范的管理项目成果,方便大家 ...

  2. SqlServer--聚合函数

    --聚合函数默认把整个表中的数据当做"一组",然后才进行的统计. select * from NewPerson --统计出所有人的年龄的总和 select sum(age) as ...

  3. Linux下开启关闭SeLinux

    SELinux (Security-Enhanced Linux) in Fedora is an implementation of mandatory access control in the ...

  4. Symantec Backup Exec Agent For Linux防火墙问题

    如果在Unix或Linux安装配置好了Symantec Backup Exec Agent For Linux,但是在Symantec Backup Exec服务端无法访问Symantec Backu ...

  5. MYSQL服务器my.cnf配置文档详解

    MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...

  6. 为什么基于TCP UDP服务的一些简单服务端口号都是奇数

    TCP是有NCP(网络控制协议)派生出来的,NCP是单工的,通信需要两个链接,所以会预留奇偶端口号.当TCP/UDP成为传输层协议,每个程序只是用一个端口号,且使用奇端口号.

  7. .replace(R.id.container, new User()).commit();/The method replace(int, Fragment) in the type FragmentTransaction is not app

    提示错误:The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arg ...

  8. 常用算法——排序(三)

    希尔排序法 希尔排序又称为缩小增量排序,也属于插入排序类的算法,是对直接插入排序的一种改进. 基本思想就是:将需要排序的序列划分为若干个较小的序列,对这些序列进行直接插入排序,通过这样的操作可使用需要 ...

  9. Apache、nginx配置的网站127.0.0.1可以正常访问,内外网的ip地址无法访问,谁的锅?

    最近做开发,发现一个比较尴尬的问题.因为我是一个web开发者,经常要用到Apache或者nginx等服务器软件,经过我测试发现,只要我打开了adsafe,我便不能通过ip地址访问我本地的网站了,比如我 ...

  10. Bootstrap CSS 表单

    表单布局 Bootstrap 提供了下列类型的表单布局: 垂直表单(默认) 内联表单 水平表单 垂直或基本表单 基本的表单结构是 Bootstrap 自带的,个别的表单控件自动接收一些全局样式.下面列 ...