关闭

打包发布自己的nodejs包

标签: nodejs打包发布字符串格式化
10091人阅读 评论(2) 收藏 举报
分类:

下午的时候写了一篇关于一个不成熟的模板引擎的博客,觉得还是不太够,然后就封装了起来,做成了一款开发包。最后为了尝试一下如何发布自己的包,就又完善了一下。做此文以记之。

查看详情


初衷

说来也不是什么高大上的东西,就是个简单的字符串格式化的实现。灵感还是源自Python。写过Python代码的应该都知道字符串类有这么一个方法。

string = "hello {}".format("郭璞")  # hello 郭璞
string = "hello {username}".format(username="郭璞") # hello 郭璞

然后对于其他语言来说,比如C, Nodejs,Java等也都有类似的实现,但是不是很好用,尤其是记忆一大串什么%s, %d, %f,之类的,一点都不好玩了。

当然了,你也可以不用这些字符串格式化的方法,单纯的使用字符串相加的方式。比如:

str = "Hello" + username + ", are you " +anothername+ "?"; 

这还是变量很少的情况,试想一下。如果你有20个变量要与字符串进行拼接,那该是个什么工作量。不出错还好,一旦出错,骂街的❤都有了。况且在Node中,单引号和双引号都可以正常的表示字符串对象,这只能让你的字符串拼接显得更加举步维艰

功能

下面给个小例子,一定能让你眼前一亮

const str_format = require('str-format');

var str = "Hello {}!Welcome to {address}!\nAre you come from {} or {china.beijing}.";
var params = ['游客', {address: "冰雹工作室"}, '朝阳区', {china: {beijing: '北京'}}];
var result = str_format.format(str, params);
console.log(result);

运行一下代码,会有如下结果。

Hello 游客!Welcome to 冰雹工作室!
Are you come from 朝阳区 or 北京.

就跟Python中原生处理字符串格式化一样,这样写起来字符串就会变得很方便啦。

使用

使用它很方便,有这么两种方式:

npm

npm install str-format --save

然后就可以在你的代码中使用如下语法来使用它了。

var str_format = require('str-format');

local module

第二种就是当作本地包来使用,具体可以这么做:

https://github.com/guoruibiao/have-fun-in-node/tree/master/str-format
下载完整代码,然后通过本地引用的方式来加载。

var str_format = require('./str-format/index');

这样也能使用这个模块的相关功能了。

打包发布

回到正题,下面讲讲我的打包发布的流程。

目录

创建好一个目录,我的目录结构如下:

E:\Code\Nodejs\learn\my-work\string\str-format>tree /f .
卷 文档 的文件夹 PATH 列表
卷序列号为 0000-4823
E:\CODE\NODEJS\LEARN\MY-WORK\STRING\STR-FORMAT
    index.js     # 功能模块
    package.json # npm init 命令生成的文件
    README.md    # Markdown语法描述的模块信息

没有子文件夹

package.json

如上面目录中看到的package.json文件,其是由npm init命令生成的。在这个目录下打开命令行输入

npm init

然后根据终端里面的提示信息进行填写即可。

发布

发布之前确保自己有npm的账号。如果没有,就到
https://www.npmjs.com/signup
来注册即可。

注册完毕之后就可以使用npm publish来发布你的包了。
进入到模块的目录下,输入命令npm publish,如果出现下面的信息,则说明你需要一个登录会话,通过npm adduser进行登录即可。

E:\Code\Nodejs\learn\my-work\string\str-format>npm publish
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "D:\\Software\\Nodejs\\node.exe" "D:\\Software\\Nodejs\\node_modules\\npm\\bin\\npm-cli.js" "publish"
npm ERR! node v6.10.2
npm ERR! npm  v3.10.10
npm ERR! code ENEEDAUTH

npm ERR! need auth auth required for publishing
npm ERR! need auth You need to authorize this machine using `npm adduser`

npm ERR! Please include the following file with any support request:
npm ERR!     E:\Code\Nodejs\learn\my-work\string\str-format\npm-debug.log

有了登录的会话之后就可以发布了。如下:

E:\Code\Nodejs\learn\my-work\string\str-format>npm adduser
Username: marksinoberg
Password:
Email: (this IS public) 1064319632@qq.com
Logged in as marksinoberg on https://registry.npmjs.org/.

E:\Code\Nodejs\learn\my-work\string\str-format>npm publish
+ str-format@1.0.0

这样我便发不了自己的第一个模块了。

取消发布

取消发布的前提也需要在登录会话下进行。

npm unpublish

如果不成功,或许需要强制取消。

npm unpublish --force

取消发布之后,如果要再次发布,那么需要改变一下版本号。比如我之前是1.0.0,如果我取消发布之后想再发布一次,那么版本号就需要变一下了。比如可以是1.0.1。没什么严格的要求,但是版本号默认递增顺序。

