打包发布自己的nodejs包

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


初衷

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

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

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

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

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

这还是变量很少的情况,试想一下。如果你有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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

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

使用

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

npm

npm install str-format --save
  • 1

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

var str_format = require(‘str-format‘);
  • 1

local module

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

https://github.com/guoruibiao/have-fun-in-node/tree/master/str-format

下载完整代码,然后通过本地引用的方式来加载。

var str_format = require(‘./str-format/index‘);
  • 1

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

打包发布

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

目录

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

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语法描述的模块信息

没有子文件夹
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

package.json

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

npm init
  • 1

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

发布

发布之前确保自己有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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

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

E:\Code\Nodejs\learn\my-work\string\str-format>npm publish
+ [email protected]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

取消发布

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

npm unpublish
  • 1

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

npm unpublish --force
  • 1

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

E:\Code\Nodejs\learn\my-work\string\str-format>npm publish
+ [email protected]
  • 1
  • 2

核实

发布完成之后就可以到下面的网址进行搜索,看看你的包到底发布成功了没有。

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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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


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

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

原文地址:https://www.cnblogs.com/djuwcnhwbx/p/10323142.html

时间: 2024-10-11 20:44:59

打包发布自己的nodejs包的相关文章

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

作者:zhanhailiang 日期:2014-11-20 不论基于任何语言开发内部项目,我们经常会在内部封装一些极具通用性的功能模块.如果我们觉得该通用模块对其它团队有可取之处,完全可以将其开源出去.npm就是发布nodejs程序包的最优工具. 1. 首先在npmjs.org注册一个账号:(可省) https://www.npmjs.org/signup 2. 通过npm adduser来注册新账号或登录老账号: [root@~/wade/nodejs/pv-tj]# npm adduser

在Pypi上发布自己的Python包

使用Python编程的都知道,Python的包安装非常的方便,一般都是可以pip来安装搞定: sudo pip install <package name> pip的安装请移步:https://pip.pypa.io/en/stable/installing/ 最近因为项目上的需要,发布了一个自己的pypi Python包,这里我大致分享如何发布自己的Pypi包一般过程. 打包工作主要依赖python的一个叫setuptools的包来完成,在进行下面操作前请使用pip安装它: sudo pip

Qt5在程序打包发布时遇到的问题和解决方法

近期刚刚学会用qml写QT程序,感觉QML写界面真的是要好很多的,尤其是在写一些移动端的应用的时候. 最近在打包发布程序的时候遇到些问题,已经完美解决,希望给遇到同样问题的Qter一些参考. 以前在打包Qwiget的程序的时候,一般是在编译release版本后,直接点击exe文件,把提示缺少的dll文件放在一起即可.但是这次直接点击exe文件后,提示的是0xc000007b错误代码. 在网上搜索解决方案后决定采用http://tieba.baidu.com/p/3730103947 中提到的wi

QT5.4 计算器程序 打包&amp;发布,解决dll的最新解决方案(图文并茂,很清楚)

QT写界面还是很不错,就是打包会比较麻烦,折腾了一天总算是打包完成了. QT软件的打包发布一个难点是必备dll文件的识别,现在高版本QT自带了一个windeployqt工具,直接会把需要的dll生成一份,放在软件的目录里面. 参考官方文档:http://doc.qt.io/qt-5/windows-deployment.html#application-dependencies 具体使用步骤如下: 1.添加qt的bin/目录进系统path变量.很简单,在系统属性里设置,添加D:\QT\QT5.4

QT5.4 计算器程序 打包&amp;发布,解决dll的最新解决方案

QT写界面还是很不错,就是打包会比较麻烦,折腾了一天总算是打包完成了. QT软件的打包发布一个难点是必备dll文件的识别,现在高版本QT自带了一个windeployqt工具,直接会把需要的dll生成一份,放在软件的目录里面. 参考官方文档:http://doc.qt.io/qt-5/windows-deployment.html#application-dependencies 具体使用步骤如下: 1.添加qt的bin/目录进系统path变量.很简单,在系统属性里设置,添加D:\QT\QT5.4

RN在Android打包发布App

参考资料:http://www.jianshu.com/p/b8811669bcb6 RN在Android打包发布App 1-:生成一个签名密钥你可以用keytool命令生成一个私有密钥.在Windows上keytool命令放在JDK的bin目录中(比如C:\Program Files\Java\jdkx.x.x_x\bin),你可能需要在命令行中先进入那个目录才能执行此命令.在mac上,直接进入项目根目录输入一下命令: $ keytool -genkey -v -keystore my-rel

如何使用npm发布Node.JS程序包

如何使用npm发布Node.JS程序包 Heero.Luo发表于3年前,已被查看5065次 npm是Node.JS的程序包管理器.进行Node.JS开发时,经常使用它安装/卸载程序包.实际上,发布程序包的工作也是由它来完成的. 配置package.json 要打包程序,首先要配好各项设置,这些设置都由程序包根目录下的package.json指定.package.json的内容必须是严格的JSON格式,也就是说: 字符串要用双引号括起来,而不能用单引号: 属性名一定要加双引号: 最后一个属性后千万

[3d跑酷] Xcode5 打包 发布配置

写作时间:2014-02-18 主题 Unity导出Xcode项目,使用Xocde打包ipa并提交到AppStore 步骤 1.设置发布相关参数,比如 包名,版本,证书,ios设备版本 2.设置体系结构,支持的平台(IOS/OS X) 3.选择发布证书(证书分:发布证书和开发证书)

Android 混淆打包不混淆第三方jar包

项目因为要发布,所以要混淆打包. 混淆打包流程: 1.在proguard-project.txt文件中添加不需要混淆的类和第三方的jar包 这个是保持自己包中不需要混淆的类,如果有些类调用了jni也不需要混淆,不然会出错.还有如果项目中有其他项目作为library引入,那这些项目的一些类也不能混淆. 这个是保持项目中的第三方jar不混淆 另外加上上面几句话,不然会在控制台中报warning警告 2.在project.properties文件中把proguard.config=${sdk.dir}