VUE学习笔记--webpack(下)

简介: VUE学习笔记--webpack(下)

处理less文件

运行

npm i less-loader@10.0.1 less@4.1.1 -D

在webpack.confing.js文件中的module->rules数组中添加:

module: {
        rules:[
            {test:/\.css$/, use:['style-loader', 'css-loader']},
            {test:/\.less$/, use:['style-loader', 'css-loader', 'less-loader']}
        ]
    }

处理url路径相关的文件

npm i url-loader@4.1.1 file-loader@6.2.0 -D

js给img标签导入图片

<!-- 需求:把 /src/images/01.jpg 设置给src属性 -->
    <img src="" alt="" class="box"
// 导入图片,得到图片文件
import i from './images/01.jpg'
// 给img标签的src动态赋值
$('.box').attr( 'src', i )

补充:小图片适合转成base64,大图片不合适,转成base64图片体积会变大

打包处理js文件中的高级语法:

npm i babel-loader@8.2.2 @babel/core@7.14.6 @babel/plugin-proposal-decorators@7.14.5 -D

//导入html-webpack-plugin插件 得到插件的构造函数
const HtmlPlugin = require('html-webpack-plugin')
// new构造函数创建插件的实例对象
const htmlPlugin = new HtmlPlugin({
    // 指定要复制哪个页面
    template: './src/index.html',
    // 指定复制出来的文件名和存放路径
    filename: './index.html'
})
// 使用Node.js中的导出语法,向外导出一个webpack的配置对象
module.exports = {
    // 代表webpack运行的模式,可选值有两个development和production
    mode: 'development',
    // 插件的数组 将来webpack在运行时会加载并调用这些插件
    plugins: [htmlPlugin],
    devServer: {
        // 首次打包成功后自动打开浏览器
        open:true,
        // 在http协议中如果端口号为80可以省略
        port:8080,
        // 指定主机运行的地址
        host:'127.0.0.1' 
    },
    module: {
        rules:[
            {test:/\.css$/, use:['style-loader', 'css-loader']},
            {test:/\.less$/, use:['style-loader', 'css-loader', 'less-loader']},
            // 处理图片文件的loader
            // 如果需要调用的loader只有一个,则只传递一个字符串就行,如果有多个loader则必须指定数组
            { test:/\.jpg|png|gif$/, use: 'url-loader?limit=22229' },
            // 使用babel-loader处理高级的js语法
            // 注意:必须使用exclude排除指定项;因为node_modules目录下的第三方包不需要被打包
            {test:/\.js$/, use: 'babel-loader', exclude: /node_modules/}
        ]
    }
}

