跟着視頻開始學習一些簡單的配置,然后發生了一些錯誤,在意料之外,但是又在情理之中。
1)新建一個webpackdemo目錄作為項目目錄
2)npm init 初始化
3)npm install webpack --save-dev安裝打包工具
4)建立src目錄放置源文件,建立dist目錄放置最終文件
5)新建一個webpack.config.js作為原始的配置文件,運行webpack的時候,會自動運行config文件,如果沒有config文件就會報錯。當然也可使用其他命名的文件比如webpack.dev.config.js
就必須運行 webpack --config webpack.dev.config.js
錯誤(微笑)
錯誤一
Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
需要使用絕對路徑。
源main.js
module.exports={ entry:'./src/script/main.js', output:{ path:'./dist/js', filename:'bundle2.js' } }
修訂后:
方法一:
1 module.exports={ 2 entry:'./src/script/main.js', 3 output:{ 4 // path:'./dist/js', 5 //方法一(最好不要這樣做) 6 filename:'./dist/js/bundle2.js' 7 } 8 }
方法二:
1 var path=require('path'); 2 module.exports={ 3 entry:'./src/script/main.js', 4 output:{ 5 //方法二(注意dirname是有兩個杠的) 6 7 path:path.join(__dirname,'.dist/js'), 8 filename:'bundle2.js' 9 } 10 }
錯誤2
1 var path=require('path'); 2 module.exports={ 3 entry:{ 4 main:'./src/script/main.js', 5 a:'./src/script/a.js' 6 }, 7 output:{ 8 path:path.join(__dirname,'./dist/js'), 9 filename:'bundle3.js' 10 } 11 }
根據官方文檔的描述,發現是webpack更新之后語法變了的原因,
1 { 2 entry: { 3 a: "./a", 4 b: "./b", 5 c: ["./c", "./d"] 6 }, 7 output: { 8 path: path.join(__dirname, "dist"), 9 filename: "[name].entry.js" 10 } 11 }
修改后:
1 var path=require('path'); 2 module.exports={ 3 entry:{ 4 bundle3:['./src/script/a.js','./src/script/b.js'] 5 6 }, 7 output:{ 8 path:path.join(__dirname,'./dist/js'), 9 filename:'[name].js' 10 } 11 }
最后生成一個bundle3.js文件。name只是一個占位符,最后生成的文件的命名應該是由entry中參數決定的,就是標紅色那個名字。
總結:前端變化太快,還是需要自己去看官方文檔比較靠譜,至少官方給出的是標准,任何教程都是在作者本人的學習基礎上寫出來的,難免會有一些偏差。