HMVue1.4【打包发布】

1

 

 

 

 

 

 

 

 

 

 


 

2

 

 

 

 

 

 

 

 

package.json中"scripts"的--mode优先级高,会覆盖掉webpack.config.js中module.exports设置的mode,所以webpack.config.js中直接将mode固定为development即可

开发阶段:npm run dev  ,生成的bundle.js在内存中

发布阶段:npm run build  ,生成的bundle.js在物理磁盘中

 

3

 

 

 

 

 

 npm run build

 

 

 

4

 

 

 

 

 npm run build

 

 


 

5

package.json

复制代码
{
  "name": "change-rows-color",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "webpack serve",
    "build": "webpack --mode production"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "jquery": "^3.6.0"
  },
  "devDependencies": {
    "@babel/core": "^7.14.6",
    "@babel/plugin-proposal-decorators": "^7.14.5",
    "babel-loader": "^8.2.2",
    "clean-webpack-plugin": "^4.0.0",
    "css-loader": "^5.2.6",
    "file-loader": "^6.2.0",
    "html-webpack-plugin": "^5.3.2",
    "less": "^4.1.1",
    "less-loader": "^10.0.1",
    "style-loader": "^3.0.0",
    "url-loader": "^4.1.1",
    "webpack": "^5.42.1",
    "webpack-cli": "^4.9.1",
    "webpack-dev-server": "^4.5.0"
  }
}
View Code
复制代码

 

webpack.config.js

复制代码
const path = require('path')

//1、导入HTML插件,得到一个构造函数
const HtmlPlugin = require('html-webpack-plugin')
//2、创建HTML插件的实例对象
const htmlPlugin = new HtmlPlugin({
    template: './src/index.html', //指定要复制哪个页面
    filename: './index.html', //指定复制出来的文件名和路径
});

const { CleanWebpackPlugin } = require('clean-webpack-plugin');

//使用node.js的导出语法,向外导出一个webpack配置对象
module.exports = {
    //指定webpack的运行模式,可选development或production
    mode: 'development', 
    /*结论:
    开发时候一定要用 development,因为追求的是打包的速度,而不是体积;
    反过来,发布上线的时候一定能要用 production,因为上线追求的是体积小,而不是打包速度快!*/
    
    //指定打包入口文件(处理的文件)
    entry: path.join(__dirname, './src/index1.js'), //__dirname表示当前文件的路径,当前为项目根目录
    //指定打包出口文件(生成的文件)
    output: {
        path: path.join(__dirname, './dist'),//第一个path是output的属性,第二个path是上文导入的一个node模块
        filename: 'js/bundle.js'
    },

    //3、通过plugins节点,使webpack的插件生效
    plugins: [
        htmlPlugin,
        new CleanWebpackPlugin(),
    ], 

    devServer: {
        open: true,
        port: 80,
    },

    module: {
        rules: [
            //该数组中定义了不同模块对应的loader
            {
                test: /\.css$/, 
                use:[
                    'style-loader',
                    'css-loader'
                ]
            },
            {
                test: /\.less$/, 
                use:[
                    'style-loader',
                    'css-loader',
                    'less-loader'
                ]
            },
            {
                test: /\.jpg|png|gif$/, 
                use: 'url-loader?limit=470&outputPath=images'
                // 如果需要调用的 loader 只有一个,则只传递一个字符串也行,如果有多个loader,则必须指定数组
                // 在配置 url-loader 的时候,多个参数之间,使用 & 符号进行分隔
            },
            {
                test: /\.js$/, 
                use: 'babel-loader',
                exclude: /node_modules/
                // 在配置 babel-loader 的时候,程序员只需要把自己的代码进行转换即可;一定要排除 node_modules 目录中的 JS 文件
                // 因为第三方包中的 JS 兼容性,不需要程序员关心
            },
        ]
    },

};
View Code
复制代码

 

posted @   yub4by  阅读(28)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示