NPM 包开发
已经做好了一模版,直接拉取就好了
scp -r git@serverpi:~/swap/npmTemplate .
scp -r git@serverpi:~/swap/npmTemplate/ ./folder
初始化
建立一个目录 base
修改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
安装 npm i --save-dev ts-node tsconfig-paths
(nodemon + 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": [ "<node_internals>/**" ], "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 服务器,这样代码就不会泄漏 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 info simperatorbase --registry http://localhost:4873 npm install <your-package-name> --registry http://localhost:4873 // 从私人服务器查看最新的一个版本 npm show huahets version --registry http://localhost:4873
在新的计算机登录进去的命令为,用户为mai
npm login --registry http://vpspi:4873
查看服务器上部署的包 http://vpsnote:4873/
Creating and publishing private packages
需要允许外部访问,打开文件 .config/verdaccio/config.yaml 或者 ~/verdaccio/config.yaml 尾部添加代码
listen: - 0.0.0.0:4873