摘要:如何選擇就如果上面所有,需要打包進生產環境就保存到,只是在開發或者打包的時候使用的就保存到即可。提示不能發布當前版本解決方案不能發布已經發布的版本,修改一下版本號就可以了想不到了,想到了再寫資源項目
0x001 概述
本篇文章承接上文,記錄的是一些使用過程中的疑惑
0x001 墻的原因使得包下載太慢解決方案:使用淘寶cnpm,推薦使用cnpm,因為如果修改npm倉庫,將會導致無法發布包。
$ npm install -g cnpm --registry=https://registry.npm.taobao.org /usr/local/bin/cnpm -> /usr/local/lib/node_modules/cnpm/bin/cnpm + cnpm@5.1.1 updated 4 packages in 10.035s $ cnpm install lodash0x002 無法安裝全局包,提示EACCES ,沒有權限
解決方案:推薦第一種,簡單!
第一種:給全局包安裝路徑權限
$ npm config get prefix /usr/local $ sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
第二種:修改全局包安裝路徑到有權限的地方
$ mkdir ~/.npm-global $ npm config set prefix "~/.npm-global" $ export PATH=~/.npm-global/bin:$PATH $ source ~/.profile0x003 全局包和本地包的區別以及如何抉擇
本質上是沒有差別的,只是一個裝在了全局文件夾,一個裝在了項目文件夾。全局文件夾中的包到處都可以引用,而裝在項目文件夾中的包只有該項目才可以引用(其實都可以引用),以下做實驗來演示
新建文件夾0x007-local-global-diff1,0x008-local-global-diff2,0x009-local-global-diff3,0x010-local-global-diff4,并且使用命名空間做包名
$ mkdir 0x007-local-global-diff1 $ mkdir 0x008-local-global-diff2 $ mkdir 0x009-local-global-diff3 $ mkdir 0x010-local-global-diff4
編寫并發布@followwinter/0x007-local-global-diff1@1.0.0
$ cd 0x007-local-global-diff1 $ npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. package name: (0x007-local-global-diff1) @followwinter/0x007-local-global-diff1 version: (1.0.0) description: entry point: (index.js) test command: git repository: keywords: author: license: (ISC) About to write to /MY_PROJECT/PROJECT_OWN/NodeJS/npm/0x007-local-global-diff1/package.json: { "name": "@followwinter/0x007-local-global-diff1", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "author": "", "license": "ISC" } Is this ok? (yes) $ vim index.js // index.js exports.printMsg = function() { console.log("This is a message from the @followwinter/0x007-local-global-diff1@1.0.0 package"); } $ npm publish --access public + @followwinter/0x007-local-global-diff1@1.0.0
安裝并引用@followwinter/0x007-local-global-diff1@1.0.0
$ cd 0x008-local-global-diff2 $ vim index.js $ npm install @followwinter/0x007-local-global-diff1 npm WARN saveError ENOENT: no such file or directory, open "/MY_PROJECT/PROJECT_OWN/NodeJS/npm/0x008-local-global-diff2/package.json" npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN enoent ENOENT: no such file or directory, open "/MY_PROJECT/PROJECT_OWN/NodeJS/npm/0x008-local-global-diff2/package.json" npm WARN 0x008-local-global-diff2 No description npm WARN 0x008-local-global-diff2 No repository field. npm WARN 0x008-local-global-diff2 No README data npm WARN 0x008-local-global-diff2 No license field. + @followwinter/0x007-local-global-diff1@1.0.0 added 1 package in 2.361s $ vim index.js // index.js var myModule = require("@followwinter/0x007-local-global-diff1"); console.log(myModule); myModule.printMsg(); $ node index.js { printMsg: [Function] } This is a message from the @followwinter/0x007-local-global-diff1@1.0.0 package
更新@followwinter/0x007-local-global-diff1@1.0.0版本
$ cd 0x007-local-global-diff1/ $ vim index.js // index.js exports.printMsg = function() { console.log("This is a message from the @followwinter/0x007-local-global-diff1@1.0.2 package"); } $ vim package.js // package.js { "name": "@followwinter/0x007-local-global-diff1", "version": "1.0.2", "description": "", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "author": "", "license": "ISC" } $ npm publish --access public + @followwinter/0x007-local-global-diff1@1.0.2
全局安裝新版本并引用
$ cd 0x009-local-global-diff3/ $ npm install @followwinter/0x007-local-global-diff1 -g + @followwinter/0x007-local-global-diff1@1.0.2 $ vim index.js // index.js var myModule = require("@followwinter/0x007-local-global-diff1"); console.log(myModule); myModule.printMsg(); $ node index.js { printMsg: [Function] } This is a message from the @followwinter/0x007-local-global-diff1@1.0.2 package
運行0x008-local-global-diff2,驗證全局和本地的引用順序
$ cd 0x008-local-global-diff2 $ node index.js This is a message from the @followwinter/0x007-local-global-diff1@1.0.0 package
0x010引用0x008中的node_modules中的0x007
$ cd 0x010-local-global-diff4/ $ vim index.js // index.js var myModule = require("/MY_PROJECT/PROJECT_OWN/NodeJS/npm/0x008-local-global-diff2/node_modules/@followwinter/0x007-local-global-diff1"); console.log(myModule); myModule.printMsg(); $ node index.js { printMsg: [Function] } This is a message from the @followwinter/0x007-local-global-diff1@1.0.0 package
所以包的查找順序是
- 項目的`node_modules`文件夾 - 全局的`node_modules`文件夾
但是都可以找到就是,主要是查找路徑和順序的問題,而關于如何抉擇存在哪呢?考慮的問題有一下幾點
是否在意全局文件的占用問題,全局文件不手動刪除會一直存在,占用磁盤空間
是否在多個項目使用不同版本?版本之間還有沖突?如果是這樣,推薦還是保存在本地
是否有命令行功能?如果有推薦安裝在全局,因為安裝本地調用需要調整調用路徑,很麻煩
0x004 dependencies和dependencies-dev節點的區別以及如何抉擇區別:沒有啥區別,只有語義上的區別,dependencies一般說的是項目運行需要的包,或者說需要打包進生產環境的包,比如jQuery、lodash之類,而dependencies-dev一般說的是開發需要用的包,比如webpack、gulp之類,在生產環境中不需要打包。
如何選擇就如果上面所有,需要打包進生產環境就保存到dependencies,只是在開發或者打包的時候使用的就保存到dependencies-dev即可。
npm ERR! publish Failed PUT 403 npm ERR! code E403 npm ERR! You cannot publish over the previously published version 1.0.2. : @followwinter/0x007-local-global-diff1 npm ERR! A complete log of this run can be found in: npm ERR! /Users/FollowWinter/.npm/_logs/2017-09-10T14_01_59_753Z-debug.log
解決方案:不能發布已經發布的版本,修改一下版本號就可以了
0x006 想不到了,想到了再寫 0x007 資源項目github
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/88492.html
摘要:概述本篇文章承接上文,記錄的和版本在包管理方面的異同,基于閱讀官方原文整理簡化。此時的文件夾如下所示包的復制和取消復制假設我們有一個項目依賴添加依賴依賴,此時添加依賴依賴,此時升級依賴依賴,此時升級依賴依賴,此時執行查看文件夾資源項目 0x000 概述 本篇文章承接上文,記錄的v2和v3版本在包管理方面的異同,基于閱讀官方原文整理簡化。 0x001 v2管理方式 假設有模塊A、B、C,...
摘要:概述本篇文章承接上文,記錄的是如何發布自己的模塊編寫模塊新建項目并初始化編寫模塊代碼發布模塊測試模塊命名空間每個人都可以發布自己的包,難免會有包名相同的情況,如果想要使 0x001 概述 本篇文章承接上文,記錄的是如何發布自己的Node.js模塊 0x002 編寫模塊 新建項目并初始化 $ mkdir 0x005-publish-own-module $ cd 0x005-publis...
摘要:引用并執行如果安裝出錯,比如寫錯了包名,將會發生以下事情命令行報錯使用可以自己新建一個文件編寫也可以直接使用來初始化一個該命令是一個交互式命令,可以根據提示輸入相應信息生成相應的,命令提示后面的中為提示內容,可以選擇一路,然后再去修改。 0x001 概述 npm是一個包管理工具,本文章基本算是對官方文檔的解讀、翻譯和實操筆記,順便說明使用npm中的坑。 0x002 安裝Node.js ...
摘要:概述本篇文章承接上文,記錄的的配置和命令的詳細說明。的配置說明項目名稱,的時候就是使用這個。案例說明版本號,符合的版本規范的版本號,默認從開始。 0x000 概述 本篇文章承接上文,記錄的package.json的配置和npm命令的詳細說明。 0x001 package.json的配置 name: 說明:項目名稱,npm install的時候就是使用這個name。 案例:loda...
0x001 if-else boolean isSuccess = true; if (isSuccess) { System.out.println(success); } if (isSuccess) { System.out.println(success); }...
閱讀 3186·2021-11-24 09:39
閱讀 2923·2021-11-23 09:51
閱讀 887·2021-11-18 10:07
閱讀 3544·2021-10-11 10:57
閱讀 2740·2021-10-08 10:04
閱讀 2999·2021-09-26 10:11
閱讀 1046·2021-09-23 11:21
閱讀 2780·2019-08-29 17:28