记录一次webpack2的项目架构

1、npm init -y 生成package.json项目描述文件。

2、npm install webpack –save-dev 下载webpack并将其安装到开发环境中。

3、npm install babel-loader babel-core –save-dev 下载安装babel转码工具并将其添加到开发环境中。

4、npm install css-loader style-loader –save-dev 下载安装两个css的装载器并将其安装到开发环境中。

5、npm install webpack-dev-server –save-dev 下载本地的服务器并将其安装到开发环境中。

6、npm install babel-preset-env –save-dev 下载安装babel的预设。

7、创建.babelrc文件将预设写入“preset”。

8、分别创建两个文件夹:src文件夹和build文件夹,前者用于放源代码,后者用于放打包后的的代码。

9、webpack.config.js的配置: const path = require(‘path’);

                                              module.exports = {
                entry : './src/js/calla.js',
                output : {
                path : path.resolve(__dirname,'dist'),
                 filename : 'mybundle.js'

},

module : {
rules : [

      {test : /\.js$/,exclude: /node_modules/,loader: 'babel-loader},

      {test : /\.css$/,
      use : [

           {loader : 'style-loader'},
           {loader: 'css-loader',
           options: {
                modules: true
      }
           }

]
}
]

}

}

未完待续。。。

Babel官方提供的一个名为babel-preset-env的插件。它不需要我们自己添加任何的preset,例如我们最常用的es2015,

它能根据设置智能的转换代码。

在webpack2中使用ExtractTextPlugin插件,需要注意,写法是酱紫的:
解释: use: 指的是需要什么样的loader去编译文件,这里由于源文件是.css所以选择是css-loader

fallback:指的是编译后用什么loader来提取css文件。这里用的是style-loader

另外:据说还有一个publicfile: 用来覆盖项目路径,生成该css文件的文件路径的,暂时还没研究出来怎么用。

Extracttextplugin这个插件抽离出来的css文件会自动的被用到html页面中去(自动创建link标签)。

html-webpack-plugin的用法也在项目中已经写明,不使用模板的话,会自动创建一个空的默认名字为index.html的页面,也可以配置自己写好的html模板页面。

经过验证,如果直接将css打包到js中加载页面的确会闪屏,然后用Extracttextplugin这个插件将css文件抽离出来后,果真就不闪屏了!!!厉害了!!!

一个细节:
require(‘normalize.css/normalize.css’);


import ‘styles/App.css’;

两种引入css文件的方式都可以成功打包,require是CommonJS的规范,import是ES6的规范,但是主流现在都不支持包括node和Chrome,

一般还是要用babel转换。

要知道 无论require还是import,都不是webpack的发明,它们是已经存在于世的不同的模块化规范(目前都不能直接运行于浏览器)。

关于require,最早应该见于nodejs开发,属于CommonJS规范的一部分。

关于import,是ES2015里的新模块化规范。

你可能感兴趣的:(学习日志)