npm关键点之npm包编写与发布

编写的一个脚手架(或组件)可以发布为npm包来让其它项目使用。
以@mosfe/beam为例,发布一个npm包大概需要以下几步:

发布npm包

1、编写脚手架内容和入口文件

写好一个脚手架或组件,新建一个index.js文件作为该组件的入口文件。
index.js 可以作为组件的唯一入口,即package.json main属性对应的值。在安装该npm包后会先执行index.js文件。代码如下:

index.js

module.exports = require('./lib/bone');

./lib/bone.js

/**
** 注册全局属性bone
**/
const path = require('path');
const bonePackage = require('../package.json');
...
const bone = module.exports = {};
bone.name = bonePackage.name;
...
// register global variable
Object.defineProperty(global, 'bone', {
    enumerable: true,
    writable: false,
    value: bone
});
...
bone['cli'] = require(path.join(__dirname, 'cli'));
2、配置bin命令。

如果是工具类npm包,则需要配置bin命令来供其它项目调用。如vue-cli配置的bin命令为:vue-cli-serve,其它项目即可直接调用vue-cli-serve命令。

package.json中配置bin如下:

"bin": {
    "beam": "./bin/bone"
  }

其中./bin/bone.js

const { cli } = bone;
cli.run();
 /* 给 beam 添加注册命令行选项或指令  */
 cli.run = () => {
    	// 添加注册查看版本选项
    	program
        .option('-v, --version')
        .version(JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8')).version);
    }

// 给 beam 添加注册指令 init <app-name>
program
	.command('init <app-name>')
        .description('init project')
        .option('-c, --current <current>', 'create project in current directory, equivalent to <app-name> is . (beam init .)')
        .action(async(name, cmd) => {
        	......
        }

// 给 beam 添加注册指令 list
program
	.command('list')
        .description('list available beam templates')
        .action(async() => {
        	const list = ['name0', 'name1'];
			console.log('list 如下:' + list);
		}

上面的配置即表示该npm包对外配置了一个命令beam,调用beam命令相当于执行./bin/bone.js文件内容。

3、执行npm init

初始化生成package.json,设置好main:index.js;bin:{ “beam”: ‘./bin/bone’ }的配置关系。

4、执行npm adduser 注册npm用户

官网注册和npm命令注册两种方式。
官网注册直接按提示注册用户名密码即可。
npm命令注册:npm adduser

5、执行npm login登录npm
6、执行npm publish 发布包

更新发布npm包时,先修改package.json中version,再执行npm publish发布。

其它详见:手把手教你用npm发布包

关于bin

package.json中的bin配置了一组命令:文件的映射关系,来对外提供执行该npm包相关功能的命令。其依据是:
在这里插入图片描述
该软连接就是一个文件,文件名为beam,文件内容为beam对应的js文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值