====== NPM 包开发 ====== 已经做好了一模版,直接拉取就好了 ''%%scp -r git@serverpi:~/swap/npmTemplate .%%'' ''%%scp -r git@serverpi:~/swap/npmTemplate/ ./folder%%'' [[https://monsoir.github.io/Notes/Node/writing-npm-package-in-typescript.html|使用 TypeScript 编写 npm 包并进行发布]] [[https://juejin.cn/post/6844903892119977998|一步步构建发布一个 TypeScript NPM 包]] ===== 初始化 ===== 建立一个目录 base mkdir base cd base npm init -y echo "node_modules" >> .gitignore 修改package.json文件 "main": "./dist/index.js", "types": "./dist/index.d.ts", 新建 tsconfig.json { "compilerOptions": { "target": "es5", "module": "commonjs", "declaration": true, "outDir": "./dist", "strict": true, "strictNullChecks": true, "lib": ["es6"], "esModuleInterop": true, }, "include": ["src"], "exclude": ["node_modules", "**/Test/*", "private"], } 创建 src 文件夹,在其下新建一个 index.ts,内容如下 export const Greeter = (name: string) => `Hello ${name}`; 在 package.json 中添加 build script ''%%"build": "tsc"%%'',运行 ''%%npm run build%%'' ===== 测试 ===== 安装常用包 npm install ts-node --save-dev npm install --save-dev typescript tslint @types/node npm install --save-dev tsconfig-paths npm install chai --save-dev npm install mocha --save-dev npm i --save-dev @types/mocha npm i --save-dev @types/chai npm i chai-as-promised -D npm i --save-dev @types/chai-as-promised npm i moment npm i --save-dev nodemon 在 package.json 中添加 "scripts": { "test": "mocha --timeout 10000 -r ts-node/register Test/**/*.spec.ts Test/*.spec.ts", "test-single": "mocha --timeout 100000 -r ts-node/register", "build": "tsc -P tsconfig.json" } 创建一个测试文件 base.spec.ts import { expect, assert } from 'chai'; import 'mocha'; describe('基本 测试', () => { it('Reduce', async () => { assert.equal(true, true, 'simple') }) }) 运行 ''%%npm run test-single Test/base.spec.ts%%'' 测试异步函数需要安装 chai-as-promised npm i chai-as-promised -D npm i --save-dev @types/chai-as-promised *.spec.ts 文件中使用 const chai = require('chai') const expect = chai.expect chai.use(require('chai-as-promised')) describe('Yahoo API', () => { it('MetaData()', async () => { // MetaData() 是异步函数 expect(api.MetaData('CN', 'AAAA')).to.eventually.be.rejected }) }) 添加一个debug.ts\\ 安装 ''%%npm i --save-dev ts-node tsconfig-paths%%'' ([[it:node:ts_node|]]) async function PlayCommand(){ console.log('start debug...') let s = 0 } PlayCommand() 创建一个测试 lauch.json { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "pwa-node", "request": "launch", "name": "Debug TS", "skipFiles": [ "/**" ], "program": "${workspaceFolder}/Test/debug.ts", "runtimeArgs": ["-r", "ts-node/register", "-r", "tsconfig-paths/register"], "console": "integratedTerminal", } ] } ===== 更新版本 ===== ''%%npm version patch%%'' ( minor, major) ===== 发布包 ===== 新建文件 ''%%.npmignore%%'' 清除敏感文件 private Test ''%%npm publish%%'' 在第二个项目中使用 ''%%npm i simperatorbase@latest%%'' 并倒入文件 import {Greeter} from "simperatorbase/dist" let msg = Greeter(name) + `!`; ====== NPM 注册账号 ====== 官方网站为 https://www.npmjs.com/ 在官方网站上注册成功后,命令行窗口可以添加用户 npm adduser // 依次输入注册时使用的 username、password、email npm config ls // 查看当前配置 ~ cat /Users/dd/.npmrc // 查看用户信息 npm logout // 退出登录 创建私人 npm 服务器,这样代码就不会泄漏 (([[https://medium.com/aeturnuminc/publish-and-resolving-npm-packages-using-private-npm-server-easy-step-by-step-c16f886d452f|Publish and Resolving npm packages using private npm server ]])) [[https://github.com/verdaccio/verdaccio|verdaccio]] {{fa>github}} npm i -g npm npm install -g verdaccio // 启动服务 要后台运行可 pm2 start verdaccio verdaccio 访问私人服务器 ''%%npm adduser --registry http://localhost:4873%%'' (可将localhost改为部署的vps地址) npm adduser --registry http://localhost:4873 npm publish --registry http://localhost:4873 npm info simperatorbase --registry http://localhost:4873 npm install --registry http://localhost:4873 // 从私人服务器查看最新的一个版本 npm show huahets version --registry http://localhost:4873 在新的计算机登录进去的命令为,用户为++mai|123456++ npm login --registry http://vpspi:4873 查看服务器上部署的包 http://vpsnote:4873/ [[https://docs.npmjs.com/creating-and-publishing-private-packages|Creating and publishing private packages]] 需要允许外部访问,打开文件 .config/verdaccio/config.yaml 或者 ~/verdaccio/config.yaml 尾部添加代码 listen: - 0.0.0.0:4873