====== 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