亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何使用webpack打包一個(gè)庫(kù)library的方法步驟

 更新時(shí)間:2019年12月18日 09:17:08   作者:rocky191  
這篇文章主要介紹了如何使用webpack打包一個(gè)庫(kù)library的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

日常我們開(kāi)發(fā)了一個(gè)庫(kù)之后,如何打包之后提供給別人使用呢?如果你不清楚,就繼續(xù)看吧?。。?/p>

初始化庫(kù)

mkdir library
cd library
npm init -y

經(jīng)過(guò)以上步驟后會(huì)生成一個(gè)library文件夾,里面包含一個(gè)package.json文件。然后簡(jiǎn)單修改為如下所示:

{
 "name": "library",
 "version": "1.0.0",
 "description": "",
 "main": "./dist/library.js",
 "scripts": {
  "build": "webpack"
 },
 "keywords": [],
 "author": "rocky",
 "license": "MIT"
}

簡(jiǎn)單創(chuàng)建幾個(gè)文件

在根目錄下新建src文件夾,新建一個(gè)math.js和string.js。相關(guān)文件內(nèi)容如下:

// 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
export function join(a,b){
  return a+" "+b;
}

繼續(xù)新建一個(gè)index.js

import * as math from "./math";
import * as string from "./string";

export default {math,string}

簡(jiǎn)單安裝webpack依賴

npm install webpack webpack-cli --save

安裝的同時(shí),可以創(chuàng)建webpack配置文件webpack.config.js,如下配置:

const path = require("path");

module.exports={
  mode:"production",
  entry:"./src/index.js",
  output:{
    path:path.resolve(__dirname,"dist"),
    filename:"library.js",
    library:"library",// 在全局變量中增加一個(gè)library變量
    libraryTarget:"umd"
  }
}

安裝成功后,執(zhí)行打包命令

npm run build

之后會(huì)在根目錄下生成一個(gè)dist文件夾,里面包含一個(gè)library.js。

如何使用呢?

如果別人要使用這個(gè)打包后的library.js的話,可能會(huì)有如下幾種方式:

// es6方式
import library from "library"

// commonjs方式
const library=require("library")

// AMD方式
require(["library"],function(){})

// script標(biāo)簽引入
<script src="library.js"></script>

在dist文件夾里創(chuàng)建一個(gè)index.html,用script引入之前打包生成的library.js。瀏覽器打開(kāi)index.html,在控制臺(tái)中輸入library,會(huì)得到如下所示的結(jié)果:

一個(gè)簡(jiǎn)單的庫(kù)便打包生成了。

注解:webpack中l(wèi)ibraryTarget配置項(xiàng)可以設(shè)為umd,表示采用umd規(guī)范,如果設(shè)置為this,表示在this下掛載了一個(gè)library變量。更多用法可參考webpack官網(wǎng)

引入別的庫(kù)用法

假設(shè)需要引入lodash.安裝lodash

npm install lodash --save

修改之前創(chuàng)建的string.js

import _ from "lodash";

export function join(a,b){
  // return a+" "+b;
  return _.join([a,b]," ");
}

運(yùn)行打包命令,發(fā)現(xiàn)打包出來(lái)的庫(kù)體積變大了,因?yàn)槲覀円肓薼odash,導(dǎo)致包變大。怎么辦呢?修改webpack配置文件。
增加一個(gè)externals配置項(xiàng):

const path =require("path");

module.exports={
  mode:"production",
  entry:"./src/index.js",
  externals:["lodash"],// 配置不打包文件
  output:{
    path:path.resolve(__dirname,"dist"),
    filename:"library.js",
    library:"library",
    libraryTarget:"umd"
  }
}

之后打包就會(huì)發(fā)現(xiàn)庫(kù)的體積又變小了。

以上就是一個(gè)簡(jiǎn)單打包庫(kù)的過(guò)程,打包完成后,就可以使用npm相關(guān)命令將庫(kù)發(fā)布到npm倉(cāng)庫(kù),發(fā)布成功后,就可以讓別的小伙伴使用了。當(dāng)然在實(shí)際情況中,打包一個(gè)庫(kù)的話,需要做的還有很多,比如tree-shaking,優(yōu)化方面的東西,我也正在逐漸學(xué)習(xí)中!

