第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【九月打卡】第15天 本地測(cè)試我們打包的組件

標(biāo)簽:
Vue.js

课程名称web前端架构师

课程章节:第13周 第四章

主讲老师:张轩

课程内容:本地测试我们打包的组件

在使用 rollup 打包组件时,当我们使用第三方模块时,如果我们还没有做任何处理,就会出现下面警告

(!) Unresolved dependencies
https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency
vue (imported by src/App.vue?vue&type=script&setup=true&lang.ts, src/components/HelloWorld.vue?vue&type=script&setup=true&lang.ts)
(!) Missing global variable name
Use output.globals to specify browser global variable names corresponding to external modules
vue (guessing 'vue')

查看后,我们知道如果想要将vue 文件打包进去,我们需要安装 @rollup/plugin-node-resolve

pnpm i @rollup/plugin-node-resolve -D

加上后,我们发现打包后的文件比之前大了不少,这是因为 rollup 把我们是使用第三方模块的方法也打包进去了,尽管代码已经进行了 tree-shaking 了。我们需要先了解 npm 依赖

npm 依赖分类

dependencies

运行项目业务逻辑需要依赖的第三方库
npm install ‘模块名称’ 的时候都会被解析,下载

devDependencies

开发模式工作流下依赖的第三方库
单元测试,语法转换,lint 工具,程序构建,本地开发 等等

peerDependencies

需要核心依赖库,不能脱离依赖库单独使用

我们可以将我们组件使用的第三方模块放到 peerDependencies。rollup 中 external 可以表示哪些外部依赖, Rollup 只会解析,并不会导入

// rollup.config.js
export default {
  external: ['vue'],
}

生成两种格式的文件

我们组件会生成 esm 和 umd 两种格式

首先我们需要将公用的配置文件提取出来

公用配置文件

import vue from 'rollup-plugin-vue'
import typescript from 'rollup-plugin-typescript2'
import img from '@rollup/plugin-image'
import autoprefixer from 'autoprefixer'
import postcss from 'rollup-plugin-postcss'
import { nodeResolve } from '@rollup/plugin-node-resolve'

const overrides = {
  compilerOptions: {
    declaration: true
  },
  exclude: ['src/App.vue', 'src/components/HelloWorld.vue']
}
export const file = type => {
  return `dist/bundle.${type}.js`
}
export const output = {
  name: 'App'
}
export default {
  input: './src/main.ts',
  external: ['vue'],
  plugins: [
    vue(),
    typescript({
      tsconfigOverride: overrides
    }),
    img(),
    nodeResolve(),
    postcss({
      plugins: [autoprefixer()],
      extract: true
    })
  ]
}

处理 esm

import baseConfig, { file, output } from './rollup.config'
export default {
  ...baseConfig,
  output: {
    ...output,
    format: 'esm',
    file: file('esm')
  }
}

处理 umd

打包生成 umd 格式的文件时,会出现警告信息

(!) Missing global variable name
Use output.globals to specify browser global variable names corresponding to external modules
vue (guessing 'vue')

umd 格式外部依赖都是全局变量,我们这里没有设置全局变量的名称,所以出现这个警告,我们需要告诉rollup 全局变量的名称,通过 globals 进行设置

import baseConfig, { file, output } from './rollup.config'
export default {
  ...baseConfig,
  output: {
    ...output,
    format: 'umd',
    file: file('umd'),
    globals: {
      vue: 'Vue'
    },
    exports: 'named'
  }
}

打包命令配置

我这里使用了 npm-run-all 这个模块帮我们一键执行多个命令

pnpm i npm-run-all
{
  "scripts": {
    "build:esm": "rollup --config build/rollup.esm.js",
    "build:umd": "rollup --config build/rollup.umd.js",
    "build": "rm -rf dist && npm-run-all build:*"
  },
}

使用npm-link 测试本地

首先需要修改我们组件的 package.json 文件

  • main common js 入口文件
  • module 当我们使用 esm 导入文件时的入口文件
  • types ts 类型文件
{
  "main": "dist/bundle.umd.js",
  "module": "dist/bundle.esm.js",
  "types": "dist/main.d.ts"
}

修改后执行 npm link

npm link

在需要引入的项目中执行 npm link + 模块名进行测试

npm link test-app

然后就可以在本地项目中导入测试使用我们的组件了

图片描述

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消