您好,登錄后才能下訂單哦!
本篇文章為大家展示了利用webpack和rollup怎么對組件庫進(jìn)行打包,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
webpack算是使用程序員使用最多的打包工具,面試中往往會問到webpack的相關(guān)問題,而rollup被問到的要少很多。導(dǎo)致這種現(xiàn)象的一個(gè)原因是,應(yīng)用開發(fā)使用webpack,庫開發(fā)使用rollup的說法。
但是兩個(gè)打包工具都有很強(qiáng)大的插件開發(fā)功能,功能差異越來越模糊,但是rollup使用起來更加簡潔,而且能打出能小體積的文件。但當(dāng)我們做前端應(yīng)用時(shí),性能分析往往要求更小的庫,所以rollup更符合開發(fā)庫的要求。
這次算是一個(gè)打包的實(shí)驗(yàn),我們使用兩個(gè)工具都對這個(gè)項(xiàng)目打一次包。
在打包之前,需要給package.json文件中添加或更改一些字段。
{ // 程序主入口模塊,用戶引用的就是該模塊的導(dǎo)出 "main": "dist/bundle.js", // 項(xiàng)目包含的文件 "files": [ "src", "dist" ], // 將react和react-dom移動到該配置中,兼容依賴 "peerDependencies": { "react": "^17.0.1", "react-dom": "^17.0.1" }, }
webpack打包需要用到很多庫來處理不同的文件,這個(gè)項(xiàng)目比較小,就只用了兩個(gè)庫。
// webpack.config.js const path = require('path'); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); module.exports = { mode: 'production', entry: './src/Loading.jsx', output: { filename: "index.js", path: path.join(__dirname, "./dist/"), libraryTarget: 'umd', }, optimization: { minimize: false, }, resolve: { extensions: ['.jsx'] }, module: { rules: [ { test: /\.css$/, loader: [MiniCssExtractPlugin.loader, 'css-loader?modules'], }, { test: /\.(js|jsx)$/, loader: "babel-loader", exclude: /node_modules/, }, ] }, plugins: [ new MiniCssExtractPlugin({ filename: "main.min.css" // 提取后的css的文件名 }) ], }
本來應(yīng)該寫開發(fā)和生產(chǎn)兩個(gè)環(huán)境下的配置,但在這里只寫了production環(huán)境下的配置。
在rollup中使用的庫比較多一點(diǎn)。
// rollup.config.js // 解決rollup無法識別commonjs的問題 import commonjs from 'rollup-plugin-commonjs' // babel處理es6代碼的轉(zhuǎn)換 import babel from 'rollup-plugin-babel' // resolve將我們編寫的源碼與依賴的第三方庫進(jìn)行合并 import resolve from 'rollup-plugin-node-resolve' // postcss處理css文件 import postcss from 'rollup-plugin-postcss' export default { input: "src/Loading.jsx", // 打包一份cjs和一份es的文件 output: [ { file: "dist/loading.es.js", format: "es", globals: { react: 'React', }, }, { file: 'dist/loading.cjs', format: "cjs", globals: { react: 'React', }, }, ], external: ['react'], plugins: [ postcss( { extensions: ['.css'] } ), babel({ exclude: "node_modules/**", runtimeHelpers: true, }), commonjs(), resolve(), ], }
發(fā)包到npm只需要幾個(gè)命令。
npm pack
對項(xiàng)目打包后,命令行輸出壓縮包的詳細(xì)信息。
更新版本
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]
根據(jù)本次改動的大小選擇不同的命令。
最后使用發(fā)布命令。
npm publish
上述內(nèi)容就是利用webpack和rollup怎么對組件庫進(jìn)行打包,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。