Webpack 筆記(二)初始化設定檔

當剛安裝完Webpack

第一次執行會看到如下的訊息

 $ webpack                                                                                                                                         [23:07:04]
No configuration file found and no output filename configured via CLI option.
A configuration file could be named 'webpack.config.js' in the current directory.
Use --help to display the CLI options.

也就是他找不到 webpack.config.js 的設定檔

所以就在專案目錄下新增一個webpack.config.js

裡面的內容可以參考官方的Document

設定檔的基礎架構由幾個部分組成

entry: 程式的進入點,也就是要從哪隻檔案開始處理

可以是string,代表從某一個檔案開始

entry: "./app/entry",

也可以是array,代表這一頁有很多個檔案需要處理,但彼此之間沒有關聯

entry: ["./app/entry1", "./app/entry2"],

也可以是object,代表這個專案有多個頁面需要處理

entry: {
    a: "./app/entry-a",
    b: ["./app/entry-b1", "./app/entry-b2"]
},

output: 最後的輸出,只接受object,並有filename的data

 output: {

    path: path.resolve(__dirname, "dist"), // string
    // the target directory for all output files
    // must be an absolute path (use the Node.js path module)

    filename: "bundle.js", // string
    filename: "[name].js", // for multiple entry points
    filename: "[chunkhash].js", // for long term caching
    // the filename template for entry chunks
  },

其中的[name]會跟著entry做改變

如果entry是string,[name]就是檔案名稱

如果entry是object,[name]就是object的key

[chunkhash]則是依照每個進入點所產生的hash

module: 要處理的檔案與方法

像是要讓webpack可以處理css

或是想在js裡require css檔案

就需要css-loader來處理

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

test 就是要處理哪種檔案

這裡是用regular expression

只要符合這樣pattern的檔名

就會做 use 裡的處理

use 是一個array

會先從最後一個element開始處理

所以遇到 xxx.css的檔案

就會先以css-loader處理

到這裡 webpack 就可以看懂 css syntax

然後再用style-loader插入進html裡

所以一個基礎的config大概會長這樣

module.exports = {
    entry: "./main.js",
    output: {
        path: __dirname,
        filename: "bundle.js"
    },
    module: {
        loaders: [
            { test: /\.css$/, loader: ['style-loader', 'css-loader'] }
        ]
    }
};

當然要用到哪些module

還是看專案會用到哪些功能了

之後再介紹課程裡有提到的module

 

看更多