vue-cli2安裝,vue-cli3安裝 ,webpack 4安裝小tip(轉載)

轉載:https://m.imooc.com/wenda/detail/601318

vue create 是vue-cli3.x的初始化方式,

目前模板是固定的,模板選項可自由配置,創建出來的是vue-cli3的項目,與cue-cli2項目結構不同,配置方法不同,

vue init 是vue-cli2.x的初始化方式,

可以使用github上面的一些模板來初始化項目,webpack是官方推薦的標準模板名。vue-cli2.x項目向3.x遷移只需要把static目錄複製到public目錄下,老項目的src目錄覆蓋3.x的src目錄(如果修改了配置,可以查看文檔,用cli3的方法進行配置)

 

處理靜態資源你也許會注意到vue-cli與webpack結合的項目中,我們通常會有兩個靜態資源的路徑:src/assets和static/,他們兩者的區別是什麼呢?打包的資源爲了回答這個問題,我們首先要明白Webpack是如何處理靜態資源的。在*.vue組件裏,所有的templates和CSS模塊都被vue-html-loader和css-loader解析來查找路徑URL。舉個例子,在<img src"./logo.png">和背景background: url(./logo.png),”./logo.png”是一個相對路徑,會被Webpack當做一個依賴加載。但是因爲logo.png並不是JavaScript,所以如果被當成一個依賴的花,我們需要通過url-loader和file-loader來解析它。這個模板已經爲你配置了相應的loader,所以你通常不用擔心相對路徑的部署問題。即使這些資源有可能在構建過程中被內聯/拷貝/重命名,他們也是源碼重要組成部分。這就是爲什麼我們建議單獨在/src文件夾裏放置靜態資源,如同其他的資源文件夾。事實上,你都不必把他們全放在/src/assets,你可以根據模塊/組件來組織利用他們。比如說,你可以把任一組件放到他們自己的目錄,並在該目錄下存放靜態資源。資源引入規則相對路徑,比如 ./assets/logo.png會被解析成模塊依賴。它們會被一個基於你Webpack輸出配置的自動生成URL替代。沒有前綴的路徑,比如assets/logo.png,同相對路徑,轉義成./assets/logo.png有~前綴的路徑。 ~被認爲是一個模塊請求,同require('some-module/image.png')。根路徑,比如/assets/log.png在JavaScript得到資源路徑computed: { background () { return require('./bgs/' + this.id + '.jpg') } }這個資源路徑同樣會被file-loader處理然後返回處理後的路徑。而且Webpack會一次性加載該bgs目錄下的所有圖片。“真實的”靜態資源與此相對的,static/中的文件全都不會被Webpack處理。它們將被直接拷貝到目標文件夾,引用這些文件需要使用絕對路徑。

轉載:https://www.html.cn/archives/9436

webpack 4 已經發布了!

這個當今最流行的模塊打包器做了大量更新。

webpack 4 帶來了什麼是新特性?大規模的性能改進,零配置和智能的默認設置。

這篇文章是對 webpack 4 的生動的介紹。並且會不斷更新。

您可以按文章每個部分的順序構建一個有效的 webpack 4 環境。

但可以隨意跳過教程的某個部分!

webpack 4 作爲零配置模塊打包器

webpack 功能強大,具有許多獨特的功能,但其中一個難點就是配置文件。

爲中型到大型項目提供 webpack 配置並不是什麼大問題。 沒有它感覺你無法活了。然而,對於小一點的項目來說,這有點煩人,尤其是當你想啓動一些玩玩的應用的時候。

這就是爲什麼 Parcel 獲得了很多吸引的眼球

現在是突發新聞:webpack 4 默認不需要配置文件!

讓我們嘗試一下。

webpack 4:從零配置開始

創建一個新目錄並進入該目錄:

CommandLine 代碼:


 
  1.  
  2. mkdir webpack-4-quickstart && cd $_

通過運行以下命令初始化 package.json :

CommandLine 代碼:


 
  1. npm init -y

並引入 webpack 4:

CommandLine 代碼:


 
  1. npm i webpack --save-dev

我們還需要 webpack-cli ,作爲一個單獨的包引入:

CommandLine 代碼:


 
  1. npm i webpack-cli --save-dev

現在打開 package.json 並添加一個 build(構建) 腳本:

package.json 代碼:


 
  1. "scripts": {
  2. "build": "webpack"
  3. }

關閉文件並保存。

嘗試運行:

CommandLine 代碼:


 
  1. npm run build

看看會發生什麼:

CommandLine 代碼:


 
  1. ERROR in Entry module not found: Error: Can't resolve './src' in '~/webpack-4-quickstart'

webpack 4 在 ./src 中尋找 entry point(入口點) ! 如果您不知道這意味着什麼,請查看 官方的說明文檔 。

簡而言之: entry point(入口點) 是 webpack 尋找開始構建 Javascript 包的文件。

在以前版本的 webpack 中,必須在名爲 webpack.config.js 的配置文件中 通過 entry 屬性定義 entry point(入口點) 。

但是 從 webpack 4 開始,不再必須定義 entry point(入口點) :它將默認爲 ./src/index.js !

測試這個新功能很簡單。 創建 ./src/index.js

index.js 代碼:


 
  1. console.log(`I'm a silly entry point`);

然後運行構建命令:

CommandLine 代碼:


 
  1. npm run build

您將在 ~/webpack-4-quickstart/dist/main.js 中獲取該 bundle(包) 。

什麼? 稍等片刻。 沒有必要定義輸出文件? 對的。

在 webpack 4 中,既不必須定義 entry point(入口點) ,也不必須定義 output file(輸出文件)。

webpack 的主要優勢在於 code splitting(代碼拆分)。 但請相信我,使用零配置工具可以加快速度。

所以這是第一條新聞:webpack 4 不是必須要有配置文件

它將查找 ./src/index.js 作爲默認入口點。 而且,它會在 ./dist/main.js 中輸出模塊包。

在下一節中,我們將看到 webpack 4 的另一個不錯的功能:生產和開發模式。

webpack 4:production(生產) 和 development(開發) 模式

擁有2個配置文件在 webpack 中是的常見模式。

一個典型的項目可能有:

  • 用於開發的配置文件,用於定義 webpack dev server 和其他東西
  • 用於生產的配置文件,用於定義 UglifyJSPlugin,sourcemaps 等

雖然較大的項目可能仍然需要 2 個配置文件,但在 webpack 4 中,您可以在沒有一行配置的情況下完成。

怎麼會這樣?

webpack 4 引入了 production(生產) 和 development(開發) 模式。

事實上,如果你注意 npm run build 的輸出,你會看到一個很好的警告:

 

The ‘mode’ option has not been set. Set ‘mode’ option to ‘development’ or ‘production’ to enable defaults for this environment.
“模式”選項尚未設置。 將 “mode” 選項設置爲 “development” 或 “production” 以啓用此環境的默認值。

那是什麼意思? 讓我們來看看。

打開 package.json 並填充 script 部分,如下所示:

package.json 代碼:


 
  1. "scripts": {
  2. "dev": "webpack --mode development",
  3. "build": "webpack --mode production"
  4. }

現在嘗試運行:

CommandLine 代碼:


 
  1. npm run dev

並看看 ./dist/main.js 。 你看到了什麼? 是的,我知道,一個令人厭煩的 bundle(包) 文件…,沒有壓縮!

現在嘗試運行:

CommandLine 代碼:


 
  1. npm run build

再來看看 ./dist/main.js 。 你現在看到了什麼? 一個 壓縮後的 bundle(包)

是的!

production mode(生產模式) 可以開箱即用地進行各種優化。 包括壓縮,作用域提升,tree-shaking 等。

另一方面,development mode(開發模式)針對速度進行了優化,僅僅提供了一種不壓縮的 bundle 。

所以這是第二條新聞:webpack 4 引入了 production(生產) 和 development(開發) 模式。

在 webpack 4 中,您可以在沒有一行配置的情況下完成任務! 只需定義 –mode 參數即可免費獲得所有內容!

webpack 4:覆蓋默認 entry(入口)/output(輸出)

我喜歡 webpack 4 零配置,但如何覆蓋默認 entry point(入口點) 和 默認 output(輸出) 呢?

在 package.json 中配置它們!

這是一個例子:

package.json 代碼:


 
  1. "scripts": {
  2. "dev": "webpack --mode development ./foo/src/js/index.js --output ./foo/main.js",
  3. "build": "webpack --mode production ./foo/src/js/index.js --output ./foo/main.js"
  4. }