參考資料

webpack output libraryTarget
webpack external

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 學(xué)習(xí)javascript的閉包,原型,和匿名函數(shù)之旅

    學(xué)習(xí)javascript的閉包,原型,和匿名函數(shù)之旅

    Javascript中有幾個(gè)非常重要的語(yǔ)言特性——對(duì)象、原型繼承、閉包。其中閉包 對(duì)于那些使用傳統(tǒng)靜態(tài)語(yǔ)言C/C++的程序員來(lái)說(shuō)是一個(gè)新的語(yǔ)言特性,本文給大家介紹js的閉包,原型,和匿名函數(shù)之旅,感興趣的朋友一起學(xué)習(xí)吧
    2015-10-10
  • 一文搞懂如何避免JavaScript內(nèi)存泄漏

    一文搞懂如何避免JavaScript內(nèi)存泄漏

    SPA的興起,促使我們更加關(guān)注與內(nèi)存相關(guān)的JavaScript編碼實(shí)踐。如果應(yīng)用使用的內(nèi)存越來(lái)越多,就會(huì)嚴(yán)重影響性能,甚至導(dǎo)致瀏覽器的崩潰。下面就來(lái)看看JavaScript中常見(jiàn)的內(nèi)存泄漏以及如何避免內(nèi)存泄漏
    2022-05-05
  • JavaScript OOP類(lèi)與繼承

    JavaScript OOP類(lèi)與繼承

    JavaScript OOP類(lèi)與繼承實(shí)現(xiàn)代碼,需要的朋友可以參考下。
    2009-11-11
  • javascript 可控式透明特效實(shí)現(xiàn)代碼

    javascript 可控式透明特效實(shí)現(xiàn)代碼

    透明特效是script.aculo.us提到的特效中最簡(jiǎn)單的特效之一。既然是特效,必須涉及時(shí)間與空間的概念。時(shí)間我們可以用setTimeout與setInterval,個(gè)人比較喜歡setTimeout,雖然它每次調(diào)用都重復(fù)注冊(cè),但可控性比較好。
    2010-01-01
  • zTree插件之單選下拉菜單實(shí)例代碼

    zTree插件之單選下拉菜單實(shí)例代碼

    zTree插件之單選下拉菜單實(shí)例代碼。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-11-11
  • 原生JS實(shí)現(xiàn)圖片懶加載(lazyload)實(shí)例

    原生JS實(shí)現(xiàn)圖片懶加載(lazyload)實(shí)例

    圖片懶加載也是比較常見(jiàn)的一種性能優(yōu)化的方法,本篇文章主要介紹了原生JS實(shí)現(xiàn)圖片懶加載(lazyload)實(shí)例,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下
    2017-06-06
  • Javascript中call的兩種用法實(shí)例

    Javascript中call的兩種用法實(shí)例

    這篇文章主要介紹了Javascript中call的兩種用法實(shí)例,有需要的朋友可以參考一下
    2013-12-12
  • Javascript 拖拽雛形(逐行分析代碼,讓你輕松了拖拽的原理)

    Javascript 拖拽雛形(逐行分析代碼,讓你輕松了拖拽的原理)

    這篇文章主要介紹了Javascript 拖拽雛形(逐行分析代碼,讓你輕松了拖拽的原理),需要的朋友可以參考下
    2015-01-01
  • JS獲取字符對(duì)應(yīng)的ASCII碼實(shí)例

    JS獲取字符對(duì)應(yīng)的ASCII碼實(shí)例

    下面小編就為大家?guī)?lái)一篇JS獲取字符對(duì)應(yīng)的ASCII碼實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就想給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • JavaScript實(shí)現(xiàn)隨機(jī)碼的生成與校驗(yàn)

    JavaScript實(shí)現(xiàn)隨機(jī)碼的生成與校驗(yàn)

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)隨機(jī)碼的生成與校驗(yàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04

最新評(píng)論