node命令行工具

大约 7 分钟

node命令行工具

注意事项 https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99copen in new window

  • tsconfig.json设置"module": "CommonJS",
  • package.json一般不建议设置"type":"module"不然编译出来的js文件需要加上后缀名import help from './help.js',然而ts编译出来的并没有后缀

https://www.jsdocs.io/open in new window

cli依赖库

文件处理

常用cli库

Web frameworks

数据库

其他

第一种使用cross-env

import dotenv from "dotenv";

dotenv.config({ path: `.env.${process.env.NODE_ENV}` });

在package.json写下script

"start":"cross-env NODE_ENV=dev esno main.ts"

第二种使用env-cmd

"start":"env-cmd -f .env esno main.ts"

第三种 使用dotenv-cli

"start":"dotenv -e .env esno main.ts"

一些好用的cli

全局安装的工具

打包工具

  • webpack
  • Vite
  • pm2
  • forever
  • yo (yeoman)
  • Parcel
  • tsup
  • unbuild
  • nativefier
  • esno
  • nodemon
  • ts-node
  • nexe 和pkg类似
  • pkg 把nodejs打包为一个单文件,不需要安装nodejs就可以执行

提示

首次使用会出现下载基础包时间过长的问题,如:

> Targets not specified. Assuming:
  node14-linux-x64, node14-macos-x64, node14-win-x64
> Fetching base Node.js binaries to PKG_CACHE_PATH
  fetched-v14.4.0-linux-x64    [                    ] 0%
 

这种情况下可以手动下载,进入页面手动下载对应的基础包:   地址open in new window 然后拷贝到全局目录PKG_CACHE_PATH 内,PKG_CACHE_PATH 可以通过设置系统变量来设置:

 
export PKG_CACHE_PATH=/usr/local/node/pkg_cache_path

运行完毕后把这行命令建议放到 /etc/profile文件尾部实现长久生效。 运行过 pkg命令后,PKG_CACHE_PATH 目录下有个以版本号命名的目录,将刚才下载的文件重命名为所需文件拷贝到这个目录即可。例如上面命令提示的文件名是 fetched-v16.15.0-win-x64 ,则拷贝时重命名为该名称。 再次运行pkg命令就不会下载了,打包速度很快!

esm注意事项

注意chalk版本必须是4 https://github.com/raineorshine/npm-check-updates/blob/main/package.jsonopen in new window 使用esmpackage https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99copen in new window

#查看依赖树
npm ls --depth=1
#查看glob这个包被谁引用了
npm explain glob

原因https://github.com/chalk/chalk/releases/tag/v5.0.0open in new window

替代旧的语法

旧的

var re = /([0-9])([0-9])([0-9])/;
re.test("345");
var three = RegExp.$1;
var four = RegExp.$2;
var five = RegExp.$3;

新的

var re = /([0-9])([0-9])([0-9])/;
var [, three, four, five] = "345".match(re);

编译为esm的语法见https://github.com/antfu/tazeopen in new window

unbuild

import { defineBuildConfig } from "unbuild";

export default defineBuildConfig({
  entries: ["src/"],//也可以不写,会打包为一个单文件
  rollup: {
    inlineDependencies: true,
  },
  clean: true,
  declaration: true,
});

关于不生成.mjs文件名的问题

见issuehttps://github.com/unjs/unbuild/issues/83open in new window

需要在.prettierrc写下
"printWidth": 1000


{
  "htmlWhitespaceSensitivity": "ignore",
  "useTabs": false,
  "endOfLine": "auto",
  "proseWrap": "preserve",
  "quoteProps": "as-needed",
  "embeddedLanguageFormatting": "off",
  "insertPragma": false,
  "printWidth": 1000
}

node 开发命令行

node link

npm link 是将当前目录包链接到全局 npm remove -g pka-name 是将全局的链接的 pkg-name 包移除 npm unlink pka-name 是将当前项目中软链接的包移除

删除全局包

 npm rm -g <name>

对于pnpm

要先设置 pnpm_home

然后安装全局包

pnpm link -g 

卸载的话

pnpm un -g