webpack 4:用 Babel 7 轉譯 Javascript ES6

 

現代 Javascript 主要是用 ES6 編寫的。

但並非每個瀏覽器都知道如何處理 ES6 。 我們需要某種轉換。

這個轉換步驟稱爲 transpiling(轉譯)。 transpiling(轉譯)是指採用 ES6 並使舊瀏覽器可以理解的行爲。

Webpack 不知道如何進行轉換但是有 loader(加載器) :將它們視爲轉譯器。

babel-loader 是一個 webpack 的 loader(加載器),用於將 ES6 及以上版本轉譯至 ES5 。

要開始使用 loader ,我們需要安裝一堆依賴項。 尤其是:

  • babel-core
  • babel-loader
  • babel-preset-env 用於將 Javascript ES6 代碼編譯爲 ES5

我們開始動手吧:

CommandLine 代碼:


 
  1. npm i babel-core babel-loader babel-preset-env --save-dev

接下來,通過在項目文件夾中創建名爲 .babelrc 的新文件來配置 Babel :

.babelrc 代碼:


 
  1. {
  2. "presets": [
  3. "env"
  4. ]
  5. }

此時我們有2個配置 babel-loader 的選項:

  • 使用 webpack 的配置文件
  • 在你的 npm scripts 中使用 --module-bind

是的,我知道你在想什麼。 webpack 4 將自己作爲零配置工具推向市場。 爲什麼要再次編寫配置文件?

webpack 4 中零配置的概念適用於:

  • entry point(入口點) 默認爲 ./src/index.js
  • output(輸出) 默認爲 ./dist/main.js
  • production(生產) 和 development(開發) 模式 (無需爲生產和開發環境創建2個單獨的配置)

這就夠了。 但是對於在 webpack 4 中使用 loader(加載器),您仍然需要創建配置文件。

我問過 Sean 這件事:webpack 4 中的加載器是否與 webpack 3 相同? 有沒有計劃爲像 babel-loader 這樣的普遍使用的 loader(加載器) 提供零配置?

他的回答是:

“對於未來(在v4之後,可能是4.x或5.0),我們已經開始探索預置或附加系統將如何幫助定義它。我們不想要的是:嘗試將一堆東西作爲默認設置插入到 core 中,我們想要的是:允許其他人擴展“

現在你仍然必須依賴 webpack.config.js。 讓我們來看看…

webpack 4:通過配置文件使用 babel-loader

給 webpack 添加一個配置文件,以最經典的方式使用 babel-loader

創建一個名爲 webpack.config.js 的新文件並配置 loader(加載器) :

webpack.config.js 代碼:


 
  1. module.exports = {
  2. module: {
  3. rules: [
  4. {
  5. test: /\.js$/,
  6. exclude: /node_modules/,
  7. use: {
  8. loader: "babel-loader"
  9. }
  10. }
  11. ]
  12. }
  13. };

除非您要自定義 entry point(入口點) ,否則無需指定它。

接下來打開 ./src/index.js 並編寫一些 ES6 代碼:

index.js 代碼:


 
  1. const arr = [1, 2, 3];
  2. const iAmJavascriptES6 = () => console.log(...arr);
  3. window.iAmJavascriptES6 = iAmJavascriptES6;

最後,創建 bundle(包):

CommandLine 代碼:


 
  1. npm run build

現在看一下 ./dist/main.js 來查看轉換後的代碼。

webpack 4:不通過配置文件使用 babel-loader(在 npm scripts 中使用)

還有另一種方法來使用 webpack 的 loader(加載器)。

--module-bind 參數允許你在命令行指定加載器。 謝謝 Cezar 指出這一點。

該參數不是特定於 webpack 4 的。 從版本 3 開始就有了。

要在沒有配置文件的情況下使用 babel-loader ,請在 package.json 中配置你的 npm scripts,如下所示:

package.json 代碼:


 
  1. "scripts": {
  2. "dev": "webpack --mode development --module-bind js=babel-loader",
  3. "build": "webpack --mode production --module-bind js=babel-loader"
  4. }

你可以再出運行 npm run build 構建項目。

我不喜歡這種方法(我不喜歡增加 npm scripts 的複雜性),但它仍然很有趣。

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