npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

walkerqiao-wpexpress

v1.0.0

Published

webpack learning and practice

Downloads

2

Readme

webpack工程化开发

源码结构一(对应webpack.config.js)

+---- src
|--------- js
|------------- components
|------------------- dialog
|------------------------- css
|------------------------- img
|------------------------- tmpl
|------------------------- index.js
|------------- page
|------------------ index.js
|------------------ about_us.js
|--------- css // 样式目录, 可包括scss, css, less等,这里没有详细针对这块做过多考虑
|--------------- lib
|--------------- common
|--------------- page
|-------------------- index.css
|--------- imgs // 图片目录
|--------- fonts // 字体目录
|--------- views // 入口模版目录
|-------------- common
|-------------------- header.html
|-------------------- footer.html
|-------------------- ...
|-------------- index.html
|-------------- about.html
|-------------- other.html

入口介绍

入口html是src/views下面的html文件,比如index.html, about.html, 对应的入口js为src/page/xxx.js. html支持include, 入口html需要包含完整的结构, 包括head, body的完整html, 包含的部分html不含完整标签结构。 入口js负责js资源以及样式资源的引入。

webpack打包

首先将images, css, js根据依赖关系,打包到目标目录public下面, 然后根据模版文件生成对应的html, 同时在html插入资源的目标地址。

源码结构二(对应wpconfig/webpack.config.js--1配置文件)

+---- src
|--------- js
|-------------- libs    // js类库
|-------------- stores  // js Model层
|-------------- actions // js action层
|-------------- components // js 组件
|-------------- index.js  // 入口js
|-------------- contact_us.js // 入口js 2
|-------------- ......
|--------- css // 样式目录, 可包括scss, css, less等,这里没有详细针对这块做过多考虑
|--------- images // 图片目录
|--------- fonts // 字体目录
|--------- html // 入口模版目录
|-------------- index.html

构建目标

webpack支持环境变量,可以有效配合开发环境、调试环境和生产环境的构建。

开发环境下面, 我们一般需要借助webpack-dev-server插件,利用它的HMR特性,可见即所得, 有效提高开发效率。 同时在开发模式下面,我们不需要对资源进行压缩丑化。

在生产环境下面, 我们需要对资源有效压缩, 另外会将资源进行md5 hash重命名。

为了更好得构建和代码管理, 需要至少两个构建目标,我们将这两种构建目标分别与环境变量相对应。 我这里使用d表示debug, 开发环境。 r表示release,发布环境,生产环境。

下面看以下具体得构建目录结构:

+-- public 
|------ d
|--------- js
|-------------- index.js  // 入口js
|-------------- contact_us.js // 入口js 2
|-------------- ......
|--------- css // 样式目录, 可包括scss, css, less等,这里没有详细针对这块做过多考虑
|--------- images // 图片目录
|--------- fonts // 字体目录
|------ r
|--------- js
|-------------- index_[hash8].js  // 入口js
|-------------- contact_us_[hash8].js // 入口js 2
|-------------- ......
|--------- css // 样式目录, 可包括scss, css, less等,这里没有详细针对这块做过多考虑
|--------- images // 图片目录
|--------- fonts // 字体目录
|-- views
|------ d
|-------------- index.html
|-------------- contact_us.html
|------ r
|-------------- contact_us.html

配置详解

webpack的几个主要配置项目如下:

  • entry: js资源打包的入口, 可以指定单个文件;也可以指定多个js文件。本例中使用getEntry函数列出src/js下面的.js文件(不含子目录, 子目录中为类库或依赖包之类的)。
  • output: 输出目标设置,包括输出资源的名字方式,分块名称,以及公共访问路径之类的配置。
  • modules: 模块配置, 比如资源加载器loaders的设置。
  • plugins: 构建项目使用的插件列表, 很多是关于构建优化方面的插件,比如公用资源提取、资源丑化压缩、产生html模版、ProvidePlugin(用于减少代码冗余非常有用)。

踩坑记录

  • HMR需要先生成提供页面内容的目录及文件。注意HMR的环境变量和生成其目录内容的环境变量是否相同。
  • HMR对于本机开发,本机查看效果的情况, localhost配置足够。 但是如果开发机器在其他地方,ip地址不同,那么就需要配置host或ip来提供资源变化信息, 这个是在server.js中,设置了一个变量domain, 可根据具体情况修改为响应的域名名称即可。

参考链接

  • http://kuaima.toutiao.com/default/ji-yu-webpackde-qian-duan-gong-cheng-hua-kai-fa-he-shi-jian/
  • http://survivejs.com/webpack_react/developing_with_webpack/
  • https://segmentfault.com/a/1190000004511992