node-npm发布包-package.json中bin的用法

前言

用过angular-cli,create-react-app这些脚手架的朋友们,不知道你们有没有好奇过,
为什么安装这些脚手架后,可以使用类似ng generate之类的命令。小弟研究了以下,原来是这样的。

package.json

贴一个简单的package.json

{
  "name": "arashiquan33-node-learn",
  "version": "1.1.0",
  "description": "learn node.js",
  "main": "module.js",  //包的入口文件
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "node",
    "express"
  ],
  "author": "arashiquan33",
  "license": "ISC"
}

接下来我们也给这个包制作一个命令,叫q-cli。

  1. 新建bin文件夹,创建q-cli.js
#!/usr/bin/env node
function run (argv) {
    if (argv[0] === ‘-v‘ || argv[0] === ‘--version‘) {
        console.log(‘  version is 0.0.1‘);
    } else if (argv[0] === ‘-h‘ || argv[0] === ‘--help‘) {
        console.log(‘  usage:\n‘);
        console.log(‘  -v --version [show version]‘);
    }
}
run(process.argv.slice(2));

#!/usr/bin/env node 这段话的意思是让使用 node 进行脚本的解释程序,那下面的就可以使用 node 的语法了

process.argv.slice(2),//从进程中获取参数

好了,上面这段脚本当被加载执行的时候,会首先执行run方法,并且传入进程输入的参数。

添加bin

好了,现在我们把bin需要的可执行js文件已经创建好,接下来需要在package.json中描述进去.

{
  "name": "arashiquan33-node-learn",
  "version": "1.1.0",
  "description": "learn node.js",
  "main": "module.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "bin": {
    "q-cli": "./bin/q-cli.js"  //告诉package.json,我的bin叫q-cli,它可执行的文件路径是bin/q-cli.js
  },
  "keywords": [
    "node",
    "express"
  ],
  "author": "arashiquan33",
  "license": "ISC"
}

好了,现在换差最后一步我们就可以再命令行使用q-cli.

打成全局包

必须要打成全局包才可以使用该命令,打成全局包的命令
npm install . -g
或者
npm link

好了,现在可以再命令行输入q-cli,

原文地址:https://www.cnblogs.com/xiaozhumaopao/p/12357455.html

时间: 2024-09-28 00:37:37

node-npm发布包-package.json中bin的用法的相关文章

npm脚本和package.json

1.什么是npm脚本 在创建node.js项目如一个vue项目,或一个react项目时,项目都会生成一个描述文件package.json . 比如npm允许在package.json文件里面,使用scripts字段定义脚本命令. { //... "scripts": { "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "

npm安装package.json中的模块依赖

1.package.json不存在时 命令:npm init可自动创建package.json文件 npm init 2.package.json存在时 直接命令:npm install 或者 npm install -–save-dev会自动将package.json中的模块安装到node-modules文件夹下 npm install -–save-dev 原文地址:https://www.cnblogs.com/konglingxi/p/9746876.html

es6转码和package.json中的配置

在线实时转换 需要babel-register .babelrc中: { "presets": [ "es2015" ] } 项目中main.js配置: 前提是安装对应的包 require('babel-register') require('./src/app') 自己写的要运行的为app.js,这样配置后会在运行main.js是自动转为es5并执行 通过配置手动转换 需要babel-cli 安装babel后 运行babel src -d dist src为自己写

package.json中devDependencies与dependencies的区别

前言:之前一直不懂既然都是项目的依赖,为什么要分成两个部分,devDependencies和dependencies,有什么区别? 安装方式 我们在通过npm安装插件或库时,有三种方式: npm install:将插件安装到项目,但不写package.json(不推荐,这样最终需要手动添加) npm install --save:将插件安装进项目,并写入package.json的dependencies中 npm install --save-dev:将插件安装进项目,并写入package.js

npm install、npm init、npm update、npm uninstall和package.json

npm install 安装本地包 npm install <package_name>:这个命令将在当前目录中创建node_modules目录(如果尚不存在),并将该软件包下载到该目录.该命令默认本地安装. 安装了哪个版本的软件包? 如果本地目录中没有package.json文件,则会安装最新版本的软件包. 如果有package.json文件,则安装满足该package(如果有的话)在package.json中声明的semver规则的最新版本. 安装全局包 npm install -g &l

下载了包在node_modules中,但没有在package.json中保存该包信息。

发现安装了包,但没有在package.json中保存该包信息,而且没有创建package-lock.json. 经过测试,发现是使用cnpm的原因,使用npm安装不会出现这样的问题,(与cnpm版本无关,具体原因不清楚). 要解决npm下载慢的问题,可以使用nrm切换npm的源地址. npm install nrm -g nrm ls nrm use taobao npm install **   -* 原文地址:https://www.cnblogs.com/wyc-blog/p/113927

npm发布包--所遇到的问题

npm发布包: 解决方案--npm adduser的坑:http://www.tuicool.com/articles/FZbYve npm ERR publish 403,nodejs发布包流程 :http://www.cnblogs.com/zhoudaozhang/p/4730070.html npm发布注意事项:http://m.blog.csdn.net/article/details?id=49018629 快速切换npm源的开源工具--nrm: http://www.cnblogs

npm生成的package.json文件中依赖项版本号前的波浪号(~)和插入符号(^)是啥意思?

package.json一般也就长这么模样: { "name": "", "description": "", "version": "4.17.1", "author": "", "contributors": [], "license": "MIT", "repository

npm的package.json中文文档

http://mujiang.info/translation/npmjs/files/package.json.html https://github.com/ericdum/mujiang.info/issues/6/