组件封装之将代码放到npm上

  想必大家有过这种烦恼,同一个方法,新项目用的时候还得去找之前写过的代码,不仅耗时,而且方法有变动之后,还得将之前的老方法替换掉。如果将封装的方法放到npm上,要用的时候安装一下,就可以省下很多时间和精力,如果你也有这种困惑,希望本文能帮助到你。

  一、注册npm账号

  发布代码前得注册一个npm账号,这样才能进行发布操作。通过npm官网注册,如图1所示。

组件封装之将代码放到npm上

图1 npm官网注册图

  注册完毕后,注意查看邮箱,需要进行验证,通过验证才可进行发布操作。敲破黑板,这点很重要。

  二、创建项目

  项目分为三个部分,分别是封装的组件、入口文件和配置文件。

  组件即你要上传的代码,就不细说了。index.js将export出去你的组件,是组件和package.json连接的桥梁。至于pakeage.json,它不仅仅是用来标明依赖和npm script脚本,也可以是一个npm包被外界识别的配置文件。

  项目结构如图2所示。

组件封装之将代码放到npm上

图2 项目结构图

   changeTime.js代码如下:

组件封装之将代码放到npm上
 1 let changeTime = {
 2     ChangeTime(time, status) {
 3         var changetime = new Date(time);
 4 
 5         var year = changetime.getFullYear();
 6         var month = changetime.getMonth();
 7         var day = changetime.getDate();
 8         var hour = changetime.getHours();
 9         var minutes = changetime.getMinutes();
10         var seconds = changetime.getSeconds();
11 
12         var datetime = ‘‘;
13         if (status == ‘YMD‘) {
14             datetime = year + ‘-‘ + (month + 1) + ‘-‘ + day;
15         } else {
16             datetime = year + ‘-‘ + (month + 1) + ‘-‘ + day + ‘ ‘ + hour + ‘:‘ + minutes + ‘:‘ + seconds;
17         }
18 
19         return datetime
20     },
21     ChangeTime1() {
22     },
23     ChangeTime2() {
24     }
25 }
26 export default changeTime
View Code

  index.js代码如下:

1 import changeTime from ‘./changeTime.js‘
2 
3 export default changeTime

  至于package.json,你可以使用我在下方贴出来的代码,也可以自己初始化一个,建议初始化一个,这样印象深刻(拒绝白嫖,自己去创建)。

  在文件夹地址栏中运行cmd,打开命令行面板,输入:

npm init

  效果如图3所示。

组件封装之将代码放到npm上

 图3 初始化package.json文件

  就知道你要白嫖,我把我的也放出来吧。   

package.json代码如下:

组件封装之将代码放到npm上
 1 {
 2   "name": "xxx",
 3   "version": "1.0.0",
 4   "description": "时间转换组件",
 5   "main": "index.js",
 6   "scripts": {
 7     "test": "echo \"Error: no test specified\" && exit 1"
 8   },
 9   "author": "xxx",
10   "license": "ISC"
11 }
View Code

  这是我的配置文件,内容更全面,其实也是当初我百度的。

  沈腾式承认:不装了,我摊牌咧。

  package.json代码如下:

组件封装之将代码放到npm上
 1 {
 2   "name": "xxx",
 3   "version": "1.0.1",
 4   "description": "公共功能的js",
 5   "main": "index.js",
 6   "scripts": {
 7     "serve": "vue-cli-service serve",
 8     "build": "vue-cli-service build",
 9     "lint": "vue-cli-service lint"
10   },
11   "author": "xxx",
12   "license": "ISC",
13   "dependencies": {
14     "core-js": "^3.6.5",
15     "vue": "^2.6.11"
16   },
17   "devDependencies": {
18     "@vue/cli-plugin-babel": "~4.5.0",
19     "@vue/cli-plugin-eslint": "~4.5.0",
20     "@vue/cli-service": "~4.5.0",
21     "babel-eslint": "^10.1.0",
22     "eslint": "^6.7.2",
23     "eslint-plugin-vue": "^6.2.2",
24     "vue-template-compiler": "^2.6.11"
25   },
26   "eslintConfig": {
27     "root": true,
28     "env": {
29       "node": true
30     },
31     "extends": [
32       "plugin:vue/essential",
33       "eslint:recommended"
34     ],
35     "parserOptions": {
36       "parser": "babel-eslint"
37     },
38     "rules": {}
39   },
40   "browserslist": [
41     "> 1%",
42     "last 2 versions",
43     "not dead"
44   ]
45 }
View Code

  三、发布代码

  终于,激动人心的时刻来了,喝桶水继续~

  命令行输入

npm adduser

  账号、密码、邮箱填写的都是在npm官网注册的信息。温馨提示:输入密码时是看不到的,不要怀疑电脑坏了,也不要怀疑人生。效果如图4所示。

组件封装之将代码放到npm上

图4 登录账号图

   接下来输入npm publish即可进行发布:

npm publish

  效果如图5所示:

组件封装之将代码放到npm上

 图5 发布成功图

  如果发布失败,一般有这几种问题:如当前登陆人和配置文件里的登陆人不一致、版本号问题、配置文件里的name重复等。具体报错请出门右转打开百度。

   四、下载验证

  伟人说:实践是检验真理的唯一标准。组件是否发布成功,得看下载引用才能得出结论。

  在vue项目里下载依赖:

npm install changetime_test --save

  在main.js里引用:

1 import changeTime from ‘changetime_test‘
2 
3 console.log(‘--查看时间组件--‘, changeTime.ChangeTime(new Date()))

  效果如图6所示:

组件封装之将代码放到npm上

 

图6 引用组件图

  至此,将代码发布到npm的流程就告一段落了。

  五、常见报错

  下面是一些常见报错:

  • npm publish failed put 500 unexpected status code 401
    一般是没有登录,重新登录一下 npm login 即可

  • npm ERR! you do not have permission to publish “your module name”. Are you logged in as the correct user?
    包名被占用,改个包名即可。最好在官网查一下是否有包名被占用,之后再重命名

  • you must verify your email before publishing a new package
    邮箱未验证,去官网验证一下邮箱

  六、结语
  至此全文结束,本文讲的是对方法组件的发布,后续文章会出讲述布html组件,敬请期待。
  原创不易,一键三连支持一下。
  转载请标明出处~

 

组件封装之将代码放到npm上

上一篇:如何解决codeforces使用java提交时显示Source should satisfy regex [^{}]*public\s+(final)?\s*class\s+(\w+).*问题


下一篇:noi.ac七一模拟赛