NPM — JavaScript 的包管理器
本文主要介绍npm的常用命令,以及如何发布一些常用的js模块化代码到npm上面方便日后的使用,和举例如何把一个vue组件打包发布到npm到最后下载到本地使用的过程。
npm(Node Package Manager)是node的默认模块管理器,一个命令行下的软件,用来安装和管理node模块,同时也可以管理其他开放式的js模块代码。npm有一个好处是除了下载需要的模块外还会帮我们解决依赖关系,同时下载所依赖的模块。
NPM —— JavaScript 的包管理器
npm help
access, adduser, bin, bugs, c, cache, completion, config,ddp, dedupe, deprecate, dist-tag, docs, doctor, edit,explore, get, help, help-search, i, init, install,install-test, it, link, list, ln, login, logout, ls,outdated, owner, pack, ping, prefix, prune, publish, rb,rebuild, repo, restart, root, run, run-script, s, se,search, set, shrinkwrap, star, stars, start, stop, t, team,test, tst, un, uninstall, unpublish, unstar, up, update, v,version, view, whoami
npm help 可以查看所有可使用的命令。
npm常用指令
npm install 名字 //该命令用于安装模块
npm uninstall 名字 //该命令用于卸载模块
npm run 名字 //该命令用于执行脚本
如何用npm发布自己的模块
我们所有下载以及发布的包是存放在这个地址:https://www.npmjs.com/
我们发布一个东西,得要有自己的标识吧,所以得先注册账号。
1.注册用户
npm adduser
运行该命令后会需要你依次输入
Username:
Password:
Email:
2.检查
接下来是需要检查一下有没有注册成功
npm whoami
3.建立package
npm init
//一路回车
name: (dateFormat) datechange
version: (1.0.0)
description: change date format
entry point: (index.js)
test command:
git repository: https://github.com/shuangmuyingzi/dateFormat.git
keywords: dateformat date datechange
author: lingzi
license: (ISC)
About to write to /Users/linziying/Downloads/npm/dateFormat/package.json:{"name": "datechange","version": "1.0.0","description": "change date format","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"repository": {"type": "git","url": "git+https://github.com/shuangmuyingzi/dateFormat.git"},"keywords": ["dateformat","date","datechange"],"author": "lingzi","license": "ISC","bugs": {"url": "https://github.com/shuangmuyingzi/dateFormat/issues"},"homepage": "https://github.com/shuangmuyingzi/dateFormat#readme"
}Is this ok? (yes)
然后会在该目录下多了个package.json文件
添加简单的日期转换格式插件
每次后台数据接口返回的基本是时间戳,往往需要转换成常用的日期格式。那我就以一个简单的日期转换格式小插件为例。把下面代码放到package.json文件同级目录里。
date.js(function(global) {var datechange = (function() {return function (date) {date = date || new Date;if(!(date instanceof Date)) {date = new Date(date);}if (isNaN(date)) {throw TypeError('Invalid date');}let re = date.getFullYear() + '.' + (date.getMonth()+1) + '.' + date.getDate();return re}})()if (typeof define === 'function' && define.amd) {define(function () {return datechange;});} else if (typeof exports === 'object') {module.exports = datechange;} else {global.datechange = datechange;}})(this);
4.发布
npm publish
记得在推之前先登录npm要不然会报错。如果是再次推送同一个项目记得修改版本号。
使用
npm install --save-dev datechange
var datechange = require('datechange');
var now = new Date();
var timeStamp = datechange(now);
OR
<script type="text/javascript" src='date.js'></script><script type="text/javascript">var now = new Date();var timeStamp = datechange(1511350834583);alert(timeStamp)</script>
先安装后使用,包的名称为package.json里的name属性。
具体代码看github:
https://github.com/shuangmuyi...
Vue组件如何上传到NPM
方式一
用webpack把项目打包成JS文件,然后在package.json的 main导出该JS文件。
创建
- vue-cli创建vue简单项目
vue init webpack-simple load-ling-zi
修改package.json
修改
"private": false
npm默认创建的项目是私有的,如果要发布至npm必须将其公开
添加
"main": "dist/build.js"
通过`import loading from 'load-ling-zi'`引用该组件时,项目会自动找到`node_modules/load-ling-zi/dist/build.js`
在src加入组件代码App.vue, 并创建我们的导出文件index.js。
在index.js中添加:import load from './App.vue' export default load //global 情况下 自动安装 if (typeof window !== 'undefined' && window.Vue) {window.Vue.component('load', load); }
因为最后我们是打包成一个js文件,所以需要修改一下配置文件
webpack.config.js
因为不是所有使用你组件的人都是通过npm按住和impor的很多人是通过
<script>
直接引入的,我们要将libraryTarget改为umd,以及修改入口文件与设置导出文件目录以及名称。entry: './src/index.js',output: {path: path.resolve(__dirname, './dist'),publicPath: '/dist/',filename: 'build.js',library: 'load',libraryTarget: 'umd',umdNamedDefine: true},
- 最后需要把
.gitignore
文件里面的/dist
删除掉要不然上传时会忽略掉dist打包的文件。具体代码已放到github:
https://github.com/shuangmuyi...
发布
npm publish
,具体参考上面步骤。
应用
- Installation
# install dependencies
npm install load-ling-zi -D
- Usage
<loading v-if="loading.isShow"><span>{{ loading.text }}</span>
</loading><script>import loading from 'load-ling-zi'export default {components: {loading:loading},data () {return {loading:{isShow:true,text:"加载中"}, }}}
</script>
方式二
在main里直接导出Vue组件(.vue文件)
具体代码看这里:
https://github.com/shuangmuyi...
写在最后
关于vue组件、插件的实现方式估计还有很多的办法,本文权当抛砖引玉,水平有限,举的例子也是比较简单,一个好的组件也要考虑更多的可配置性以及通用性,数据的可配置,结构的可配置,样式的可配置等等,es里面模块化的写法也是很多,还有一些直接在<script>
引入,所以要考虑如何导出代码能够满足更多场景的使用。欢迎加我微信一起交流探索,微信号为shuangmuyingzi
。
另外,如果觉得本文对您还是有所帮助,请给小姐姐一点鼓励。
NPM — JavaScript 的包管理器相关推荐
- 【Node.js学习笔记五】npm(Node包管理器)命令行选项
Node包管理器(Node Packaged Manager,NPM) Node封装模块(Node Packaged Module,module) 选项 说明 示例 1 search 在存储 ...
- nodejs第五天 npm yarn pnpm 包管理器
文章目录 npm package.json 安装包 全局安装 配置镜像 yarn 安装使用 镜像配置 pnpm 使用 镜像 npm node中的包管理器叫做npm(node package manag ...
- javascript原理_JavaScript程序包管理器工作原理简介
javascript原理 by Shubheksha 通过Shubheksha JavaScript程序包管理器工作原理简介 (An introduction to how JavaScript pa ...
- CodeIgniter包管理器Sparks
CodeIgniter开发者非常期待能够拥有像gems或npm这样的包管理器帮助他们开发和共享一些类库,Sparks就是为了实现这个需求而诞生的,我们既可以从Sparks上寻找需要的类库,也可以把自己 ...
- npm 包管理器_导演电影解释了节点软件包管理器(NPM)
npm 包管理器 by Kevin Kononenko 凯文·科诺年科(Kevin Kononenko) If you understand the general way that Hollywoo ...
- NPM js 包管理器介绍
NPM的定义 npm 全称 Node Package Manager , 是Node.js 默认的, 以javascript 编写的软件包管理系统 用于分享和使用代码,早已成为前端的标配. 作用类似与 ...
- npm 包管理器_纱包管理器:npm的改进
npm 包管理器 From bower to npm, package management for the web has come a long way. 从Bower到npm ,Web的软件包管 ...
- 安装npm_前端开发:node.js的node包管理器npm安装以及使用
在前端开发过程中,node.js进行包管理的时候会使用npm管理器来操作.npm(node package manager)包管理器,主要是用于第三方模块的下载.安装和管理,它具有强大的第三方资源,重 ...
- NPM包管理器跟换国内镜像CNPM
NPM包管理器跟换国内镜像 CNPM npm 是node.js 环境下的包管理器,非常强大智能. 生活这这片神奇的土地上,各种奇葩手段屡见不鲜啊. 为什么要换源? npm 官方站点 http://ww ...
- ❤️《大前端—NPM包管理器》
<大前端-NPM包管理器> 1.简介 官方网站:https://www.npmjs.com/ NPM全称Node Package Manager,是Node.js包管理工具,是全球 ...
最新文章
- android 自定义radiobutton 样式,RadioButton自定义点击时的背景颜色
- 多线程断点续传及下载
- 新手必看的编程介绍,帮你推荐学习方案!
- lisp 绘制立体感的五角星_[原创]圆内加五角星lsp代码,详细有注解
- 【详解】Java语言的特点以及Java语言与C/C++的比较
- JavaScript数组迭代方法(图解)
- 后面的参数_英特尔I系列CPU大家都知道,后面的参数你有没有了解过
- “Lephone.Data.DbEntry”的类型初始值设定项引发异常。(DbEntry.net3.9)
- windows下anaconda环境激活报错CommandNotFoundError: Your shell has not been properly configured to use ‘con
- 2014年武汉的IT行情好像不太好(续):20个月过后,再看当时面试过的几个公司--武汉财富基石-崩盘,辣妈萌宝-创业失败,朋友公司转交他人管理...
- Vue 实现电子签名
- 最详细的js获取当前url的方法
- 公司研制的CPU卡燃气表正式投放北京市场
- 电子书管理神器 calibre 5.0.0中文版
- cad两直线相交画圆弧_cad制图中两个圆相交于一条直线怎么画
- 浅谈springboot
- 获取LOL所有在售皮肤的价格和发布日期
- 3D打印机将用于太空食物 未来或可打印披萨
- java 实现鼠标移动事件
- AIOC快速卸载3dsmax2014
热门文章
- HDU1465_递推_错排
- MFC学习笔记(1)
- VS2010利用MFC的MSCcom控件的方法(WIN8系统)
- Java中的抽象类与abstract关键字
- ENVI5.3.1使用Landsat 8影像进行主成分分析实例操作
- java去0,Java如何处理除零?
- Android-Universal-Image-Loader学习笔记(二)--LruDiscCache
- 有技术,没在怕,就是干!
- java和python有什么区别_Python与Java、C、Ruby、PHP等编程语言有什么区别?
- c语言 键盘输入结构体,C语言结构体问题