Webpack单独打包编译less

简介: 对webpack的使用,独立编译less文件生成css

怎样实现单独打包

最近也是在使用webpack做项目,网上找了下配置方法,最后选用了一个,不得不说确实好用!但是最后打包过后发现webpack会将css一起打包到最后的js文件中去,造成这个js文件体积十分庞大,于是就考虑先把第三方库去除掉。这一步倒是很好实现,只需要配置下externals就可以了。

config.externals = {
     'angular':'angular',
     'bootstrap':'bootstrap'
 };

去除第三方库后发现还是有点儿大,于是又考虑把css提取出来生成单独的css文件,毕竟css不会影响页面的加载,如果放倒js里面就很难说了。

怎样让css可以单独打包呢?其实也很简单,只要安装一个extract-text-webpack-plugin就可以了。

var ExtractTextPlugin = require('extract-text-webpack-plugin');
let extractCSS = new ExtractTextPlugin('[name].[hash].css');

引入这个插件,然后配置loader

loaders: [{
  test: /\.css$/,
  loader: isTest ? 'null' : extractCSS.extract('style','css')
}]

最后在插件中注册一下

config.plugins.push(
  extractCSS
)

大功告成,我们在js中import的css文件最终都会打包成一个独立的css文件,赞!

怎样实现less的打包处理

随着预编译语言的兴起,前端开发越来越倚重于less、sass、styles等,我想在项目中使用less来开发样式,这样可以节省很多开发量,但是页面中只想引入一个css文件,这就需要将less编译成css文件,那么结合上面一步我们应该怎么实现这个功能呢?

我参考了extract-text-webpack-plugin文档上的例子

let ExtractTextPlugin = require('extract-text-webpack-plugin');

// multiple extract instances
let extractCSS = new ExtractTextPlugin('stylesheets/[name].css');
let extractLESS = new ExtractTextPlugin('stylesheets/[name].less');

module.exports = {
  ...
  module: {
    loaders: [
      {test: /\.scss$/i, loader: extractCSS.extract(['css','sass'])},
      {test: /\.less$/i, loader: extractLESS.extract(['css','less'])},
      ...
    ]
  },
  plugins: [
    extractCSS,
    extractLESS
  ]
};

然后发现less确实打包了,但是只打包成了一个less文件,这当然不是我想要的,看来这个loader必须修改。

loaders : [{
    test : /\.(less|css)$/,
    loader: ExtractTextPlugin.extract('style', 'css!less')
}]

修改后的loader,这次应该没问题了吧!但是。。。

ERROR in Cannot find module 'less'

怎么会是这个结果???配置代码看起来并没有什么问题,less-loader也已经安装了,真是郁闷!网上找了很久终于找到了答案:原来不仅仅安装less-loader就完了,还需要安装less,大概想要将less编译成css还是需要less模块来完成吧。

cnpm install less --save-dev

run一下,完美!

使用webpack有一小段时间了,不断给我带来惊喜,不知道还有什么功能没有学习到,希望这种良心工具越做越好。

相关文章
|
2月前
|
缓存 前端开发 JavaScript
Webpack 打包的基本原理
【10月更文挑战第5天】
|
2月前
|
前端开发 JavaScript
ES6模块化和webpack打包
【10月更文挑战第5天】
|
2月前
|
缓存 前端开发 JavaScript
深入了解Webpack:模块打包的革命
【10月更文挑战第11天】深入了解Webpack:模块打包的革命
|
3月前
|
JavaScript 测试技术 Windows
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
本文介绍了如何使用vue-cli和webpack为Vue项目配置不同的生产和测试环境,包括修改`package.json`脚本、使用`cross-env`处理环境变量、创建不同环境的`.env`文件,并在`webpack.prod.conf.js`中使用`DefinePlugin`来应用这些环境变量。
122 2
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
|
2月前
|
缓存 前端开发 JavaScript
Webpack技术深度解析:模块打包与性能优化
【10月更文挑战第13天】Webpack技术深度解析:模块打包与性能优化
|
2月前
|
前端开发 JavaScript 开发者
深入了解Webpack:现代JavaScript应用的打包利器
【10月更文挑战第11天】 深入了解Webpack:现代JavaScript应用的打包利器
|
3月前
|
JavaScript 前端开发
手写一个简易bundler打包工具带你了解Webpack原理
该文章通过手写一个简易的打包工具bundler,帮助读者理解Webpack的工作原理,包括模块解析、依赖关系构建、转换源代码以及生成最终输出文件的整个流程。
|
监控 前端开发
Webpack 2 视频教程 005 - Webpack 编译输出日志
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」。 Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲解的。
1202 0
|
3月前
|
JavaScript
webpack打包TS
webpack打包TS
135 60
|
3月前
|
缓存
webpack 打包多页面应用
webpack 打包多页面应用
25 1