本文主要讲述基于webpack编写js包文件后上传到npm,并通过cdn进行访问。

创建项目

在自己新建的文件夹下执行如下代码:

npm init
name: (mtmap)
version: (1.0.0)
description: xxxxx
entry point: (/dist/gaia.demo.map.js)
test command:
git repository:
keywords:
author: allanhao
license: (ISC) MIT
About to write to E:\github\mtmap\package.json: {
"name": "mtmap",
"version": "0.1.0",
"description": "xxxxx",
"main": "/dist/gaia.demo.map.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "allanhao",
"license": "MIT"
}
Is this ok? (yes)

按照提示填写基本信息

配置项 意义 默认值
name 包的名字 默认是所在文件夹的名字
version 包的版本 1.0.0
description 项目描述
entry point 入口文件 index.js
test command 测试命令
git respository 源代码git仓库地址
keyword 关键字,会显示在npm中,方便别人搜索
author 作者
license 执照

确认后会发现文件目录内多出来一个package.json文件

开始写代码,参照webpack教程

发布到NPM

注册npm账号

在npm官网注册https://www.npmjs.com

注意邮箱要验证,会发送验证链接到你的注册邮箱,没有验证的话是不能发布代码的

添加.npmignore文件,例:

/**/*
!dist/gaia.demo.map.js
!ACKNOWLEDGEMENT

这样会将build后的dist文件夹内的js包文件发布到npm,方便后续通过cdn访问

提交发布上面创建的包

  • 先登录你的npm账号
$ npm adduser
Username: your name
Password: your password
Email: yourmail

按照你注册的账号配置好,这时候看一下package.json中author尽量与npm账户一致

在根目录下配置账号信息,只用配置一次即可,我上传的时候发现有提示必须admin权限才能上传问题就是没在根目录下配置信息

  • 检查是否登录成功:
npm who am i
# 如果不成功则重新登录一下
npm login
  • 配置成功之后提交代码
npm publish

注意:如果提示包不能为private,需要执行下面的发布方式:

npm publish --access public

注意每次提交版本号都要比上次的高

  • 测试是否提交成功

去官网你的账号下面看一下有没有

或者直接npm下载下来

npm i mtmap

npm的版本控制

在我们的package.json里面有一个version字段 ,每次提交到npm,版本号需要增加。 或者自己手动修改,或者使用 “npm version <update_type>” 命令

npm有一套自己的版本控制标准——Semantic versioning(语义化版本)

具体体现为:

对于"version":"x.y.z"

1.修复bug,小改动,增加z

2.增加了新特性,但仍能向后兼容,增加y

3.有很大的改动,无法向后兼容,增加x

例如:我原本的项目是1.0.0版本的话

若是1中情况,变为1.0.1

若是2中情况,变为1.1.0

若是3中情况,变为2.0.0

通过npm version <update_type>自动改变版本

update_type为patch, minor, or major其中之一,分别表示补丁,小改,大改

一些常见的错误

1.no_perms Private mode enable, only admin can publish this module

这是因为镜像设置成淘宝镜像了,设置回来即可

npm config set registry http://registry.npmjs.org

2.npm publish failed put 500 unexpected status code 401

一般是没有登录,重新登录一下 npm login 即可

3.npm ERR! you do not have permission to publish “your module name”. Are you logged in as the correct user?

包名被占用,改个包名即可。最好在官网查一下是否有包名被占用,之后再重命名

4.you must verify your email before publishing a new package

邮箱未验证,去官网验证一下邮箱

通过CDN访问

这里使用的是jsdelivr

地址格式为:

https://cdn.jsdelivr.net/npm/(your packagename)@(version)/(file)

如:

https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js

