webpack配置之謎一般的操作

本文主要介紹MAC上webpack的基礎(chǔ)配置操作,有一定的參考意義,感興趣的同學(xué)可以借鑒。
江湖上人稱(chēng)“模塊打包機(jī)”的webpack可以讓我們?cè)谌粘T燧喿拥倪^(guò)程更加的便利,例如es5和es6語(yǔ)法的轉(zhuǎn)換,sass文件與css文件的轉(zhuǎn)換,自動(dòng)處理瀏覽器前綴等等,webpack讓我們的工作變得‘工程化’。接下來(lái)我們就來(lái)介紹一下這些功能的基礎(chǔ)配置。

一·安裝webpack

1.首先我們創(chuàng)建一個(gè)webpack-demo文件來(lái)進(jìn)行本次教程

mkdir webpack-demo

2.進(jìn)入webpack官網(wǎng),參考官網(wǎng)配置教程
3.我們看到有兩個(gè)安裝命令,一個(gè)是npm 一個(gè)是yarn(任選一個(gè)),這里采用局部安裝,在webpack-demo目錄下執(zhí)行下列任意一個(gè)命令,安裝成功后自動(dòng)回到webpack-demo目錄

npm install --save-dev webpack
yarn add webpack --dev

3.點(diǎn)擊官網(wǎng)上的get start,進(jìn)入配置教程,我們需要在目錄里添加以下文件
劃重點(diǎn):這里的src文件下通常存放我們的未編譯的代碼,dist目錄下存放要發(fā)布的代碼

如果目錄里沒(méi)有package.json,可以通過(guò) npm i這個(gè)命令來(lái)添加


4.按照以下內(nèi)容,添加到webpack.config.js文件,這個(gè)配置文件會(huì)將src/index.js文件編譯之后存放到dist/bundle.js文件

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  }
};

5.我們?cè)趇ndex.js文件內(nèi)輸入以下內(nèi)容作為測(cè)試

let a= 0;
console.log(1)

6.執(zhí)行npx webpack這個(gè)命令,因?yàn)槭蔷植堪惭b,這個(gè)命令會(huì)找到本地webpack然后執(zhí)行,然后打開(kāi)dist/bundle.js文件。如果看到index.js里添加的語(yǔ)句寫(xiě)到了dist/bundle.js文件,那么恭喜你,webpack安裝成功了。

二·babel安裝

1.搜索關(guān)鍵字babel-loader,進(jìn)入官網(wǎng)安裝
2.注意:
官網(wǎng)上給出了版本搭配,大家不要安裝錯(cuò)誤了,這里我選擇的是babel6+babel-loader7的版本

image.png

3.點(diǎn)擊進(jìn)入babel-loader-7,在weback-demo目錄下執(zhí)行以下命令:

npm install --save-dev babel-loader babel-core babel-preset-env webpack

4.添加配置,添加到webpack.config.js文件中

module: {
  rules: [
    {
      test: /\.js$/,
      exclude: /(node_modules|bower_components)/,
      use: {
        loader: 'babel-loader',
        options: {
          presets: ['env']
        }
      }
    }
  ]
}

5.執(zhí)行npx webpack,打開(kāi)bundle.js文件,我們看到

let a = 0; ===翻譯成了===> var a =0;

恭喜你,babel也配置成功了。

三·文件工程化

1.為了真正的實(shí)現(xiàn)工程化,我們先修改一下目錄結(jié)構(gòu):
在src文件下創(chuàng)建js文件夾,添加app.js module-1.js module-2.js三個(gè)文件,同時(shí)也修改一下webpack配置文件,將./src/js/app.js編譯后的bundle.js放到dist/js目錄下。

const path = require('path');

module.exports = {
  entry: './src/js/app.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist/js')
  }
};

2.編輯js文件:
mdule-1.js和mdule-2.js文件在這里作為兩個(gè)函數(shù)文件,供給app.js調(diào)用
首先編輯一下mdule-1.js文件:

function fn(){
console.log(1)
}
export default fn//默認(rèn)訪問(wèn)文件時(shí)傳出fn函數(shù)

mdule-2.js文件:

function fn(){
console.log(1)
}
export default fn

app.js文件:

import fn1 from './module-1'
import fn2 from './module-2'
fn1()
console.log('hello webpack')
fn2()

3.編輯html文件:
src/index.html:同時(shí)將這個(gè)html文件拷貝到dist目錄下

<!DOCTYPE html>
<html>

<head>
</head>

<body>
<p>hello webpack</p>
<script src="./js/bundle.js"></script>
<!-- 模塊化 -->
</body>

</html>

4.執(zhí)行npx webpack,可以看到三個(gè)js文件都被編譯到了bundle.js中

