这是本文档旧的修订版!


NPM 包开发

初始化

建立一个目录 base

USER
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

file

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

async function PlayCommand(){
  console.log('start debug...')
  let s = 0
}
PlayCommand()

发布包

新建文件 .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 服务器,这样代码就不会泄漏 1) verdaccio

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 install <your-package-name> --registry http://localhost:4873

// 从私人服务器查看最新的一个版本
npm show huahets version --registry http://localhost:4873

Creating and publishing private packages

需要允许外部访问,打开文件 .config/verdaccio/config.yaml 或者 ~/verdaccio/config.yaml 尾部添加代码

 listen:
  - 0.0.0.0:4873
it/node/npmpackage.1660740652.txt.gz · 最后更改: 2022-08-17 12:50 由 goldentianya
回到顶部
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0