module.exports = {
    // 声明babel可用插件
    plugins: [['@babel/plugin-proposal-decorators', {legacy:true}]]

发布

优化打包后文件的存储路径:

建议写法:

module: {
        rules:[
            {test:/\.css$/, use:['style-loader', 'css-loader']},
            {test:/\.less$/, use:['style-loader', 'css-loader', 'less-loader']},
            // 处理图片文件的loader
            // 如果需要调用的loader只有一个,则只传递一个字符串就行,如果有多个loader则必须指定数组
            { test:/\.jpg|png|gif$/, use: 'url-loader?limit=22229&outputPath=images' },
            // 使用babel-loader处理高级的js语法
            // 注意:必须使用exclude排除指定项;因为node_modules目录下的第三方包不需要被打包
            {test:/\.js$/, use: 'babel-loader', exclude: /node_modules/}
        ]
    }

打包时清理旧文件:

插件安装文档

可以搜索对应插件,根据文档可以自行安装插件

Source Map

Source Map 可以在报错时提示对应的源文件的行号,便于定位错误位置修改错误

补充:文件后缀为 .map 为Source Map文件,文件中记录了源码对应的行号信息

package.json:

"scripts": {
    "dev": "webpack serve",
    "build": "webpack --mode production"
  },

webpack.config.js:

// 使用Node.js中的导出语法,向外导出一个webpack的配置对象
module.exports = {
    // devtool: 'eval-source-map',
    devtool: 'nosources-source-map',
    // 代表webpack运行的模式,可选值有两个development和production
    mode: 'development',
    entry: path.join(__dirname, './src/index.js'),
    output: {
        path: path.join(__dirname, 'dist'),
        filename: 'js/main.js'
    },
    // 插件的数组 将来webpack在运行时会加载并调用这些插件
    plugins: [htmlPlugin,new CleanWebpackPlugin()],
    devServer: {
        // 首次打包成功后自动打开浏览器
        open:true,
        // 在http协议中如果端口号为80可以省略
        port:8080,
        // 指定主机运行的地址
        host:'127.0.0.1' 
    },
    module: {
        rules:[
            {test:/\.css$/, use:['style-loader', 'css-loader']},
            {test:/\.less$/, use:['style-loader', 'css-loader', 'less-loader']},
            // 处理图片文件的loader
            // 如果需要调用的loader只有一个,则只传递一个字符串就行,如果有多个loader则必须指定数组
            { test:/\.jpg|png|gif$/, use: 'url-loader?limit=22229&outputPath=images' },
            // 使用babel-loader处理高级的js语法
            // 注意:必须使用exclude排除指定项;因为node_modules目录下的第三方包不需要被打包
            {test:/\.js$/, use: 'babel-loader', exclude: /node_modules/}
        ]
    }
}

实际开发中不需要自己配置webpack,有CLI一键生成带有webpack的项目

使用@代替./ …/

@代表src源代码目录

使用@从src开始向内查找

使用./ …/ 从当前文件向外查找

配置

webpack.config.js文件

const path = require('path')
//导入html-webpack-plugin插件 得到插件的构造函数
const HtmlPlugin = require('html-webpack-plugin')
// new构造函数创建插件的实例对象
const htmlPlugin = new HtmlPlugin({
    // 指定要复制哪个页面
    template: './src/index.html',
    // 指定复制出来的文件名和存放路径
    filename: './index.html'
})
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
// 使用Node.js中的导出语法,向外导出一个webpack的配置对象
module.exports = {
    // devtool: 'eval-source-map',
    devtool: 'nosources-source-map',
    // 代表webpack运行的模式,可选值有两个development和production
    mode: 'development',
    entry: path.join(__dirname, './src/index.js'),
    output: {
        path: path.join(__dirname, 'dist'),
        filename: 'js/main.js'
    },
    // 插件的数组 将来webpack在运行时会加载并调用这些插件
    plugins: [htmlPlugin,new CleanWebpackPlugin()],
    devServer: {
        // 首次打包成功后自动打开浏览器
        open:true,
        // 在http协议中如果端口号为80可以省略
        port:8080,
        // 指定主机运行的地址
        host:'127.0.0.1' 
    },
    module: {
        rules:[
            {test:/\.css$/, use:['style-loader', 'css-loader']},
            {test:/\.less$/, use:['style-loader', 'css-loader', 'less-loader']},
            // 处理图片文件的loader
            // 如果需要调用的loader只有一个,则只传递一个字符串就行,如果有多个loader则必须指定数组
            { test:/\.jpg|png|gif$/, use: 'url-loader?limit=22229&outputPath=images' },
            // 使用babel-loader处理高级的js语法
            // 注意:必须使用exclude排除指定项;因为node_modules目录下的第三方包不需要被打包
            {test:/\.js$/, use: 'babel-loader', exclude: /node_modules/}
        ]
    },
    resolve: {
        alias: {
            //告诉webpack @代表src这一层目录
            '@' : path.join(__dirname, './src/')
        }
    }
}


相关文章
|
2月前
|
JavaScript
webpack学习三:webpack初始化整合配置vue,一步一步的抽离代码块整合vue。
这篇文章是关于如何在webpack环境中配置Vue.js,包括安装Vue.js、解决报错、理解el与template的区别、使用SPA模式、抽离模板为对象、封装为单独的js文件、安装vue-loader时遇到的问题及解决方案,以及整个过程的总结。
72 2
webpack学习三:webpack初始化整合配置vue,一步一步的抽离代码块整合vue。
|
3月前
|
JavaScript 测试技术 Windows
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
本文介绍了如何使用vue-cli和webpack为Vue项目配置不同的生产和测试环境,包括修改`package.json`脚本、使用`cross-env`处理环境变量、创建不同环境的`.env`文件,并在`webpack.prod.conf.js`中使用`DefinePlugin`来应用这些环境变量。
123 2
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
|
3月前
|
JavaScript 前端开发 IDE
Vue学习笔记5:用Vue的事件监听 实现数据更新的实时视图显示
Vue学习笔记5:用Vue的事件监听 实现数据更新的实时视图显示
|
3月前
|
JavaScript 前端开发 API
Vue学习笔记4:用reactive() 实现数据更新的实时视图显示
Vue学习笔记4:用reactive() 实现数据更新的实时视图显示
|
3月前
|
JavaScript 前端开发
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
|
3月前
|
JavaScript 前端开发 API
Vue学习笔记7:使用v-for指令渲染列表
Vue学习笔记7:使用v-for指令渲染列表
|
4月前
|
前端开发 JavaScript API
|
4月前
|
JavaScript 前端开发 API
解锁前端开发新境界:Vue.js携手Webpack,打造高效构建流程,你的项目值得拥有!
【8月更文挑战第30天】随着前端技术的发展,模块化与组件化趋势愈发显著。Vue.js 以其简洁的 API 和灵活的组件系统,深受开发者喜爱;Webpack 则凭借强大的模块打包能力成为前端工程化的基石。两者结合,不仅简化了组件编写与引用,还通过模块热替换、代码分割等功能大幅提升开发效率。本文将通过具体示例,展示如何利用 Vue.js 和 Webpack 构建高效、有序的前端开发环境。从安装配置到实际应用,逐步解析这一组合的优势所在。
50 0
|
4月前
|
JavaScript 测试技术
在不同 webpack 版本的 Vue 项目中配置 Storybook
在不同 webpack 版本的 Vue 项目中配置 Storybook
|
4月前
|
JavaScript
VUE——filemanager-webpack-plugin报错TypeError: Cannot read property 'isFile' of undefined
VUE——filemanager-webpack-plugin报错TypeError: Cannot read property 'isFile' of undefined
76 0