import { Command } from "commander";
import open from "open";
// [] indicates that this is optional
// <> indicates that this is a required value
export const serveCommand = new Command()
.command("serve [filename]")
// when user enters node index.js --help, it sees description
.description("ADd a description")
.option("-p, --port <number>", "port to run server on", "4005")
.option("-v, --version", "show version", version, "")
// first arg will be the arg that passed in command() SO filename
// second arg is all other options
// THIS IS WE TELL WHAT TO DO
.action(async (filename = "main.js", options: { port: string }) => {
try {
// this is where you add logic about what to do when enterd the command
open("http://localhost:4005");
} catch (error: any) {
if (error.code === "EADDRINUSE") {
console.error("Port is in use. Try runnng on a different port ");
} else {
console.log("Issue is :", error.message);
}
process.exit(1);
}
});
字符串
若要使JavaScript运行代码,请在主文件中
//whenever anyone runs cli from command line, this file will be executed.
!/usr/bin/env node
import { program } from "commander";
// this is the above command
import { serveCommand } from "./commands/serve";
// you could chain other commands .addCommand(otherCommand)
program.addCommand(serveCommand);
// parse this and run the aprropriate command that you put together
program.parse(process.argv);
3条答案
按热度按时间fnx2tebb1#
字符串
型
package.json
。为了在这些子包之间进行通信,你可以将它们添加到package.json中的依赖项中。例如,你必须在你的主包中使用package.json
包。所以在package.json中型
声明作用域包
使用Lerna来管理所有这些npm包。它用于管理多项目包。- Lerna是一个我们可以用来管理多包项目的工具。Yarn和Npm类似于Lerna。还有Bolt和Luigi。
sr4lhrrt2#
关于如何发布您的库
你可以阅读官方npm文档了解如何创建nodejs包模块:https://docs.npmjs.com/creating-node-js-modules
基本上,你需要的是一个JS模块文件(IE
test.js
),用exports
关键字导出:字符串
然后使用
npm publish
发布模块(如果您希望它是公共的,请添加--access public
)最后使用npm install <your-module-name>
导入项目中需要的包关于类型定义
我知道你正在使用 typescript ?那么下面的链接是一个很好的阅读:https://www.typescriptlang.org/docs/handbook/declaration-files/dts-from-js.html
laawzig23#
我强烈推荐你使用jslib-base来开发JS库(https://github.com/yanhaijing/jslib-base),这是一个非常有用的脚手架,可以简化你的JS库开发过程!