windows 環(huán)境部署私有 npm 源

關(guān)于

sinopia 是一個(gè)零配置帶緩存功能的 npm 包管理工具。

sinopia 有以下幾個(gè)優(yōu)勢(shì)值得關(guān)注:

  1. 不同步拉取 npm 庫,占據(jù)大量硬盤,沒有硬盤被撐爆的問題引矩;
  2. 安裝配置極其簡(jiǎn)單,不需要數(shù)據(jù)庫;
  3. 支持配置上游 registry 配置,一次拉取即緩存旺韭;
  4. 支持 forever 及 pm2 守護(hù)進(jìn)程管理氛谜;

服務(wù)器部署

安裝

> npm install -g sinopia

啟動(dòng)

> sinopia
    warn  --- config file  - C:\Users\jason\AppData\Roaming\sinopia\config.yaml
    warn  --- http address - http://localhost:4873/

打開 http://localhost:4873/ 如果能正常顯示,說明安裝成功区端。

sinopia 啟動(dòng)時(shí)默認(rèn)會(huì)創(chuàng)建 config.yaml 文件值漫,文件路徑可以看輸出的提示。我們將上面路徑的 config.yaml 拷貝到指定盤符的文件夾下织盼,使用 -c 選項(xiàng)指定配置文件杨何,并執(zhí)行命令:

> sinopia -c D:\sinopia\config.yaml

現(xiàn)在我們就可以在指定目錄下運(yùn)行了,以后上傳的 npm 包也會(huì)放在這個(gè)目錄中沥邻。

配置

config.yaml 是用來配置訪問權(quán)限危虱,代理,文件存儲(chǔ)路徑等所有配置信息的:

#
# This is the default config file. It allows all users to do anything,
# so don't use it on production systems.
#
# Look here for more config file examples:
# https://github.com/rlidwka/sinopia/tree/master/conf
#

# path to a directory with all packages
storage: ./storage  //npm包存放的路徑

auth:
  htpasswd:
    file: ./htpasswd   //保存用戶的賬號(hào)密碼等信息
    # Maximum amount of users allowed to register, defaults to "+inf".
    # You can set this to -1 to disable registration.
    max_users: -1  //默認(rèn)為1000唐全,改為-1埃跷,禁止注冊(cè)

# a list of other known repositories we can talk to
uplinks:
  npmjs:
    url: http://registry.npm.taobao.org/  //默認(rèn)為npm的官網(wǎng),由于國(guó)情邮利,修改 url 讓sinopia使用 淘寶的npm鏡像地址
    
packages:  //配置權(quán)限管理
  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated

  '*':
    # allow all users (including non-authenticated users) to read and
    # publish all packages
    #
    # you can specify usernames/groupnames (depending on your auth plugin)
    # and three keywords: "$all", "$anonymous", "$authenticated"
    access: $all

    # allow all known users to publish packages
    # (anyone can register by default, remember?)
    publish: $authenticated

    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: npmjs

# log settings
logs:
  - {type: stdout, format: pretty, level: http}
  #- {type: file, path: sinopia.log, level: info}

# you can specify listen address (or simply a port) 
listen: 0.0.0.0:4873  ////默認(rèn)沒有弥雹,只能在本機(jī)訪問,添加后可以通過外網(wǎng)訪問延届。

客戶端使用

全局安裝 nrm 可以快速修改/切換/增加 npm 鏡像地址:

> npm install -g nrm                  # 安裝nrm
> nrm add XXXX http://XXXXXX:4873     # 添加私有 npm 鏡像地址
> nrm use XXXX                        # 使用私有鏡像地址

注意: 不建議使用私有源安裝公網(wǎng) npm 包剪勿,安裝公網(wǎng) npm 包請(qǐng)使用 taobao 源

  1. 需要安裝私有 npm 包時(shí),請(qǐng)執(zhí)行 nrm use sinopia 切換到私有 npm 源
  2. 安裝公有 npm 包時(shí)方庭,請(qǐng)執(zhí)行 nrm use taobao 切換到淘寶源安裝

nrm 其他命令:

