如何开发一个Library,并发布到NPM上

655 阅读2分钟

5-1 Library的打包

1.创建一个新的文件夹library

2.打开命令行工具,然后cd library/

3.运行命令 npm init -y 初始化library项目, 把库文件变成 node_modules 模块, 从而生成一个package.json项目描述文件

{

    "name": "library-my-self",    // 注意这个名字是不能重复的
    
    "version": "1.0.0",
    
    "description": "",
    
    "main": "./dist/library.js",  // 使用打包生成的dist文件下的library.js
    
    "scripts": {
        "build": "webpack"
    },
    "keywords": [],
    "author": "Dell",
    "license": "ISC" // 或者使用MIT  (MIT为完全开源的协议)
}

4.在项目library里创建几个文件src/math.js, src/string.js, src/index.js

其中math.js内容为:

export function add(a, b) {

    return a + b;
    
}

export function minus(a, b) {

    return a - b;
    
}

export function multiply(a, b) {

    return a * b;
    
}

export function division(a, b) {

    return a / b;
    
}

string.js的内容为:

import _ from 'lodash';

export function join(a, b) {

    return a + ' ' + b;
    
}

export function useLodash(a, b) {

    return _.join([a, b], '--')
    
}

index.js的内容为:

import * as math from './math';

import * as string from './string';

export default { math, string }

5.用命令行打开项目library,运行命令 npm install webpack webpack-cli lodash --save

6.在项目的根目录下手动创建一个文件webpack.config.js,其内容为:

const path = require('path');

module.exports = {

    mode: 'production',
    
    entry: './src/index.js',
    
    // externals: ["lodash"], // 打包的时候,如果遇到lodash这个库,就不要打包到代码里面去,让用户自己在业务代码里自己安装引用,避免重复打包
    
    // externals: "lodash",   // 这么写也是可以的
    
    // 或者这么写
    
    // externals: {
    
        // lodash: {
        
        //     commonjs: 'lodash'
        
        // }
        
    // }
    
    // 另外常用的一种写法
    
    externals: {
    
        lodash: 'lodash'
        
    },
    
    output: {
    
        path: path.resolve(__dirname, 'dist'),
        
        filename: 'library.js',
        
        library: 'library',   // 添加一个库的变量名字叫library;目的是:让用户可以使用<script src='library.js'></script>这种方式使用。如:library.math()
        
        libraryTarget: 'umd', // umd为通用的意思, 用户可以使用ES6的语法:import library from 'library'; 使用commonJs的语法:const library = require('library'); 或者使用AMD的语法使用:require(['library'], function () {});中的任意一种引入方式都是可以的, 如果umd改为了window,就表示在window上加了一个属性window.library.math()通过这种方式来使用
        
    }
}

执行命令npm run build生成一个dist/library.js供别人使用

8.登录npm的官方网站: www.npmjs.com 申请一个账号登录进去

9.在项目library的根目录下,打开命令行工具,运行命令npm adduser回车,添加用户名和密码成功之后

10.运行npm publish命令发布到npm 的仓库上面去

11.别人怎么使用呢,别人在自己的项目里面执行npm install library-my-self就可以使用了