编写一个webpack loader
作用
loader是一种打包的方案,webpack默认只识别js结尾的文件,当遇到其他格式的文件后,webpack并不知道如何去处理。此时,我们可以定义一种规则,告诉webpack当他遇到某种格式的文件后,去求助于相应的loader。
开发
新建loaders文件夹并创建三个loaders文件
// remove-comment-loader.js 去除注释 module.exports = function(source) { const reg = new RegExp(/(\/\/.*)|(\/\*[\s\S]*?\*\/)/g) return source.replace(reg, ‘‘) } // reverse-loader.js // 反转字符串 module.exports = function (src) { if (src) { console.log(‘--- reverse-loader input:‘, src) src = src.split(‘‘).reverse().join(‘‘) console.log(‘--- reverse-loader output:‘, src) } return src; } // uppercase-loader // 首字母大写 module.exports = function (src) { console.log(src, 33333) if (src) { console.log(‘--- uppercase-loader input:‘, src) src = src.charAt(0).toUpperCase() + src.slice(1) console.log(‘--- uppercase-loader output:‘, src) } return src }
入口文件
// index.js import myTxt from ‘./index.txt‘ const add = function (a, b) { return a + b } /** * 注释 */ (function () { // 注释 console.log(myTxt); console.log(add(1, 2)); }) // index.txt asdasdadsasdasdsasdasdas
打包文件
// webpack.config.js const path = require(‘path‘) module.exports = { mode: ‘none‘, entry: ‘./src/index.js‘, module: { rules: [ { test: /\.js$/, loader: ‘remove-comment-loader‘ }, { test: /\.txt$/, use: [ ‘uppercase-loader‘, ‘reverse-loader‘ ] } ] }, output: { path: path.resolve(__dirname, ‘dist‘) }, resolveLoader: { modules: [‘node_modules‘, ‘./loaders/‘] } }
打包后的效果
注释被删除了,txt文件字符也反转和首字母大写了
const add = function (a, b) { return a + b } (function () { console.log(_index_txt__WEBPACK_IMPORTED_MODULE_0___default.a, 99888); console.log(add(1, 2)); }) /***/ }), /* 1 */ /***/ (function(module, exports) { Adsadsasdsadsasdadsadsa /***/ })
实际开发中我们会有各种各样的定制话的loader需要去使用,针对每种情况去开发对应的loader是加快我们开发效率的一种方式
相关推荐
不知道该写啥QAQ 2020-11-12
webfullStack 2020-11-09
Yvettre 2020-09-15
想做大牛的蜗牛 2020-10-30
gloria0 2020-10-26
gaojie0 2020-09-11
SelinaChan 2020-08-14
不知道该写啥QAQ 2020-08-09
gloria0 2020-08-09
不知道该写啥QAQ 2020-08-02
hline 2020-07-29
SelinaChan 2020-07-28
wangdianyong 2020-07-23
webpackvuees 2020-07-23
yqoxygen 2020-07-20
不知道该写啥QAQ 2020-07-18
waterv 2020-07-18
81463166 2020-07-17