> nrm --help            # 查看nrm命令幫助
> nrm list              # 列出可用的 npm 鏡像地址
> nrm use taobao        # 使用`淘寶npm`鏡像地址

常用 npm 命令

注冊(cè)發(fā)布者

> npm adduser                        # 按提示輸入用戶名厕吉,密碼,郵箱即可

登陸 npm 源

> npm login                          # 按提示輸入用戶名二鳄,密碼赴涵,郵箱即可

發(fā)布 npm 包

> cd D:\projects\yourproject         # 進(jìn)入項(xiàng)目目錄
> npm publish                        # 執(zhí)行發(fā)布命令

刪除 npm 包

> npm unpublish <package>@<version>  # 例: npm unpublish flagwind@1.0.0

刪除發(fā)布者

> npm <owner> rm <user> <package>    # 例: npm admin rm test flagwind

查看模塊所有者

> npm <owner> ls <package>           # 例: npm admin ls flagwind

安裝問題

在 Windows 下直接執(zhí)行這個(gè)命令會(huì)遇到一些問題:

1、Python 沒有安裝或版本不對(duì)

gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.

解決方案: node-gyp 依賴 Python 2.7订讼,安裝 Python2.7 并把它添加到環(huán)境變量 PATH 中。

> npm config set python C:\Python27\python.exe

2扇苞、MSBuild 版本不對(duì)

MSBUILD : error MSB4132: The tools version "2.0" is unrecognized. Available too ls versions are "4.0"

解決方案: node-gyp 需要用到 Visual C++ Build Tools欺殿,百度搜索并安裝即可。

3鳖敷、Windows下不支持 fs-ext 和 crypt3

node-gyp 報(bào)編譯 fs-ext 和 crypt3 失敗的錯(cuò)誤脖苏,安裝 sinopia 時(shí)可以忽略,錯(cuò)誤信息如下:

fs-ext.cc(195): error C3861: 'fcntl': identifier not found [C:\Users\clcaza\AppData\Roaming\npm\node_modules\sinopia\node_modules\.0.6.0@fs-ext\build\fs-ext.vcxproj]

crypt3.cc(5): fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory [C:\Users\clcaza\AppData\Roaming\npm\node_modules\sinopia\node\_modules\.0.2.0@crypt3\build\crypt3.vcxproj]

解決方案: sinopia 依賴于 fs-extcrypt3定踱,但這兩個(gè)包是可選的棍潘,搜索并刪除 sinopia 安裝目錄下所有帶 fs-extcrypt3 字樣的包

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子亦歉,更是在濱河造成了極大的恐慌恤浪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肴楷,死亡現(xiàn)場(chǎng)離奇詭異水由,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赛蔫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門砂客,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人呵恢,你說我怎么就攤上這事鞠值。” “怎么了渗钉?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵彤恶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我晌姚,道長(zhǎng)粤剧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任挥唠,我火速辦了婚禮抵恋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宝磨。我一直安慰自己弧关,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布唤锉。 她就那樣靜靜地躺著坎缭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪策严。 梳的紋絲不亂的頭發(fā)上庇麦,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音晒衩,去河邊找鬼嗤瞎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛听系,可吹牛的內(nèi)容都是我干的贝奇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼靠胜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼掉瞳!你這毒婦竟也來了毕源?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤陕习,失蹤者是張志新(化名)和其女友劉穎霎褐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衡查,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘩欺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拌牲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俱饿。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖塌忽,靈堂內(nèi)的尸體忽然破棺而出拍埠,到底是詐尸還是另有隱情,我是刑警寧澤土居,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布枣购,位于F島的核電站,受9級(jí)特大地震影響擦耀,放射性物質(zhì)發(fā)生泄漏棉圈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一眷蜓、第九天 我趴在偏房一處隱蔽的房頂上張望分瘾。 院中可真熱鬧,春花似錦吁系、人聲如沸德召。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽上岗。三九已至,卻和暖如春蕴坪,著一層夾襖步出監(jiān)牢的瞬間肴掷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工背传, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捆等,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓续室,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親谒养。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挺狰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容