Skip to content

Commit f644ab4

Browse files
author
Ken Berkeley
committed
sync build/ with vue2-scaffold, also update docs
1 parent 01d4c1c commit f644ab4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+1575
-394
lines changed

build/config/ENV.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
var env = (process.env.NODE_ENV || 'development').trim();
2+
console.log('[Current environment]', env);
3+
4+
module.exports = {
5+
__ENV__: env,
6+
__DEV__: env === 'development',
7+
__PROD__: env === 'production'
8+
};

build/config/style-rules.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
var extract = require('extract-text-webpack-plugin').extract,
2+
ENV = require('./ENV');
3+
4+
var basicLoaders = ['css'];
5+
var LOADERS = {
6+
css: basicLoaders,
7+
less: basicLoaders.concat('less'),
8+
sass: basicLoaders.concat('sass?indentedSyntax=true'),
9+
scss: basicLoaders.concat('sass')
10+
};
11+
12+
function ruleGen(ext, isForVueLoader) {
13+
var useLoaders = LOADERS[ext];
14+
if (isForVueLoader) return extract('vue-style', useLoaders.join('!'));
15+
16+
// 开发环境下直接内嵌 CSS 以支持热替换
17+
if (ENV.__DEV__) return ['style'].concat(useLoaders).join('!');
18+
// 生产环境下分离出 CSS 文件
19+
return extract('style', useLoaders.join('!'));
20+
}
21+
22+
function styleRulesGen(isForVueLoader) {
23+
var rules = isForVueLoader ? {} : [];
24+
Object.keys(LOADERS).forEach(function (ext) {
25+
isForVueLoader ?
26+
rules[ext] = ruleGen(ext, true) :
27+
rules.push({ test: new RegExp('\\.' + ext + '$'), loader: ruleGen(ext) });
28+
});
29+
return rules;
30+
}
31+
32+
exports.basic = styleRulesGen();
33+
exports.vueLoader = styleRulesGen(true);

build/webpack.base.conf.js

Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,15 @@
11
var webpack = require('webpack'),
2+
ENV = require('./config/ENV'),
23
PATHS = require('./config/PATHS'),
3-
env = (process.env.NODE_ENV || 'development').trim(),
4-
ExtractTextPlugin = require('extract-text-webpack-plugin'),
4+
styleRules = require('./config/style-rules'),
55
NyanProgressPlugin = require('nyan-progress-webpack-plugin');
66

