docker pull pomelott/webpack-cli
注: 以下文件目录可在本机自行创建,能够提供文件夹供容器挂载即可。
docker run -it -v /Users/tate/Documents/work/geek/docker/ws/src:/home/webpack4-cli/src -v /Users/tate/Documents/work/geek/docker/ws/page:/home/webpack4-cli/page -p 8090:8090 --env WEBPACK_MODE=dev pomelott/webpack-cli
在宿主机浏览器访问 localhost:8090/page/index.html
即可。
docker run -itd pomelott/webpack4-cli /bin/bash
docker ps
docker exec -it -w /home/webpack4-cli b7c2b83ed900 /bin/bash
docker cp b7c2b83ed900:/home/webpack4-cli/dist ./
yarn install
or
npm install
npm run dev
npm run build
npm run min-img
npm run dll
npm run analyze
cli将会根据pageDir路径,动态生成webpack entry,在源码中,一个页面就是一个文件夹。 首先介绍一个html文件夹下可以存放的三个文件:
你可以通过以下两种方式自定义HTML:
如果param.js存在,cli则会将param.js中的参数与pug引擎模板结合产出对应HTML,entry.js中引入的资源(js,css)将会被通过标签插入至对应HTML中。
param.js 中的配置项如下,你也可以通过快速查看demo中的代码例子 来快速上手: | Name | Type | Default | Description |
---|---|---|---|---|
title | String | 'multipage-cli' | 标题内容 | |
tag | Object | {meta: [],eadLink: [],headScript: [],bodyLink: [],bodyScript: []} | 控制插入在html中的资源标签 | |
tag.meta | Array | [] | control meta tag | |
tag.headLink | Array | [ ] | control link tag in head section | |
tag.headScript | Array | [ ] | control script tag in head section | |
tag.bodyLink | Array | [ ] | control link tag in body section | |
tag.bodyScript | Array | [ ] | control script tag in body section | |
vueInit | Object | {} | 初始化vue根节点 | |
vueInit.el | String | undefined | vue根实例的el值,如”#app“ | |
vueInit.entrance | String | undefined | vue根实例的入口组件,可详见vue-demo | |
reactInit | Object | {} | 初始化react根节点 | |
reactInit.el | String | undefined | react根实例的el值,如”#root“ 可详见react-demo |
// for detai code, you can view vueDemo in dev mode
module.exports = {
title: 'Example in multipage',
tag: {
meta: [{
name: 'webpack4-cli',
content: 'vueDemo'
}, {
name: "webpack4-cli",
content: 'https://github.com/pomelott/webpack4-cli'
}],
headLink: [{
rel: "icon",
type: "image/png",
href: 'https://vuejs.bootcss.com/images/logo.png'
},{
href: 'https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.0/animate.min.css',
rel: "stylesheet"
}]
},
vueInit: {
el: '#app',
entrance: 'example'
}
}
<!doctype html>
<html lang="en">
<head>
<title>Example in Multipage</title>
<meta name="webpack4-cli" content="vueDemo" />
<meta name="webpack4-cli" content="https://github.com/pomelott/webpack4-cli" />
<link rel="icon" type="image/png" href="https://vuejs.bootcss.com/images/logo.png" />
<link href="https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.0/animate.min.css" rel="stylesheet" />
<link rel="stylesheet" href="http://www.cdn-plugin.com/assets/css/entry/example/vueDemo.css?v=2466d76ff005024cce26">
</head>
<body>
<div id="app">
<div is="example"></div>
</div>
<script src="http://www.cdn-plugin.com/assets/js/runtime/runtime-vueDemo.js?v=2466d76ff005024cce26"></script>
<script src="http://www.cdn-plugin.com/assets/js/common/vendors.js?v=5b4f3badf8d6ddb0036f"></script>
<script src="http://www.cdn-plugin.com/assets/js/entry/example/vueDemo.js?v=8df1c19f97ce1a9abf72"></script>
</body>
</html>
使用page.html 意味着,完全的定制化,你需要完全重写HTML
在根路径的 cli-config.js 文件中自定义env,详细选项如下: | Name | Type | Default | Description |
---|---|---|---|---|
dev.port | String | '8090' | 开发环境端口 (这是8090的时代) | |
dev.host | String | 'localhost' | devServer host | |
dev.htmlAssetsAbsolutePath | Boolean|String | false | 控制dev环境下,编译后HTML中资源标签的根路径,如果为false则常规使用相对路径(dev一般使用相对路径) | |
build.htmlAssetsAbsolutePath | Boolean|String | false | 控制build环境下,编译后HTML中资源标签的根路径,一般以此来修改为服务器资源基础url或cdn-url |
Root
└───src
│———node_modules
|———page // html dir
| |———moduleOne
| | |———PageOne
| | | |———param.js
| | | └———entry.js
| | └———pageTwo
| | |———page.html
| | └———entry.js
| |———moduleTwo
| | |———PageThree
| | | |———param.js
| | | └———entry.js
| | └———pageFour
| | |———param.js
| | └———entry.js
输出路径也会自动变化(包括html和静态资源)
Root
|———dist // output root
| |——— js
| | |———common
| | | └——— vendor.js
| | |———entry // html unique chunk
| | | |——— moduleOne
| | | | |——— pageOne.js
| | | | └——— pageTwo.js
| | | └——— moduleTwo
| | | |——— pageThree.js
| | | └——— pageFour.js
| | └———runtime
| | |——— runtime-pageOne.js
| | |——— runtime-pageTwo.js
| | |——— runtime-pageThree.js
| | └——— runtime-pageFour.js
| |——— css
| | |——— ... // css dir is the same as js
| | ...
希望在以下插件中得到更多支持,欢迎给星: