独自のnpmモジュールをパブリッシュ

4760 ワード

1.前提&説明
インストールnode.js説明:この文書で説明した命令などはMacであり、Windowsでは若干異なる場合があります.
2.npmアカウントの登録
まずnpmアカウントの登録アドレスが必要です
3.モジュールを書き始める
パブリッシュされたパッケージは、既存のnpmモジュール名と競合しないため、作成したいパッケージの名前が重複しているかどうかを確認することをお勧めします.アドレスを確認し、このページで作成したいnpmモジュール名を検索して、すでに存在するかどうかを確認します.
プロジェクトの作成を開始します:(これを例に、正規検証モジュールを発表しました)
mkdir regexpForYou
cd regexpForYou
npm init
// package name        npm    
//        ,      

4.プロジェクトディレクトリ構造
まずプロジェクトディレクトリ構造を見てください.一部のファイルは後述します.
├── lib // npm run build     
| ├── index.js
├── src //     
| ├── index.js
├── test //     
| ├── test.js
├── .babelrc
├── package.json
├── README.md

5.プロジェクトのいくつかの構成
  • babel
  • を取り付けるsrcディレクトリで書くときはes6の文法を使うので、Babelでコンパイルする必要があります.
    npm install --save-dev babel-cli
    npm install --save-dev babel-preset-es2015
    

    新規構成.babelrc、構成.babelrc
    {
      "presets": ["es2015"]
    }
    
    srcディレクトリのコードをlibディレクトリにコンパイルし、package.jsonで「main」を「lib/index.js」に変更すると、外部に露出したコードに互換性の問題が発生しません.package.jsonファイルのscriptsを修正
    "scripts": {
        "build": "babel src -d lib"
    }
    

    これでnpm run buildを実行すると、ソースファイルがlibディレクトリにコンパイルされます.
    6.srcファイル作成src目次の下にreg.jsindex.jsを新設する
    // reg.js
    export const AmountReg = /^-?(\d|([1-9]\d+))(\.?\d{1,2})?$/
    export const PIntReg = /^(\d|([1-9]\d+))$/
    export const PNIntReg = /^-?(\d|([1-9]\d+))$/
    
    // index.js
    import * as REG from './reg'
    
    export function testAmount(str) {
        return REG.AmountReg.test(str)
    }
    export function testPIntReg(str) {
        return REG.PIntReg.test(str)
    }
    export function testPNIntReg(str) {
        return REG.PNIntReg.test(str)
    }
    

    7.ユニットテスト
    配布品質を保証するために、書き込みユニットテストが必要です.ここではmochachaiを使用してテストします.
    npm install mocha chai --save-dev
    

    新規testフォルダ、test.jsファイル
    // test.js
    const chai = require('chai')
    const should = chai.should()
    const regTest = require('../lib/index')
    
    describe("          ",() => {
        it('test -2.33 should equal true',() => {
            regTest.testAmount('-2.33').should.equal(true)
        })
    })
    
    describe("          ",() => {
        it('test -2.333 should equal false',() => {
            regTest.testAmount('-2.333').should.equal(false)
        })
    })
    
    describe("     ",() => {
        it('test -2 should equal false',() => {
            regTest.testPIntReg('-2').should.equal(false)
        })
    })
    
    describe("     ",() => {
        it('test 2 should equal true',() => {
            regTest.testPIntReg('2').should.equal(true)
        })
    })
    
    describe("      ",() => {
        it('test -2 should equal true',() => {
            regTest.testPNIntReg('-2').should.equal(true)
        })
    })
    
    describe("      ",() => {
        it('test 2 should equal true',() => {
            regTest.testPNIntReg('2').should.equal(true)
        })
    })
    
    describe("      ",() => {
        it('test 2.22 should equal false',() => {
            regTest.testPNIntReg('2.22').should.equal(false)
        })
    })
    
    package.jsonファイルのscriptsを修正
    "scripts": {
        "test": "npm run build && mocha -t 5000"
    }
    

    端末実行npm run testでは、実行結果が表示される
              
        ✓ test -2.33 should equal true
    
                
        ✓ test -2.333 should equal false
    
           
        ✓ test -2 should equal false
    
           
        ✓ test 2 should equal true
    
            
        ✓ test -2 should equal true
    
            
        ✓ test 2 should equal true
    
            
        ✓ test 2.22 should equal false
    
    
      7 passing (8ms)
    
    

    8.独自のnpmモジュールをリリースする
  • 初回アップロード:
  • npm login
    //              、  
    //   npm :
    npm publish
    
  • 自分のNPMパッケージを更新する:
  • npm version patch
    npm publish
    // npm version      :
    // patch:   ,    bug ,      v1.0.0->v1.0.1
    // minor:     ,       ,      v1.0.0->v1.1.0
    // major:           ,      v1.0.0->v2.0.0
    

    9.自己発行モジュールの使用
    npm install --save regexp-for-you
    
    const regexp = require('regexp-for-you');
    console.log(regexp.testAmount('-2.333'))
    

    実行例コード:node test.js、出力false、予想通り.