webpack4.x安裝配置一

1,若是之前反覆安裝卸載webpack和webpack-cli,一直出現:

        bash : webpack :command not found

最好的辦法就是去這個路徑下把這幾個文件直接刪掉,以及這個路徑下把這兩個文件夾直接刪掉,不要再各種install,uninstall了,這樣最完整直接,親測有效。

然後: npm install -g webpack

    npm install webpack-cli -g

舊版本的webpack中,webpack指令要能在命令行中使用,需要全局安裝webpack,而不是本地安裝,因此這裏的webpack-cli也應該是同理。

若後期項目中用到webpack-dev-server,請一定先在本地也安裝:

    

npm install --save-dev webpack

npm install --save-dev webpack-cli

然後再 全局安裝webpack-dev-server + 項目安裝webpack-dev-server ,不然會一直報錯找不到webpack模塊。。

2.轉自 https://blog.csdn.net/u012443286/article/details/79504289,非常感謝這篇文章幫我解決了很多問題。

一、全局安裝webpack

按照舊版本的安裝方式,直接使用npm全局安裝webpack,我們預期全局安裝webpack後,便能在命令行中使用webpack指令。我們在命令行輸入:

npm install -g webpack

當執行該操作後,便在C:\Users\你的用戶名\AppData\Roaming\npm\node_modules創建了webpack文件夾,裏面存儲了剛剛全局安裝的webpack模塊。

二、創建項目

我們在合適位置新建一個文件夾webpacktest,用於存放我們的項目。 
命令行中定位到webpacktest文件夾下,輸入以下命令進行項目的初始化:

npm init

這裏,要求設置很多選項,可以按項目情況配置也可以不填直接回車。完成後,我們發現文件夾中增加了package.json文件,它用於保存關於項目的信息。

三、嘗試打包出現提示

我們在項目根目錄新建一個文件index.js,並在其中輸入代碼:

function hello(str) {
    alert(str);
}
hello('hello world!');

然後,我們便嘗試打包,在命令行輸入:

webpack hello.js bundle.js

意思是將hello.js打包成另一個文件bundle.js。但很不幸,4.1.1版本會提示:

The CLI moved into a separate package:webpack-cli.
Please install 'webpack-cli' in addition to webpack itself to use the CLI.
->when using npm: npm install webpack-cli -D
->when using yarn: yarn add webpack-cli -D
意思是,我們需要額外安裝webpack-cli,否則便不能在命令行中使用webpack的相關命令。

四、安裝webpack-cli

我們在項目中本地安裝webpack-cli:

npm install webpack-cli -D

這裏-D參數和–save-dev的作用相同,只是一種簡寫而已。 
我們在根目錄再次輸入:

webpack hello.js bundle.js

很不幸,還是提示:

The CLI moved into a separate package:webpack-cli.
Please install 'webpack-cli' in addition to webpack itself to use the CLI.
->when using npm: npm install webpack-cli -D
->when using yarn: yarn add webpack-cli -D

這表明我們本地安裝webpack-cli後並沒有起作用,在命令行中依然不能使用webpack命令。那麼是什麼地方出了問題呢? 
我們不難想到,

舊版本的webpack中,webpack指令要能在命令行中使用,需要全局安裝webpack,而不是本地安裝,因此這裏的webpack-cli也應該是同理。

我們卸載本地安裝的webpack-cli,全局安裝webpack-cli:

npm uninstall webpack-cli
npm install -g webpack-cli

五、設置模式

我們再次嘗試打包:

webpack hello.js bundle.js

看樣子似乎是可以運行了,但又出現了新的提示:

WARNING in configuration
The 'mode' option has not been set. Set  'mode' option to 'development' or 'production' to enable defaults for this enviroment.
ERROR in multi ./hello.js bundle.js
Module not found:ERROR:Can't resolve 'bundle.js' in 'C:/Users/你的用戶名/Desktop/webpack-test'
@ multi ./hello.js bundle.js

這裏提示我們存在的第一個問題是沒有配置webpack的mode選項,默認有production和development兩種模式可以設置,因此我們嘗試設爲development模式,在命令行輸入:

webpack --mode development

我們看到進行了打包並顯示了Hash、Version、Time、Build at信息,表明已經可以打包。不過,仍然有錯誤提示:

ERROR in Entry module not found:ERROR:Can't resolve './src' in 'C:/Users/你的用戶名/Desktop/webpack-test'

 

六、創建入口文件

這表明webpack4.x是以項目根目錄下的'./src'作爲入口,但我們的項目中缺乏該路徑,因此我們在根目錄下創建src文件夾,事實上webpack4.x'./src/index.js'作爲入口,單單創建src文件而沒有index.js文件仍然會報錯,因此我們

將index.js移動到'./src'

現在如果我們再次執行

webpack index.js bundle.js

會提示can.t resolve相關的錯誤。

原因是,webpack4.x的打包已經不能用webpack 文件a 文件b 的方式,而是直接運行webpack --mode development或者webpack --mode production,這樣便會默認進行打包,入口文件是'./src/index.js',輸出路徑是'./dist/main.js',其中src目錄即index.js文件需要手動創建,而dist目錄及main.js會自動生成。 
因此我們不再按webpack 文件a 文件b的方式運行webpack指令,而是直接運行

webpack --mode development

或者

webpack --mode production。

這樣便能夠實現將'./src/index.js'打包成'./dist/main.js'。 
不過每次都要輸入這個命令,非常麻煩,我們在package.jsonscripts中加入兩個成員:

"dev":"webpack --mode development",
 "build":"webpack --mode production"

以後我們只需要在命令行執行npm run dev便相當於執行webpack --mode development,執行npm run build便相當於執行webpack --mode production。 
我們在根目錄執行:

npm run dev

可以看到根目錄下生成了dist目錄,並且dist目錄下生成了main.js文件,main.js文件已經打包了src目錄下index.js文件的代碼。

八、總結

我們可以將以上探索進行整理總結,首先是注意事項:

1、webpack-cli必須要全局安裝,否則不能使用webpack指令; 
2、webpack也必須要全局安裝,否則也不能使用webpack指令。 
3、webpack4.x中webpack.config.js這樣的配置文件不是必須的。 
4、默認入口文件是./src/index.js,默認輸出文件./dist/main.js。

配置步驟:

1、創建工程目錄; 
2、初始化工程目錄:npm init。 
3、全局安裝webpack-cli。 
4、全局安裝webpack。 
5、webpack –mode development/production進行打包,可在package.json中配置dev和build的腳本,便只需運行npm run dev/build,作用相同。 
6、在webpack –mode development/production可串聯設置其他參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章