當(dāng)我們執(zhí)行npm run build時(shí)撒穷,執(zhí)行的是package.json中的scripts下的
根據(jù)指令找到對(duì)應(yīng)的文件scripts\build.js
let?builds?=?require('./config').getAllBuilds()
根據(jù)模塊規(guī)范,require的引入方式一般對(duì)應(yīng)的是module.exports或者exprts.youDefinedName但惶,因此找到scripts\config.js咽白,并在該文件下搜索exports.getAllBuilds或module.exports=youDefinedName
exports.getAllBuilds?=?()?=>?Object.keys(builds).map(genConfig)
builds是一個(gè)對(duì)象数冬,保存著一組模塊規(guī)范姓惑,比如:AMD、CJS配乱、CMD溉卓、ESM皮迟、UMD等,vue將根據(jù)不同的模塊規(guī)范輸出對(duì)應(yīng)的js文件桑寨,示例
genConfig將拿到每一個(gè)builds中的鍵值對(duì)并做遍歷最后生成一份rollup的打包配置文件
因此builds['web-full-cjs-dev']的輸出結(jié)果即
即打包出口為dist/vue.common.dev.js伏尼;入口為src/platforms/web/entry-runtime-with-compiler.js
回到build.js
process.argv[2]取得實(shí)際上是build指令對(duì)應(yīng)的參數(shù),我們這里沒(méi)有參數(shù)尉尾,因此會(huì)走向else邏輯剔除weex平臺(tái)的相關(guān)代碼
之后調(diào)用build開始構(gòu)建爆阶,最終調(diào)用fs模塊的writeFile能力輸出打包后的文件
即dist下的js文件
也就是說(shuō),npm run build只做了一件事沙咏,那就是使用rollup輸出符合各種模塊規(guī)范的js文件
因此辨图,我們的入口文件是src/platforms/web/entry-runtime-with-compiler.js