打包发布到NPM并通过CDN访问的更多相关文章

  1. 创建自己的library类库包并使用webpack4.x打包发布到npm

    创建自己的library类库包并使用webpack4.x打包发布到npm 我们在开发过程中,可能经常要使用第三方类库,比如jquery.lodash等.我们通过npm,下载安装完之后,就可以使用了,简 ...

  2. 基于Vue3实现一个前端埋点上报插件并打包发布到npm

    前端埋点对于那些营销活动的项目是必须的,它可以反应出用户的喜好与习惯,从而让项目的运营者们能够调整策略优化流程提高用户体验从而获取更多的$.这篇文章将实现一个Vue3版本的埋点上报插件,主要功能有 通 ...

  3. 将自己的组件打包发布到npm

    在项目中有些组件在各个项目中都会调用,那么将组件发布到npm ,用到的项目去下载,这样会省去一些不必要的麻烦. 将组件发布到npm 中的步骤 做个记录 1.项目的创建,我这里使用 vue init w ...

  4. 从零开始开发一个vue组件打包并发布到npm (把vue组件打包成一个可以直接引用的js文件)

    自己写的组件 有的也挺好的,为了方便以后用自己再用或者给别人用,把组件打包发布到npm是最好不过了,本次打包支持 支持正常的组件调用方式,也支持Vue.use, 也可以直接引用打包好的js文件, 配合 ...

  5. 学以致用:手把手教你撸一个工具库并打包发布,顺便解决JS浮点数计算精度问题

    本文讲解的是怎么实现一个工具库并打包发布到npm给大家使用.本文实现的工具是一个分数计算器,大家考虑如下情况: \[ \sqrt{(((\frac{1}{3}+3.5)*\frac{2}{9}-\fr ...

  6. 如何开发一个npm包并发布到npm中央仓库

    转自: https://liaolongdong.com/2019/01/24/publish-public-npm.html 如何开发一个npm包并发布到npm中央仓库需求背景:平时在项目工作中可能 ...

  7. 12 - Vue3 UI Framework - 打包发布

    基础组件库先做到这个阶段,后面我会继续新增.完善 接下来,我们对之前做的组件进行打包发布到 npm 返回阅读列表点击 这里 组件库优化 通用层叠样式表 我想大家都注意到了,前面我们在写组件的时候,sc ...

  8. 框架基础:ajax设计方案(六)--- 全局配置、请求格式拓展和优化、请求二进制类型、浏览器错误搜集以及npm打包发布

    距离上一次博客大概好多好多时间了,感觉再不搞点东西出来,感觉就废了的感觉.这段时间回老家学习驾照,修养,然后7月底来上海求职(面了4家,拿了3家office),然后入职同程旅游,项目赶进度等等一系列的 ...

  9. springboot系列三、springboot 单元测试、配置访问路径、多个配置文件和多环境配置,项目打包发布

    一.单元测试 生成的demo里面包含spring-boot-starter-test :测试模块,包括JUnit.Hamcrest.Mockito,没有的手动加上. <dependency> ...

随机推荐

  1. 1009 Product of Polynomials

    题意:模拟多项式相乘 思路:略.有一个注意点,题目中说指数最大为1000,当两个多项式相乘后,指数最大就为2000,这一点不注意会出现段错误. 代码: #include <cstdio> ...

  2. php 语句块耗时性能测试

    $t= microtime(true);        .............................        echo microtime(true) - $t; 1查看从入口文件 ...

  3. Secure CRT修改文件夹的颜色

    secureCRT有一个很大的问题是,如果设置Emulation Terminal 为Linux模式,则ls的时候,目录的蓝色跟背景的黑色非常接近,很难看清楚,修改办法 option->Glob ...

  4. HTTP 与TCP/IP 、Socket区别(一)

    网络由下往上分为: 物理层-- 数据链路层-- 网络层-- IP协议 传输层-- TCP协议 会话层-- 表示层和应用层-- HTTP协议 1.TCP/IP连接 手机能够使用联网功能是因为手机底层实现 ...

  5. Python技巧(一)

    一  if..else的多种写法 a, b, c = 1, 2, 3 1.常规 if a > b: c = a else: c = b 2.表达式 c = a if a > b else ...

  6. csdn知识库

  7. vue简单路由(一)

    在项目中,将vue的单页面应用程序改为了多页面应用程序,因此在某些场景下,需要频繁的切换两个页面,因此考虑使用路由,这样会减少服务器请求. 使用vue-cli(vue脚手架)快速搭建一个项目的模板(w ...

  8. fcntl详细说明

    功能描述:根据文件描述词来操作文件的特性. #include <unistd.h>#include <fcntl.h> int fcntl(int fd, int cmd);  ...

  9. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 4_Linear Regression with Multiple Variables 多变量线性回归

    Lecture 4 Linear Regression with Multiple Variables 多变量线性回归 4.1 多维特征 Multiple Features4.2 多变量梯度下降 Gr ...

  10. deeplearning.ai 旁听如何做课后编程作业

    在上吴恩达老师的深度学习课程,在coursera上. 我觉得课程绝对值的49刀,但是确实没有额外的钱来上课.而且课程提供了旁听和助学金. 之前在coursera上算法和机器学习都是直接旁听的,这些课旁 ...