• vue 下载的插件从哪里上传?npm发布插件详细记录


    文章参考:

    参考文章一:

    封装vue插件并发布到npm详细步骤_vue-cli 封装插件-CSDN博客

    参考文章二:

    npm发布vue插件步骤、组件、package、adduser、publish、getElementsByClassName、important、export、default、target、dest_export default install-CSDN博客

    背景:

    我想把我写的一个JS发布成一个插件,这样就可以通过“npm”命令去实现安装插件

    如:

    npm install 插件名称  
    

    npm i 插件名称  

    第一步:创建项目

     vue create jjychengtoolsbox

    如果你赶时间,下面的错误记录可以跳过 ,直接看第二步

    如果你赶时间,下面的错误记录可以跳过 ,直接看第二步

    如果你赶时间,下面的错误记录可以跳过 ,直接看第二步

    我这里报错了

     

     ERROR  Failed to get response from https://registry.npm.taobao.org/binary-mirror-config

     ERROR  Failed to get response from https://registry.npm.taobao.org/binary-mirror-config

    网上找了找说是 我的淘宝镜像源无效

     

    查看npm的镜像源

    npm config get

    1. ; "builtin" config from C:\Program Files\nodejs\node_modules\npm\npmrc
    2. prefix = "C:\\Users\\cpeng\\AppData\\Roaming\\npm"
    3. ; "user" config from C:\Users\cpeng\.npmrc
    4. python = "C:\\Users\\cpeng\\AppData\\Local\\Programs\\Python\\Python37\\python.exe"
    5. Python = "C:\\Users\\cpeng\\AppData\\Local\\Programs\\Python\\Python37\\python.exe"
    6. registry = "https://registry.npm.taobao.org/"
    7. sass_binary_site = "https://npm.taobao.org/mirrors/node-sass"
    8. ; node bin location = C:\Program Files\nodejs\node.exe
    9. ; cwd = D:\2 CodeTest\JJYChengScrollListening.js\VuePackage_JJYChengSL
    10. ; HOME = C:\Users\cpeng
    11. ; Run `npm config ls -l` to show all defaults.

    应该是这2个出现了问题

    1. registry = "https://registry.npm.taobao.org/"
    2. sass_binary_site = "https://npm.taobao.org/mirrors/node-sass"

    修改镜像源,修改为官方的

    npm config set registry https://registry.npmjs.org
    npm config set sass_binary_site https://registry.npmjs.org

    查看修改结果

    npm config get
    1. ; "builtin" config from C:\Program Files\nodejs\node_modules\npm\npmrc
    2. prefix = "C:\\Users\\cpeng\\AppData\\Roaming\\npm"
    3. ; "user" config from C:\Users\cpeng\.npmrc
    4. python = "C:\\Users\\cpeng\\AppData\\Local\\Programs\\Python\\Python37\\python.exe"
    5. Python = "C:\\Users\\cpeng\\AppData\\Local\\Programs\\Python\\Python37\\python.exe"
    6. registry = "https://registry.npmjs.org/"
    7. sass_binary_site = "https://registry.npmjs.org"
    8. ; node bin location = C:\Program Files\nodejs\node.exe
    9. ; cwd = D:\2 CodeTest\JJYChengScrollListening.js\VuePackage_JJYChengSL
    10. ; HOME = C:\Users\cpeng
    11. ; Run `npm config ls -l` to show all defaults.

    这么看的话,应该是没有问题了

    继续创建项目

    vue create vuepackage_jjychengsl

    继续报错

    网上找了找说是缓存问题

    更新npm缓存

    npm cache clean --force

    这个样子应该是更新好了

    继续创建项目

    记得把文件夹下面,之前创建的项目文件夹给删了

    不删的话也行,你创建项目它会提示你,你选择 覆盖(Overwrite)就行了

    vue create vuepackage_jjychengsl     

    我这里选择vue2

    继续报错误,实在是无语了。。。

    清空npm缓存

    其实,上面也警告了,我没注意

    npm WARN using --force Recommended protections disabled.

    大致意思是被禁用了,不能用

    使用“npm cache verify”

    npm cache verify

    【*】问题完整解决过程和解决方法

    我这里不再重复写了,项目完整的解决方法和记录,请点击下面文章

    文章地址:

    【已解决】ERROR Failed to get response from https://registry.npm.taobao.org/binary-mirror-config,完成解决方法

    【已解决】ERROR Failed to get response from https://registry.npm.taobao.org/binary-mirror-config,完成解决方法-CSDN博客


    第二步:新建插件

    此时你的目录结构应该是这样的,如下图

    在 “根目录\src\”下新建npmPackage文件夹

    在新建的npmPackage文件夹下,新建jjychengtoolsbox.js文件

    新建的jjychengtoolsbox.js文件,内容如下:

    1. var jjychengtoolsbox = {};
    2. // 检查是否手机端访问
    3. jjychengtoolsbox.IsMobileFun = function () {
    4. if ((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iPad)/i))) {
    5. return true;
    6. }
    7. else {
    8. return false;
    9. }
    10. }
    11. export default jjychengtoolsbox;

     如果你发布的是“组件”的一定要看看这篇文章

     如果你发布的是“组件”的一定要看看这篇文章

     如果你发布的是“组件”的一定要看看这篇文章

    封装vue插件并发布到npm详细步骤_vue-cli 封装插件-CSDN博客

     主要是这段代码

    1. import wqButton from './wqButton/index.vue'
    2. import wqClock from './wqClock/index.vue'
    3. const comArr = [wqButton, wqClock];
    4. // 注册组件
    5. export default install = (Vue) => {
    6. comArr.forEach(item => {
    7. Vue.component(item.name, item) // item.name就是引入组件中的name属性,所以每个组件都需要name
    8. })
    9. };

    使用Vue提供的install方法,这个方法会在使用Vue.use(plugin)时被调用,这样就能让我们需要导出的组件注册到全局, 就可以在任意组件中像使用子组件一样直接使用导出的组件


    第三步:插件打包

    此时你的项目目录是这样的,如下图

    在跟节点找到“package.json”文件,并打开他,找到"scripts"节点,新增下面内容

    1. {"package": "vue-cli-service build --target lib ./src/npmPackage/jjychengtoolsbox.js --name jjychengtoolsbox --dest jjychengtoolsbox"
    2. }

    内容介绍

    1. --target lib 指定打包的目录
    2. --name 打包后的文件名
    3. --dest 打包后的文件夹名称

    "scripts"节点完整代码

    1. "scripts": {
    2. "dev": "vue-cli-service serve",
    3. "build": "vue-cli-service build",
    4. "lint": "vue-cli-service lint",
    5. "package": "vue-cli-service build --target lib ./src/npmPackage/jjychengtoolsbox.js --name jjychengtoolsbox --dest jjychengtoolsbox"
    6. },

    执行打包命令

    npm run package
    

     

    打包好后的,你的根目录会多一个刚才你命名的文件夹,如下图

    里面的文件如下


    第四步:完善你的插件信息

    4.1增加package.json文件

    注意文件里不能有注释

    注意文件里不能有注释

    注意文件里不能有注释

    我的信息如下:

    1. {
    2. "name": "jjychengtoolsbox",
    3. "version": "1.0.2",
    4. "description": "jjychengtoolsbox常用工具箱",
    5. "main": "jjychengtoolsbox.common.js",
    6. "scripts": {
    7. "test": "echo \"Error: no test specified\" && exit 1"
    8. },
    9. "keywords": [
    10. "获取URL参数",
    11. "获取Cookie",
    12. "设置Cookie",
    13. "时间万能转换-兼容IE",
    14. "截取字符串",
    15. "过滤全部html",
    16. "生成随机数",
    17. "检查是否手机端访问"
    18. ],
    19. "author": "JJY.Cheng blogUrl:https://cplvfx.blog.csdn.net/",
    20. "license": "ISC"
    21. }

    字段说明:

    1. {
    2. "name": "", // 发布的包名,发布线上后,可以通过 npm install 该名称 来引用该包
    3. "version": "0.0.0", // 版本号
    4. "description": "", // 描述
    5. "main": "", // // 打包后的入口文件,若不配置,则在其他项目中就无法使用import xx from '包名'来引入组件,只能以包名作为起点来指定相对路径
    6. "scripts": { // 运行命令
    7. "test": "echo \"Error: no test specified\" && exit 1"
    8. },
    9. "keywords": [ // 关键词,可以通过npm搜索你填写的关键词找到你的包
    10. ],
    11. "author": "cplvfx", // 作者
    12. "private": false, // 是否设为私有包
    13. "license": "ISC" // 代码授权许可
    14. }

    你也可以通过下面命令生成文件

    npm init -y

     但,必须保证,生成文件时,你的命令路径是在,打包好的文件夹下;

     但,必须保证,生成文件时,你的命令路径是在,打包好的文件夹下;

     但,必须保证,生成文件时,你的命令路径是在,打包好的文件夹下;

    如我的

     4.2增加README.md文件

    我的内容如下

    1. # jjychengtoolsbox
    2. ## 介绍
    3. "获取URL参数",
    4. "获取Cookie",
    5. "设置Cookie",
    6. "时间万能转换-兼容IE",
    7. "截取字符串",
    8. "过滤全部html",
    9. "生成随机数",
    10. "检查是否手机端访问"
    11. ## 作者
    12. "author": "JJY.Cheng"
    13. "blogUrl":https://cplvfx.blog.csdn.net/"

    第五步:注册并登录的npm

    保持你的命令路径在生成包的目录下,

    保持你的命令路径在生成包的目录下,

    保持你的命令路径在生成包的目录下,

    接下来不在提示

     

    5.1 注册

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

    5.2 登录

    5.2.1检查镜像源

    检查镜像源是否是npm官方镜像源,如果不是就需要设置;

    检查镜像源是否是npm官方镜像源,如果不是就需要设置;

    检查镜像源是否是npm官方镜像源,如果不是就需要设置;

    查看命令

    npm config list

    如下图,我的就不是

    执行修改命令

    npm config set registry=https://registry.npmjs.org
    

    修改后

    5.2.2 登录

    登录命令

    npm login
    

    依次输入账号、密码、邮箱以及邮箱里收到的一次性密码,

    如果输入邮箱之后一直卡在那里不动的话可以试试

    npm login -d

    第六步:发布

    发布之前可去npm官网搜索一下你这个包名是否跟里面的包有重名的,

    有的话不能发,也可以使用命令测试

    npm i 你的包名

    6.1执行发布命令

    npm publish

    你可以npm官网搜索你的插件

    npm | Home

    6.2更新插件

    更新插件,从第三步第六步操作一遍就行了。

    记得一定要去插件目录下,package.json文件,修改version节点的值


     安装使用

    安装代码

    npm i jjychengtoolsbox
    

    引入

    import jjychengtoolsbox from 'jjychengtoolsbox';

    使用

    1. <template>
    2. <div id="app">
    3. <img alt="Vue logo" src="./assets/logo.png">
    4. <table border="1" style="margin:0 auto;">
    5. <tr>
    6. <td>名称td>
    7. <td>描述td>
    8. <td>例子td>
    9. tr>
    10. <tr>
    11. <td>GetQueryStringFun<br/>根据名称获取URL参数td>
    12. <td>
    13. <p>如url:http://localhost:8081/?id=1p>
    14. <p>我想拿到id的值p>
    15. td>
    16. <td>
    17. id={{jjyT.GetQueryStringFun('id')}}
    18. td>
    19. tr>
    20. <tr>
    21. <td>getCookieFun<br/>获取Cookietd>
    22. <td>
    23. <p>如:p>
    24. <p>jjyT.setCookieFun('jjyT','jjychengtoolsbox',1)p>
    25. td>
    26. <td>
    27. {{jjyT.getCookieFun('jjyT')}}
    28. td>
    29. tr>
    30. <tr>
    31. <td>DateTimeConvertFun<br/>时间万能转换-兼容IEtd>
    32. <td>
    33. 如:<br/>
    34. 时间戳:1709977671<br/>
    35. 时间字符串:2024-3-9 17:47:51<br/>
    36. td>
    37. <td>
    38. 时间戳:{{jjyT.DateTimeConvertFun('1709977793','yyyy年mm月dd日')}}<br/>
    39. 时间字符串:{{jjyT.DateTimeConvertFun('2024-3-9 17:47:51','yyyy年mm月dd日')}}<br/>
    40. td>
    41. tr>
    42. table>
    43. <HelloWorld msg="Welcome to Your Vue.js App"/>
    44. div>
    45. template>
    46. <script>
    47. import HelloWorld from './components/HelloWorld.vue';
    48. import jjychengtoolsbox from 'jjychengtoolsbox';
    49. export default {
    50. name: 'App',
    51. components: {
    52. HelloWorld
    53. },
    54. data(){
    55. return {
    56. txt:'你号',
    57. jjyT:{},
    58. }
    59. },
    60. created(){
    61. this.jjyT=jjychengtoolsbox;
    62. console.log(this.txt)
    63. console.log(jjychengtoolsbox)
    64. //设置Cookie
    65. this.jjyT.setCookieFun('jjyT','jjychengtoolsbox',1);//设置Cookie
    66. }
    67. }
    68. script>
    69. <style>
    70. #app {
    71. font-family: Avenir, Helvetica, Arial, sans-serif;
    72. -webkit-font-smoothing: antialiased;
    73. -moz-osx-font-smoothing: grayscale;
    74. text-align: center;
    75. color: #2c3e50;
    76. margin-top: 60px;
    77. }
    78. table{
    79. width: 800px;
    80. }
    81. table td{
    82. text-align: left;
    83. }
    84. style>

    更新

    npm update jjychengtoolsbox

  • 相关阅读:
    【Git】git的安装与使用教程
    KubeSphere简介,功能介绍,优势,架构说明及应用场景
    php实战案例记录(19)对登录角色的权限进行判断
    H3C 交换机配置SSH
    LSTM和GRU
    手机号脱敏
    vue大屏可视化项目页面全屏展示(强制缩放实现)
    Java 并发编程之CAS 和 Unsafe类本地使用方法
    SQL笔记-多表查询(合并记录&新增字段)
    压榨数据库的真实处理速度
  • 原文地址:https://blog.csdn.net/cplvfx/article/details/136577301