E:\Code\Nodejs\learn\my-work\string\str-format>npm publish
+ str-format@1.0.1

核实

发布完成之后就可以到下面的网址进行搜索,看看你的包到底发布成功了没有。
https://www.npmjs.com/package/package

查找包

查看详情内容,默认显示书写的README.md文件的内容。
查看详情

后话

需要注意的是在字符串中也有不能出现的类型,这跟Python保持了一致。

数组类型

const str_format = require('str-format');

var str = "Hello {}!Welcome to {address}!\nAre you come from {} or {china.beijing}.";
var params = ['游客', {address: "冰雹工作室"}, ['朝阳区', '海淀区'], {china: {beijing: '北京'}}];
var result = str_format.format(str, params);
console.log(result);

结果只会匹配第一个数据项:

Hello 游客!Welcome to 冰雹工作室!
Are you come from 朝阳区 or 北京

大致就是这样了,第一版比较仓促,后序功能可能会慢慢的进行添加的。

2
0
查看评论

windows下安装nodejs、webpack及打包步骤

1.下载Node.js https://nodejs.org/en/,左侧为稳定版,右侧为最新版,推荐稳定版。 2.安装Node.js 一路下一步,记住安装路径(此处安装在 D:\Program Files\nodejs 下)。 安装完成后运行cmd,执行node -v和npm -v命令查看安...
  • Henery_002
  • Henery_002
  • 2017-09-18 10:37
  • 1591

node.js之打包工具webpack

node.js中web 开发的打包工具webpack介绍
  • whereismatrix
  • whereismatrix
  • 2015-12-27 18:05
  • 4872

Node.js JXcore 打包

Node.js JXcore 打包 Node.js 是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore 是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 但我们这篇文章主要是要教大家介绍 J...
  • xuliuzhu
  • xuliuzhu
  • 2016-07-10 14:19
  • 1271

nodejs 代码工程打包

nodejs 工程打包发布
  • thor027
  • thor027
  • 2017-10-31 21:20
  • 414

使用npm打包nodejs程序包并发布到npm上

npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准。通过npm可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。 将自己写的node模块或者项目发布到npm上供其它人来使用,想想都是挺鸡动的事。本文章就详细介绍如何发布自己的node...
  • wyc_cs
  • wyc_cs
  • 2016-06-02 17:50
  • 4151

把nodejs项目部署到阿里云

前言最近工作不是很忙,在空闲时间学习用node+express搭建自己的个人博客。目前进度大概进行到一半了,等不及想部署上线看下效果(学习阶段的人总是很兴奋,有一点点小成果就想马上看看 =_=!)。 于是买了个阿里云服务器,自己尝试来部署一下,捣鼓了两天终于捣鼓好了,这里来记录一下,以免后面又忘了...
  • chenlinIT
  • chenlinIT
  • 2017-06-16 17:31
  • 6080

NODEJS项目打包成单个执行文件PKG

Package your Node.js project into an executable https://npmjs.com/pkg This command line interface enables you to package your Node.js project in...
  • cut001
  • cut001
  • 2017-08-25 17:28
  • 197

NodeJS模块开发与发布

1、创建一个简单的目录,写一个简单的js module.exports.hello = function(val){ console.log("hello " + val +" " + new Date()); } 2、使用npm init命令创建一个p...
  • kangkanglou
  • kangkanglou
  • 2016-10-13 19:28
  • 1386

如何使用npm打包发布nodejs程序包

作者:zhanhailiang 日期:2014-11-20 不论基于任何语言开发内部项目,我们经常会在内部封装一些极具通用性的功能模块。如果我们觉得该通用模块对其它团队有可取之处,完全可以将其开源出去。而NPM就是发布nodejs程序包的最优工具。 1. 首先在npmjs.org注册一个账号:(...
  • bill200711022
  • bill200711022
  • 2014-11-20 00:12
  • 4553

Nodejs 发布自己的npm包并制作成命令行工具

近日当我在使用npm上已经存在的一个包时,发现它有bug;于是决定自己实现这个功能,自己写一个npm包。 下面我记录一下自己的实现过程。 1. npm init 选择一个文件夹,然后用命令行cd进去,然后执行npm init,这时会生成一长串表单,根据自己的实际情况填写内容 na...
  • u011249920
  • u011249920
  • 2017-02-06 14:27
  • 3677
    个人资料
    • 访问:3235734次
    • 积分:34857
    • 等级:
    • 排名:第149名
    • 原创:357篇
    • 转载:35篇
    • 译文:9篇
    • 评论:733条
    友情链接
    我的偶像
    个人主页
      GitHub
    放松一下
    博客专栏
    最新评论
    版权信息
    去除本页广告
    图片炸弹装填中...

        
    [img=赞一个]http://bpic.588ku.com/element_origin_min_pic/16/12/12/0d96da96cf36505736c09d63832eaac8.jpg[/img]