多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 前言 在nodejs大环境下,npm作为包管理工具风靡一时,作为前端开发者需要知道npm可以实现哪些操作,核心的机制是如何的。 ## 快速入手 ### 基本了解 * [npm官网地址](https://www.npmjs.com/) * npm的运行环境是nodejs,默认nodejs安装之后就可以执行npm命令,nodejs的安装教程可以站内搜索或者百度搜索。 ``` bash $ npm -v 3.10.3 #全局安装 ,建议全局安装一次(npm install --global=npm i -g) $ npm i -g #依赖安装,根据项目里的模块依赖情况(安装到依赖 --save 安装到开发依赖 --save-dev) $ npm i --save-dev ``` * 模块版本说明 ^1.0.0 此主版本 1.x.x>=1.0.0 ~1.0.0 主版本对,并且包括分支小版本 1.1.0>1.0.x>=1.0.0 \>1.0.0 安装大于某个版本,默认等于版本的。 <1.0.0 安装小于某个版本 * [npm指令速记表](https://docs.npmjs.com/misc/config#shorthands-and-other-cli-niceties) ### npm安装某模块 * npm也支持检索,但是npm模块太多,建议根据准确的模块名称直接安装。 ``` bash #全局安装某模块 $ npm i packname -g #全局安装某模块特定版本 $ npm i packname@1.0.0 -g #依赖安装某模块 $ npm i packname --save-dev #查看依赖的模块 $ npm less ``` ### npm卸载模块 ``` bash #卸载某模块uninstall=un $ npm un packname ``` ### 发布与删除模块 * npm增加用户,也可以官网注册 ``` bash # 增加用户 $ npm adduser # 用户登录 $ npm login ``` * 模块要想发布到npm仓库,必须有package.json的包说明文件,其他不做具体要求,可根据自己的需要灵活开发私属模块。建议通过npm init来实现模块包文件初始化,通过npm init -y ,npm init -f 回到初始化状态。 ``` bash # 模块初始化 $ npm init # 发布模块 $ npm publish [name] # 删除模块 $ npm unpublish [name] ## 回到初始化 $ npm init -y $ npm init -f ``` * 查看以及更新模块 ``` bash #查看模块详情 $ npm info [name] #更新模块 $ npm update [name] ``` * 测试模块 ``` bash #项目测试 test=t $ npm test $ npm t ``` * 枚举可用脚本 ``` bash # 打开package.json文件并检查scripts部分 cat package.json # 运行npm run得到一个的所有可用的脚本的列表。 npm run # 安装ntl (npm i -g ntl),然后运行ntl在项目文件夹中。它也可以运行脚本,也很方面。 npm i -g ntl ``` ### 新建模块简易教程 * 模块示例,发布模块要符合cmd模块规范。可以按照以下 步骤制定js模块。 0. 代码托管地址新建仓库(建立这个的原因主要是方便维护各个修改状态,因为我们一般不会针对每个修改都发布版本) 1. 新建模块文件夹,或者检出仓库地址,文件夹内写主要入口文件index.js 2. 初始化包描述文件,填写基本模块信息 3. 添加许可证,说明文件等次要信息,必要时可以添加说明文档,测试用例等 4. 模块主js文件参考 ``` javascript //当前模块依赖的模块 var re=require("m1"); // 模块私有变量 var ab=""; // 模块私有方法 function parse(){ #code here }; //确定对外接口的变量 or方法 module.exports.ab=ab; module.exports.parse=parse; ``` 5. 模块的输出定义与使用(不能混淆使用),会报错:`Cannot assign to read only property 'exports' of object '#<Object>'`,参考如下匹配规则。 ``` javascript //定义module.exports module.exports={ } import xxx from 'xxx' // 定义export default export default { booklist, comp1 } require('xxx') ``` ## 其他问题 ### 如何发布带前缀的私有模块 npm 私有的包如何进行发布 加组织名 npm publish --access=public 添加发布渠道为公共即可 ### ## 参考资料 * [npm安装机制-阮一峰](http://www.ruanyifeng.com/blog/2016/01/npm-install.html) -