77
module.exports = {
88
entry: {
9-
app: PATHS.SRC.join('app.js'),
10-
11-
// 框架 / 类库 单独打包
12-
vendor: [
13-
'es6-shim',
14-
'query-string',
15-
'vue',
16-
'vue-router'
17-
]
9+
app: PATHS.SRC.join('app.js')
1810
},
11+
// devtool - source map 配置详见 http://webpack.github.io/docs/configuration.html#devtool
12+
devtools: false,
1913
output: {
2014
path: PATHS.DIST.join('static'),
2115
publicPath: 'static/'
@@ -25,14 +19,7 @@ module.exports = {
2519
alias: {
2620
// 自定义路径别名
2721
MOCK: PATHS.MOCK,
28-
ASSET: PATHS.SRC.join('assets'),
29-
COMPONENT: PATHS.SRC.join('components'),
30-
FILTER: PATHS.SRC.join('filters'),
31-
MIXIN: PATHS.SRC.join('mixins'),
32-
ROUTE: PATHS.SRC.join('routes'),
33-
SERVICE: PATHS.SRC.join('services'),
34-
UTIL: PATHS.SRC.join('utils'),
35-
VIEW: PATHS.SRC.join('views')
22+
'@': PATHS.SRC
3623
}
3724
},
3825
resolveLoader: {
@@ -63,26 +50,26 @@ module.exports = {
6350
}, {
6451
test: /\.(woff2?|eot|ttf|otf)$/,
6552
loader: 'url-loader?limit=10240&name=fonts/[name]-[hash:6].[ext]'
66-
}]
53+
}].concat(styleRules.basic)
6754
},
6855
vue: {
69-
loaders: {
70-
js: 'babel!eslint',
71-
css: ExtractTextPlugin.extract('vue-style', 'css'),
72-
less: ExtractTextPlugin.extract('vue-style', 'css!less'),
73-
sass: ExtractTextPlugin.extract('vue-style', 'css!sass')
74-
}
56+
loaders: Object.assign({
57+
js: 'babel!eslint'
58+
}, styleRules.vueLoader)
7559
},
7660
eslint: {
7761
formatter: require('eslint-friendly-formatter')
7862
},
7963
plugins: [
8064
new NyanProgressPlugin(), // 进度条
81-
new webpack.DefinePlugin({
82-
'process.env.NODE_ENV': JSON.stringify(env),
83-
// 配置开发全局常量
84-
__DEV__: env === 'development',
85-
__PROD__: env === 'production'
65+
new webpack.DefinePlugin(Object.assign({
66+
'process.env.NODE_ENV': JSON.stringify(ENV.__ENV__)
67+
}, ENV)),
68+
new webpack.optimize.CommonsChunkPlugin({
69+
name: 'vendor',
70+
minChunks: function (module) {
71+
return module.context && module.context.indexOf('node_modules') !== -1;
72+
}
8673
})
8774
]
8875
};

build/webpack.dev.conf.js

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,21 @@ var webpack = require('webpack'),
44
config = require('./webpack.base.conf'),
55
HtmlWebpackPlugin = require('html-webpack-plugin'),
66
ExtractTextPlugin = require('extract-text-webpack-plugin'),
7-
BrowserSyncPlugin = require('browser-sync-webpack-plugin'),
8-
// SOURCE_MAP = true; // 大多数情况下用不到
9-
SOURCE_MAP = false;
7+
BrowserSyncPlugin = require('browser-sync-webpack-plugin');
108

119
config.output.filename = '[name].js';
1210
config.output.chunkFilename = '[id].js';
1311

14-
config.devtool = SOURCE_MAP ? 'eval-source-map' : false;
15-
1612
// add hot-reload related code to entry chunk
1713
config.entry.app = [
1814
'eventsource-polyfill',
1915
'webpack-hot-middleware/client?reload=true',
2016
config.entry.app
2117
];
2218

23-
config.output.publicPath = '/';
24-
25-
// 开发环境下直接内嵌 CSS 以支持热替换
26-
config.module.loaders.push({
27-
test: /\.css$/,
28-
loader: 'style!css'
29-
}, {
30-
test: /\.less$/,
31-
loader: 'style!css!less'
32-
}, {
33-
test: /\.scss$/,
34-
loader: 'style!css!sass'
35-
});
19+
config.output.publicPath = '';
3620

3721
config.plugins.push(
38-
new webpack.optimize.CommonsChunkPlugin({
39-
name: 'vendor'
40-
}),
4122
new webpack.HotModuleReplacementPlugin(),
4223
new webpack.NoErrorsPlugin(),
4324
new ExtractTextPlugin('[name].css'),

build/webpack.prod.conf.js

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,10 @@ var webpack = require('webpack'),
33
config = require('./webpack.base.conf'),
44
HtmlWebpackPlugin = require('html-webpack-plugin'),
55
ExtractTextPlugin = require('extract-text-webpack-plugin'),
6-
OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin'),
7-
// SOURCE_MAP = true; // 大多数情况下用不到
8-
SOURCE_MAP = false;
6+
OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
97

10-
config.output.filename = '[name].[chunkhash:6].js';
11-
config.output.chunkFilename = '[id].[chunkhash:6].js';
12-
13-
config.devtool = SOURCE_MAP ? 'source-map' : false;
14-
15-
// 生产环境下分离出 CSS 文件
16-
config.module.loaders.push({
17-
test: /\.css$/,
18-
loader: ExtractTextPlugin.extract('style', 'css')
19-
}, {
20-
test: /\.less$/,
21-
loader: ExtractTextPlugin.extract('style', 'css!less')
22-
}, {
23-
test: /\.scss$/,
24-
loader: ExtractTextPlugin.extract('style', 'css!sass')
25-
});
8+
config.output.filename = 'js/[name].[chunkhash:6].js';
9+
config.output.chunkFilename = 'js/[id].[chunkhash:6].js';
2610

2711
config.plugins.push(
2812
new webpack.optimize.DedupePlugin(),
@@ -31,20 +15,21 @@ config.plugins.push(
3115
compress: { warnings: false }
3216
}),
3317
new webpack.optimize.CommonsChunkPlugin({
34-
// 公共代码分离打包
35-
names: ['vendor', 'mainifest']
18+
name: 'manifest',
19+
minChunks: Infinity
3620
}),
3721
new webpack.optimize.AggressiveMergingPlugin(),
3822
new webpack.optimize.MinChunkSizePlugin({
3923
minChunkSize: 30000
4024
}),
41-
new ExtractTextPlugin('[name].[contenthash:6].css', {
25+
new ExtractTextPlugin('css/[name].[contenthash:6].css', {
4226
allChunks : true // 若要按需加载 CSS 则请注释掉该行
4327
}),
4428
new OptimizeCssAssetsPlugin(), // 优化 CSS(去重/压缩)
4529
new HtmlWebpackPlugin({
4630
filename: '../index.html',
47-
template: PATHS.SRC.join('index.html')
31+
template: PATHS.SRC.join('index.html'),
32+
chunksSortMode: 'none'
4833
})
4934
);
5035

dist/docs/search_index.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

dist/docs/zh-cn/Features.html

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,20 @@
251251

252252
</li>
253253

254-
<li class="chapter " data-level="1.6" >
254+
<li class="chapter " data-level="1.6" data-path="Reference.html">
255+
256+
<a href="Reference.html">
257+
258+
259+
参考
260+
261+
</a>
262+
263+
264+
265+
</li>
266+
267+
<li class="chapter " data-level="1.7" >
255268

256269
<a target="_blank" href="https://github.com/kenberkeley/vue-demo/issues">
257270

@@ -264,7 +277,7 @@
264277

265278
</li>
266279

267-
<li class="chapter " data-level="1.7" >
280+
<li class="chapter " data-level="1.8" >
268281

269282
<a target="_blank" href="https://github.com/kenberkeley/vue-demo/releases">
270283

@@ -345,7 +358,7 @@ <h4 id="&#x6CE8;&#x610F;&#xFF1A;">&#x6CE8;&#x610F;&#xFF1A;</h4>
345358
<ul>
346359
<li><a href="https://github.com/GitbookIO/gitbook-cli" target="_blank"><code>gitbook-cli</code></a></li>
347360
</ul>
348-
<p>&#x4EC5;&#x4E3A;&#x6587;&#x6863;&#x64B0;&#x5199;&#x6240;&#x9700;<br>&#x60A8;&#x5F80;&#x540E;&#x7684;&#x5F00;&#x53D1;&#x4E2D;&#xFF0C;&#x53EF;&#x4EE5;&#x5220;&#x6389;&#x4E0A;&#x8FF0;&#x56DB;&#x4E2A;&#x4F9D;&#x8D56;&#x4E0E; <code>mock/</code>&#x3001;<code>docs/</code> &#x76EE;&#x5F55;<br>&#x4EE5;&#x53CA; <code>package.json</code> &#x4E2D;&#x7684; <code>scripts: docs</code> &#x4E0E; <code>build/prod.js</code> &#x4E2D;&#x7684; <em>&#x590D;&#x5236;&#x6587;&#x6863;</em></p>
361+
<p>&#x4EC5;&#x4E3A;&#x6587;&#x6863;&#x64B0;&#x5199;&#x6240;&#x9700;<br>&#x60A8;&#x5F80;&#x540E;&#x7684;&#x5F00;&#x53D1;&#x4E2D;&#xFF0C;&#x53EF;&#x4EE5;&#x5220;&#x6389;&#x4E0A;&#x8FF0;&#x56DB;&#x4E2A;&#x4F9D;&#x8D56;&#x4E0E; <code>mock/</code>&#x3001;<code>docs/</code> &#x76EE;&#x5F55;<br>&#x4EE5;&#x53CA; <code>package.json</code> &#x4E2D;&#x7684; <code>scripts: docs</code> &#x4E0E; <code>build/prod.js</code> &#x4E2D;&#x7684; <em>&#x590D;&#x5236;&#x6587;&#x6863;</em> &#x4EE3;&#x7801;</p>
349362
</blockquote>
350363

351364

@@ -390,7 +403,7 @@ <h1 class="search-results-title">No results matching "<span class='search-query'
390403
<script>
391404
var gitbook = gitbook || [];
392405
gitbook.push(function() {
393-
gitbook.page.hasChanged({"page":{"title":"技术栈","level":"1.3","depth":1,"next":{"title":"目录结构","level":"1.4","depth":1,"path":"Structure.md","ref":"Structure.md","articles":[]},"previous":{"title":"开始","level":"1.2","depth":1,"path":"Getting-started.md","ref":"Getting-started.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"zh-cn","gitbook":"*"},"file":{"path":"Features.md","mtime":"2017-03-22T02:44:48.363Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2017-03-22T02:45:04.734Z"},"basePath":".","book":{"language":"zh-cn"}});
406+
gitbook.page.hasChanged({"page":{"title":"技术栈","level":"1.3","depth":1,"next":{"title":"目录结构","level":"1.4","depth":1,"path":"Structure.md","ref":"Structure.md","articles":[]},"previous":{"title":"开始","level":"1.2","depth":1,"path":"Getting-started.md","ref":"Getting-started.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"zh-cn","gitbook":"*"},"file":{"path":"Features.md","mtime":"2017-04-20T05:21:28.820Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2017-04-20T05:54:19.512Z"},"basePath":".","book":{"language":"zh-cn"}});
394407
});
395408
</script>
396409
</div>

dist/docs/zh-cn/Getting-started.html

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,20 @@
251251

252252
</li>
253253

254-
<li class="chapter " data-level="1.6" >
254+
<li class="chapter " data-level="1.6" data-path="Reference.html">
255+
256+
<a href="Reference.html">
257+
258+
259+
参考
260+
261+
</a>
262+
263+
264+
265+
</li>
266+
267+
<li class="chapter " data-level="1.7" >
255268

256269
<a target="_blank" href="https://github.com/kenberkeley/vue-demo/issues">
257270

@@ -264,7 +277,7 @@
264277

265278
</li>
266279

267-
<li class="chapter " data-level="1.7" >
280+
<li class="chapter " data-level="1.8" >
268281

269282
<a target="_blank" href="https://github.com/kenberkeley/vue-demo/releases">
270283

@@ -341,11 +354,11 @@ <h3 id="&#x2299;-&#x5B89;&#x88C5;">&#x2299; &#x5B89;&#x88C5;</h3>
341354
<p><strong>&#x5F3A;&#x70C8;&#x5EFA;&#x8BAE;</strong>&#x5347;&#x7EA7;&#x5230; <code>node &#x2265; 6.x / npm &#x2265; 3.x</code> &#x73AF;&#x5883;<br><strong>&#x5F3A;&#x70C8;&#x63A8;&#x8350;</strong>&#x5F80;&#x540E;&#x4F7F;&#x7528; <code>cnpm</code> &#x66FF;&#x4EE3; <code>npm</code> &#x5B89;&#x88C5;&#x4F9D;&#x8D56; </p>
342355
<p>&#x8FD0;&#x884C; <code>npm set registry https://registry.npm.taobao.org</code> &#x6362;&#x6E90;<br>&#x5E76;&#x4E0D;&#x80FD;&#x89E3;&#x51B3; <code>node-sass</code> &#x7684;&#x4E8C;&#x8FDB;&#x5236;&#x6E90;&#x7801;&#x5305;&#x4E0B;&#x8F7D;&#x6781;&#x6162;&#x7684;&#x95EE;&#x9898;</p>
343356
</blockquote>
344-
<pre><code>$ npm i cnpm -g // &#x5168;&#x5C40;&#x5B89;&#x88C5; cnpm
357+
<pre><code>$ npm install -g cnpm --registry=https://registry.npm.taobao.org # &#x5168;&#x5C40;&#x5B89;&#x88C5; cnpm
345358

346359
$ git clone https://github.com/kenberkeley/vue-demo.git
347360
$ cd vue-demo
348-
$ cnpm i // &#x5B89;&#x88C5;&#x672C;&#x9879;&#x76EE;&#x4F9D;&#x8D56;
361+
$ cnpm i
349362
</code></pre><h3 id="&#x2299;-&#x547D;&#x4EE4;">&#x2299; &#x547D;&#x4EE4;</h3>
350363
<h4 id="&#x5F00;&#x53D1;">&#x5F00;&#x53D1;</h4>
351364
<pre><code>$ npm start
@@ -396,7 +409,7 @@ <h1 class="search-results-title">No results matching "<span class='search-query'
396409
<script>
397410
var gitbook = gitbook || [];
398411
gitbook.push(function() {
399-
gitbook.page.hasChanged({"page":{"title":"开始","level":"1.2","depth":1,"next":{"title":"技术栈","level":"1.3","depth":1,"path":"Features.md","ref":"Features.md","articles":[]},"previous":{"title":"总览","level":"1.1","depth":1,"path":"README.md","ref":"README.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"zh-cn","gitbook":"*"},"file":{"path":"Getting-started.md","mtime":"2017-01-09T03:04:49.097Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2017-03-22T02:45:04.734Z"},"basePath":".","book":{"language":"zh-cn"}});
412+
gitbook.page.hasChanged({"page":{"title":"开始","level":"1.2","depth":1,"next":{"title":"技术栈","level":"1.3","depth":1,"path":"Features.md","ref":"Features.md","articles":[]},"previous":{"title":"总览","level":"1.1","depth":1,"path":"README.md","ref":"README.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"zh-cn","gitbook":"*"},"file":{"path":"Getting-started.md","mtime":"2017-04-20T04:36:57.205Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2017-04-20T05:54:19.512Z"},"basePath":".","book":{"language":"zh-cn"}});
400413
});
401414
</script>
402415
</div>

0 commit comments

Comments
 (0)