image.png

5.運(yùn)行dist/index.html,可以看到控制臺(tái)中打了一下信息:
image.png

到此,我們也實(shí)現(xiàn)了簡(jiǎn)單的工程化

四·安裝sass

1.首先我們需要添加scss文件,存放到src/css目錄下

touch src/css/main.scss

2.搜索sass-loader,點(diǎn)擊進(jìn)入官網(wǎng)
3.根據(jù)官網(wǎng)配置進(jìn)行安裝

npm install sass-loader node-sass webpack --save-dev

劃重點(diǎn):但是官網(wǎng)有時(shí)候也是不靠譜的呀,我們還需要安裝以下幾個(gè)腳本,不信的話你試試,會(huì)報(bào)錯(cuò)的哦

npm i style-loader css-loader

4.添加配置到webpack.config.js

// webpack.config.js
module.exports = {
    ...
    module: {
        rules: [{
            test: /\.scss$/,
            use: [{
                loader: "style-loader" // creates style nodes from JS strings
            }, {
                loader: "css-loader" // translates CSS into CommonJS
            }, {
                loader: "sass-loader" // compiles Sass to CSS
            }]
        }]
    }
};

5../css/main.scss中添加樣式

body{
  background: #dddddd;
p{
  color: red;
}
}

6.在app.js上添加css導(dǎo)入

import '../css/main.scss'

7.執(zhí)行npx webpack,打開(kāi)dist/index.html,可以看到樣式生效了
scss文件被翻譯成css語(yǔ)法后會(huì)在頁(yè)面自動(dòng)添加style標(biāo)簽,將css部分放在標(biāo)簽里

image.png

五·安裝autoprefixer

1.首先我們?cè)趕css文件中添加:

display:flex;

2.搜索postcss-loader,點(diǎn)擊進(jìn)入官網(wǎng)
3.按照官網(wǎng)的配置 安裝

npm i -D postcss-loader

3.配置文件到postcss.config.js
注意:我們需要新增一個(gè)postcss.config.js文件,然后進(jìn)行配置

module.exports = {
  plugins: {
    'postcss-cssnext': {},
  }
}

4.配置文件到webpack.config.js

 module: {
    rules: [
.......
  {
                test: /\.scss$/,
                use: [{
                    loader: "style-loader" // creates style nodes from JS strings
                }, {
                    loader: "css-loader", // translates CSS into CommonJS
                    options: { importLoaders: 1 }在sass文件的配置處添加
                }, {
                    loader: 'postcss-loader' // 在sass文件的配置處添加
                },{
                    loader: "sass-loader" // compiles Sass to CSS
                }]
            }
]
}

5.運(yùn)行npx webpack,遇到一個(gè)報(bào)錯(cuò)

Cannot find module 'extract-text-webpack-plugin'

不要緊張,我們根據(jù)提示來(lái)安裝腳本

npm i extract-text-webpack-plugin

這時(shí)候還會(huì)遇到一個(gè)報(bào)錯(cuò)

Cannot find module 'postcss-cssnext'

套路,安裝腳本

npm i postcss-cssnext

安裝結(jié)束后,我們?cè)俅芜\(yùn)行npx webpack,這個(gè)時(shí)候就沒(méi)有任何報(bào)錯(cuò)了

6.打開(kāi)dist/index.html,如果安裝成功,就可以看到自動(dòng)添加了瀏覽器前綴


image.png

附上本次配置的demo
以上是本次的webpack配置教程,如果在安裝過(guò)程中有問(wèn)題歡迎留言。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 webpack介紹和使用 一、webpack介紹 1、由來(lái) ...
    it筱竹閱讀 11,463評(píng)論 0 21
  • GitChat技術(shù)雜談 前言 本文較長(zhǎng),為了節(jié)省你的閱讀時(shí)間,在文前列寫(xiě)作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,894評(píng)論 7 110
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,673評(píng)論 2 71
  • 記得2004年的時(shí)候,互聯(lián)網(wǎng)開(kāi)發(fā)就是做網(wǎng)頁(yè),那時(shí)也沒(méi)有前端和后端的區(qū)分,有時(shí)一個(gè)網(wǎng)站就是一些純靜態(tài)的html,通過(guò)...
    陽(yáng)陽(yáng)陽(yáng)一堆陽(yáng)閱讀 3,458評(píng)論 0 5
  • 目錄第1章 webpack簡(jiǎn)介 11.1 webpack是什么? 11.2 官網(wǎng)地址 21.3 為什么使用 web...
    lemonzoey閱讀 1,829評(píng)論 0 1

友情鏈接更多精彩內(nèi)容