Skip to content
New issue

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

webpack #8

Open
wangpin34 opened this issue Dec 11, 2015 · 0 comments
Open

webpack #8

wangpin34 opened this issue Dec 11, 2015 · 0 comments
Labels

Comments

@wangpin34
Copy link
Owner

wangpin34 commented Dec 11, 2015

介绍

webpack 可以用来打包前端页面依赖的静态资源,例如 js ,css ,图片,等等,也就是俗称的依赖管理。它比较适合单页面应用,只需要将所有的依赖打包到一个文件中就可以了。 对于多页面应用的依赖管理,则需要更加复杂,场景化的方案,这里不谈。

安装

npm install webpack -g

开始

webpack 是来打包静态资源的,那就先从打包 js 开始吧。
建一个 entry.js

document.write('It works');

建一个 index.html

<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <script type="text/javascript" src="bundle.js" charset="utf-8"></script>
    </body>
</html>

开始打包:

webpack entry.js bundle.js

成功后会生成 bundle.js,先不要管它,在浏览器中打开 index.html,看看是否打印出 It works

如果 entry.js 中 require 了其他的 module,这个 module 也会被打包到 bundle.js 中。

项目实战

webpack.config.js

实际项目中,webpack 应该安装到项目目录中,并将其保存成开发依赖。相关配置在webpack.config.js 中。

module.exports = {
    watch:true,
    devtool: 'source-map',
    entry: "app.js",
    output: {
        path: __dirname,
        filename: "bundle.js"
    },
    module: {
        loaders: [
            { test: /\.css$/, loader: "style!css" }
        ]
    }
};

loaders中引用了 css 的加载器,用于打包 css 到 bundle.js中。 其他更详细的配置可以参考官方手册

在 package.json 中设置脚本

"build":"webpack --progress --colors --watch"

colors 选项用于输出彩色的打包报告。
watch 选项用于监测源文件的修改,并实时更新 bundle.js

on grunt

grunt-webpack 只是 webpack 和 grunt 之间的中间件,所以需要同时安装 webpack 和 grunt-webpack

npm install grunt-webpack ---save-dev

在 Gruntfile.js 中加载 grunt-webpack
···
grunt.loadNpmTasks('grunt-webpack');
···

然后就可以使用 webpack了。
···
grunt.initConfig({
webpack:{
// webpack options
}
}
···

on gulp

gulp-webpack 内含 webpack,所以只需要独立安装它就可以

npm install gulp-webpack --save-dev

在 gulpfile.js 中定义 webpack task

var webpack = require('gulp-webpack');

gulp.task('webpack', function() {
  gulp.src('entry.js')
    .pipe(webpack(require('./webpack.config.js'))) //这里导入配置文件
    .pipe(gulp.dest('.'));
});

es6 支持

webpack 默认只能打包 es5 文件,对于 es6 代码,目前最好的方案是用 babel。babel 是一个功能强大的代码编译器,可以编译 es6, react,等常见的 js 代码。

  • 准备 babel 相关
  npm install babel-cli -D

创建 .babelrc 文件,配置 preset。

  {
  "presets": [
    "react",
    "es2015"
  ],
  "plugins":["transform-es2015-arrow-functions"]
`}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant