国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務(wù)器 > Web服務(wù)器 > 正文

淺談webpack和webpack-cli模塊源碼分析

2024-09-01 13:42:08
字體:
供稿:網(wǎng)友

webpack4與webpack3的區(qū)別

webpack4.0 以后,似乎執(zhí)行方式就發(fā)生了改變,不再是 webpack 一波流,而是多了一個(gè) webpack-cliwebpack3webpack-cli是合在webpack中。所以在命令行運(yùn)行 webpack 命令的同時(shí),會(huì)提示讓你再裝一個(gè) webpack-cli

執(zhí)行腳本到打包結(jié)束流程

1、當(dāng)我們安裝了webpack模塊后,就會(huì)在node_modules/.bin目錄下生成一個(gè)webpack、webpack.cmd,webpacklinux下的命令腳本,webpack.cmdwindows下命令腳本,webpack.cmd可以在windows系統(tǒng)上直接運(yùn)行。

每當(dāng)執(zhí)行npm run,就會(huì)自動(dòng)新建一個(gè) Shell,在這個(gè) Shell 里面執(zhí)行指定的腳本命令。因此,只要是 Shell(一般是 Bash)可以運(yùn)行的命令,就可以寫在 npm 腳本里面。

比較特別的是,npm run新建的這個(gè) Shell,會(huì)將當(dāng)前目錄的node_modules/.bin子目錄加入PATH變量(軟連接),執(zhí)行結(jié)束后,再將PATH變量恢復(fù)原樣。

這意味著,當(dāng)前目錄的node_modules/.bin子目錄里面的所有腳本,都可以直接用腳本名調(diào)用,而不必加上路徑。比如,當(dāng)前項(xiàng)目的依賴?yán)锩嬗?Mocha,只要直接寫mocha test就可以了。

執(zhí)行一下命令cd ./node_modules/.bin/


2、package.jsonscript配置dev: webpack --mode development,當(dāng)執(zhí)行npm run dev相當(dāng)于執(zhí)行webpack --mode development

webpack.cmd執(zhí)行時(shí)會(huì)判斷當(dāng)前目錄下是否存在node執(zhí)行程序,如果存在就使用當(dāng)前node進(jìn)程執(zhí)行node_modules/webpack/bin/webpack.js,如果當(dāng)前目錄下不存在node進(jìn)程,則使用全局(也就是本地)node執(zhí)行node_modules/webpack/bin/webpack.js文件

3、node_modules/webpack/bin/webpack.js首先會(huì)判斷是否安裝了webpack-cli模塊,如果沒有安裝webpack-cli模塊就會(huì)引導(dǎo)用戶去安裝,如果已經(jīng)安裝了webpack-cli模塊,就會(huì)去執(zhí)行node_modules/webpack-cli/bin/cli.js

 CLIs = [ {  name: "webpack-cli",  package: "webpack-cli",  binName: "webpack-cli",  alias: "cli",  installed: isInstalled("webpack-cli"),  recommended: true,  url: "https://github.com/webpack/webpack-cli",  description: "The original webpack full-featured CLI." }, {  // some coding }];const installedClis = CLIs.filter(cli => cli.installed);if (installedClis.length === 0) { // some coding const question = `Do you want to install 'webpack-cli' (yes/no): `; // some coding} else if (installedClis.length === 1) { const path = require("path"); const pkgPath = require.resolve(`${installedClis[0].package}/package.json`); const pkg = require(pkgPath); console.log(path.resolve(  path.dirname(pkgPath),  pkg.bin[installedClis[0].binName] )) // E:/項(xiàng)目/webpack學(xué)習(xí)/node_modules/webpack-cli/bin/cli.js require(path.resolve(  path.dirname(pkgPath),  pkg.bin[installedClis[0].binName] ));}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 同江市| 罗江县| 潞城市| 隆尧县| 涪陵区| 获嘉县| 湖口县| 玛曲县| 平顺县| 淅川县| 大关县| 蒙自县| 大方县| 安岳县| 武隆县| 武宣县| 凤阳县| 车致| 达州市| 兴宁市| 莎车县| 广元市| 阳泉市| 肇庆市| 中西区| 灵石县| 昌乐县| 咸丰县| 嵩明县| 津市市| 鹤壁市| 秭归县| 斗六市| 乌兰浩特市| 额尔古纳市| 瑞昌市| 雷山县| 延安市| 漳州市| 周至县| 沈阳市|