We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
我们的cli工具现在虽然可以使用了,但是还是很简陋,这一节主要从以下两个方面去丰富其功能:
css打包有两种形式,第一是借助style-loader.配置如下:
style-loader
{ test: /\.css$/, exclude: /node_modules/, use: [require.resolve('style-loader'), require.resolve('css-loader')], },
这样会把css打包进js文件,最后以style标签的形式把css样式渲染在html中。这种方式在生产环境会产生一些问题:
css
js
style
html
第二种形式是借助插件MiniCssExtractPlugin。 把样式单独抽离出来打包成一个文件。在html中通过一个link标签引入即可,这也是当下主流的使用方式,配置如下: 配置loader:
MiniCssExtractPlugin
link
import MiniCssExtractPlugin from 'mini-css-extract-plugin' ... { test: /\.css$/, exclude: /node_modules/, use: [MiniCssExtractPlugin.loader, require.resolve('css-loader')], },
配置plugin(src/babel/plugins)
export default (config) => { return [ ... new MiniCssExtractPlugin({ filename: config.mode === 'development' ? 'bundle.css' : 'bundle.[contenthash].css' //输出css文件名称, 开发环境,文件名不要带hash,带hash会做持久缓存,影响开发热更。 生产环境需要带hash,用于做缓存 }), ] }
这里有一个坑啊。 开发环境的css文件名不要带hash值。webpack官网有一个一句话的解释:
hash
使用 filename: "[contenthash].css" 启动长期缓存。根据需要添加 [name]。
这导致一个什么问题呢,如果开发环境文件名称带了hash值,当我们修改css文件时,页面不会热更,所以这里文件名称会加入当前模式的判断。
对于一个成熟的脚手架工具,开发过程中mock数据是一项基本且重要的操作。当然实现mock的方法有很多,比如常用的charles等。我们这里提供一个方法,代理到本地目录。省去各种配置。
mock
基本原理是:devServer中拦截ajax请求,去本地读取某个文件作为接口返回。 commanders/strat.js中增加配置:
devServer
ajax
commanders/strat.js
... const { port, cwd, mock } = config ... { ... onBeforeSetupMiddleware: function (devServer) { if (devServer) { devServer.app.use((req, res, next) => { // 对于ajax请求,可以设置mock if (mock && req.headers['x-requested-with']) { //请求头中增加 x-requested-with 早期ajax请求会自动加, 新的fetch没有了,需要手动加 const filePath = path.join(cwd, `/mock/${req._parsedUrl.path}.json`) let mockData = {} try { mockData = require(filePath) } catch (err) { mockData = { message: `${filePath} is not a file` } } res.set('Content-Type', 'application/json') res.send(mockData) } next() }) } } }
几点解释:
package.json
simple_cli
x-requested-with
/test
mock/test.json
更多内容持续丰富中。
相关文章:
The text was updated successfully, but these errors were encountered:
update
Sorry, something went wrong.
No branches or pull requests
我们的cli工具现在虽然可以使用了,但是还是很简陋,这一节主要从以下两个方面去丰富其功能:
css打包
css打包有两种形式,第一是借助
style-loader
.配置如下:这样会把
css
打包进js
文件,最后以style
标签的形式把css
样式渲染在html
中。这种方式在生产环境会产生一些问题:第二种形式是借助插件
MiniCssExtractPlugin
。 把样式单独抽离出来打包成一个文件。在html
中通过一个link
标签引入即可,这也是当下主流的使用方式,配置如下:配置loader:
配置plugin(src/babel/plugins)
这里有一个坑啊。 开发环境的
css
文件名不要带hash
值。webpack官网有一个一句话的解释:这导致一个什么问题呢,如果开发环境文件名称带了
hash
值,当我们修改css文件时,页面不会热更,所以这里文件名称会加入当前模式的判断。代理
对于一个成熟的脚手架工具,开发过程中
mock
数据是一项基本且重要的操作。当然实现mock
的方法有很多,比如常用的charles等。我们这里提供一个方法,代理到本地目录。省去各种配置。基本原理是:
devServer
中拦截ajax
请求,去本地读取某个文件作为接口返回。commanders/strat.js
中增加配置:几点解释:
mock
字段作为配置,允许用户自定义。和其他配置字段一样在package.json
中simple_cli
字段下。x-requested-with
字段,以此作为识别ajax
请求的标识。/test
。则会读取本地目录:mock/test.json
的值作为返回。更多内容持续丰富中。
相关文章:
The text was updated successfully, but these errors were encountered: