当前位置: 首页 > article >正文

node环境打包js,webpack和rollup两个打包工具打包,能支持vue

引言
项目中经常用到共用的js,这里就需要用到共用js打包,这篇文章讲解两种打包方式,webpack打包和rollup打包两种方式

1、webpack打包js

1.1 在根目录创建 webpack.config.js,配置如下

const path = require('path');
module.exports = {
 entry: './index.js', 
 output:{
  filename:'index.js',
  path:path.resolve(__dirname,'dist'),
  library: 'myModule',
  libraryTarget:'umd'
 },
 // 以下代码为新添加代码
 module:{
  rules:[
   {
    test: /\.js$/, // 匹配所有 js 文件
    loader: 'babel-loader' // 使用 babel-loader 处理 js 文件
   },
  ]
 },
};

1.2 安装依赖包 package.json

npm install @babel/core @babel/preset-env babel-loader @babel/plugin-transform-runtime 这里用来将es6转成es5
npm install webpack webpack-cli

{
  "main": "index.js",
  "scripts": {
    "buildwebpack": "webpack"
  },
  "devDependencies": {
    "@babel/core": "^7.23.9",
    "@babel/preset-env": "^7.23.9",
    "babel-loader": "^9.1.3",
    "webpack": "^5.90.0",
    "webpack-cli": "^5.1.4"
  },
  "dependencies": {
    "@babel/plugin-transform-runtime": "^7.23.9"
  }
}

1.3 配置 babel.config.js

const presets = [
    [
        "@babel/env",
        {
            targets: {
                ie: "6",
                edge: "17",
                firefox: "60",
                chrome: "67",
                safari: "11.1"
            },
            //useBuiltIns: "usage",
            //corejs: "3", // <---  此处加个这个,就没有报错警告了

        },
    ],
];

module.exports = { presets,
    "plugins": ["@babel/transform-runtime"]
};

1.4 webpack 支持vue

“vue-loader”: “^15.11.1”,
“vue-template-compiler”: “^2.6.12” //需要和vue版本一致
npm install vue-loader@15 vue-template-compiler@2 vue@2 css-loader

const path = require('path');
const {VueLoaderPlugin} = require('vue-loader')
module.exports = {
 entry: './index.js', 
 output:{
  filename:'index.js',
  path:path.resolve(__dirname,'dist'),
  library: 'myModule',
  libraryTarget:'umd'
 },
 // 以下代码为新添加代码
 module:{
  rules:[
   {
    test: /\.js$/, // 匹配所有 js 文件
    loader: 'babel-loader' // 使用 babel-loader 处理 js 文件
   },
   {
    test: /\.vue$/, 
    loader: 'vue-loader'
   },
//    { test: /\.css$/, 
//      use: ['style-loader','css-loader' ]
//    },
  ]
 },
 //需要注意的点:vue-loader 15版本需加入插件
 plugins: [
    new VueLoaderPlugin()
  ]
};

2、rollup 打包js

2.1 在根目录创建 rollup.config.js,配置如下

import babel from 'rollup-plugin-babel';
export default {
    input: 'index.js',
    output: {
        file: 'lib/index.js',
        format: 'cjs',
    },
    plugins: [ babel({
        runtimeHelpers: true, 
        presets: ["@babel/preset-env"],
    }) ],
};

2.2 安装依赖包 package.json

npm install @babel/core @babel/preset-env 这里用来将es6转成es5
npm install rollup rollup-plugin-babel

{
  "main": "index.js",
  "scripts": {
    "buildrollup": "rollup -c",
  },
  "devDependencies": {
    "@babel/core": "^7.23.9",
    "@babel/preset-env": "^7.23.9",
    "babel-loader": "^9.1.3"
  },
  "dependencies": {
    "@babel/plugin-transform-runtime": "^7.23.9",
    "rollup": "^2.79.1",
    "rollup-plugin-babel": "^4.4.0"
  }
}

2.4 rollup 打包vue

rollup-plugin-vue^5.1.9 + vue-template-compiler
rollup-plugin-postcss 识别css和预处理文件
npm install rollup-plugin-vue@5 vue-template-compiler rollup-plugin-postcss

export default {
    input: 'index.js',
    output: {
        file: 'lib/index.js',
        format: 'cjs',
    },
    plugins: [ babel({
        runtimeHelpers: true, 
        presets: ["@babel/preset-env"],
    }),
    vue2({
        css:true,
        compilerTemplate: true,
        preprocessStyles: true
    }) ],
};

http://www.kler.cn/a/229583.html

相关文章:

  • java小知识点总结
  • 三 BH1750 光感驱动调试1
  • 计算机网络 —— 网络编程(TCP)
  • 分布式ID—雪花算法
  • CF 371A.K-Periodic Array(Java实现)
  • C# 继承(接口)
  • SpringBoot中使用Spring自带线程池ThreadPoolTaskExecutor与Java8CompletableFuture实现异步任务示例
  • YOLOv8改进 | 检测头篇 | 独创RFAHead检测头超分辨率重构检测头(适用Pose、分割、目标检测)
  • 深度强化学习基础【1】-动态规划问题初探(leetcode算法的63题-不同路径II)
  • 题目:有1,2,3,4共四个数字,能组成多少个不相同而且无重复数字的三位数有多少个,都是多少?lua
  • 忘记 RAG:拥抱Agent设计,让 ChatGPT 更智能更贴近实际
  • 【数据结构和算法】--- 基于c语言排序算法的实现(1)
  • Elasticsearch:基本 CRUD 操作 - Python
  • PyTorch和TensorFlow的简介
  • 画出TCP三次握手和四次挥手的示意图,并且总结TCP和UDP的区别
  • 数字孪生网络攻防模拟与城市安全演练
  • 使用PDFBox实现pdf转其他图片格式
  • JDWP 简介
  • 勒索病毒最新变种.halo勒索病毒来袭,如何恢复受感染的数据?
  • 商汤科技「日日新4.0」正式发布,多维度升级大模型体系,能力比肩GPT-4!
  • CentOS 中文乱码
  • Google Chrome Close AutoUpdate
  • 小程序:类型三级分类
  • 【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • Ubuntu重装kubernetes集群