Skip to content

Commit 87c8666

Browse files
committed
first commit
1 parent 2c8329a commit 87c8666

36 files changed

+5290
-0
lines changed

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.DS_Store
2+
node_modules/
3+
dist/
4+
npm-debug.log

.idea/codeStyleSettings.xml

+9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/dalimo.iml

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/deployment.xml

+21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/jsLibraryMappings.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/watcherTasks.xml

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/setup-dev-server.js

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
const path = require('path')
2+
const webpack = require('webpack')
3+
const MFS = require('memory-fs')
4+
const clientConfig = require('./webpack.client.config')
5+
const serverConfig = require('./webpack.server.config')
6+
7+
module.exports = function setupDevServer (app, opts) {
8+
// setup on the fly compilation + hot-reload
9+
clientConfig.entry.app = ['webpack-hot-middleware/client', clientConfig.entry.app]
10+
clientConfig.output.filename = '[name].js'
11+
clientConfig.plugins.push(
12+
new webpack.HotModuleReplacementPlugin(),
13+
new webpack.NoEmitOnErrorsPlugin()
14+
)
15+
16+
const clientCompiler = webpack(clientConfig)
17+
const devMiddleware = require('webpack-dev-middleware')(clientCompiler, {
18+
publicPath: clientConfig.output.publicPath,
19+
stats: {
20+
colors: true,
21+
chunks: false
22+
}
23+
})
24+
app.use(devMiddleware)
25+
clientCompiler.plugin('done', () => {
26+
const fs = devMiddleware.fileSystem
27+
const filePath = path.join(clientConfig.output.path, 'index.html')
28+
if (fs.existsSync(filePath)) {
29+
const index = fs.readFileSync(filePath, 'utf-8')
30+
opts.indexUpdated(index)
31+
}
32+
})
33+
34+
// hot middleware
35+
app.use(require('webpack-hot-middleware')(clientCompiler))
36+
37+
// watch and update server renderer
38+
const serverCompiler = webpack(serverConfig)
39+
const mfs = new MFS()
40+
const outputPath = path.join(serverConfig.output.path, serverConfig.output.filename)
41+
serverCompiler.outputFileSystem = mfs
42+
serverCompiler.watch({}, (err, stats) => {
43+
if (err) throw err
44+
stats = stats.toJson()
45+
stats.errors.forEach(err => console.error(err))
46+
stats.warnings.forEach(err => console.warn(err))
47+
opts.bundleUpdated(mfs.readFileSync(outputPath, 'utf-8'))
48+
})
49+
}

build/vue-loader.config.js

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module.exports = {
2+
preserveWhitespace: false,
3+
postcss: [
4+
require('autoprefixer')({
5+
browsers: ['last 3 versions']
6+
})
7+
],
8+
buble: {
9+
objectAssign: 'Object.assign',
10+
},
11+
}

build/webpack.base.config.js

+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
const ExtractTextPlugin = require('extract-text-webpack-plugin')
2+
const path = require('path')
3+
const webpack = require('webpack')
4+
const vueConfig = require('./vue-loader.config')
5+
6+
const config = {
7+
devtool: '#source-map',
8+
entry: {
9+
app: './src/client-entry.js',
10+
vendor: [
11+
'es6-promise',
12+
'vue',
13+
'vue-router',
14+
'vuex',
15+
'vuex-router-sync',
16+
]
17+
},
18+
output: {
19+
path: path.resolve(__dirname, '../dist'),
20+
publicPath: '/dist/',
21+
filename: '[name].[chunkhash].js'
22+
},
23+
resolve: {
24+
extensions: ['*', '.js', '.json', '.vue'],
25+
alias: {
26+
'public': path.resolve(__dirname, '../public'),
27+
'vue$': 'vue/dist/vue.common.js'
28+
}
29+
},
30+
module: {
31+
noParse: /es6-promise\.js$/, // avoid webpack shimming process
32+
rules: [
33+
{
34+
test: /\.vue$/,
35+
loader: 'vue-loader',
36+
options: vueConfig
37+
},
38+
{
39+
test: /\.js$/,
40+
loader: 'buble-loader',
41+
exclude: /node_modules/,
42+
options: {
43+
objectAssign: 'Object.assign'
44+
}
45+
},
46+
{
47+
test: /\.css$/,
48+
loader: ExtractTextPlugin.extract(['css-loader'])
49+
},
50+
{
51+
test: /\.styl$/,
52+
loader: ExtractTextPlugin.extract(['css-loader', 'stylus-loader'])
53+
},
54+
{
55+
test: /\.scss$/,
56+
loader: ExtractTextPlugin.extract(['css-loader', 'sass-loader'])
57+
},
58+
{
59+
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
60+
loader: 'url-loader',
61+
query: {
62+
limit: 10000,
63+
name: 'img/[name].[hash:7].[ext]'
64+
}
65+
}
66+
]
67+
},
68+
plugins: [],
69+
performance: false,
70+
devServer: {
71+
historyApiFallback: true
72+
}
73+
}
74+
75+
if (process.env.NODE_ENV !== 'production') {
76+
return module.exports = config
77+
}
78+
79+
config.plugins.push(
80+
// this is needed in webpack 2 for minifying CSS
81+
new webpack.LoaderOptionsPlugin({
82+
minimize: true
83+
}),
84+
// minify JS
85+
new webpack.optimize.UglifyJsPlugin({
86+
compress: {
87+
warnings: false
88+
}
89+
})
90+
)
91+
92+
module.exports = config

build/webpack.client.config.js

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
const base = require('./webpack.base.config')
2+
const ExtractTextPlugin = require('extract-text-webpack-plugin')
3+
const HTMLPlugin = require('html-webpack-plugin')
4+
const vueConfig = require('./vue-loader.config')
5+
const webpack = require('webpack')
6+
7+
const config = Object.assign({}, base, {
8+
plugins: (base.plugins || []).concat([
9+
// strip comments in Vue code
10+
new webpack.DefinePlugin({
11+
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
12+
'process.env.VUE_ENV': '"client"'
13+
}),
14+
// extract vendor chunks for better caching
15+
new webpack.optimize.CommonsChunkPlugin({
16+
name: 'vendor'
17+
}),
18+
// extract webpack runtime and module manifest to its own file in order to
19+
// prevent vendor hash from being updated whenever app bundle is updated
20+
new webpack.optimize.CommonsChunkPlugin({
21+
name: 'manifest',
22+
chunks: ['vendor']
23+
}),
24+
// generate output HTML
25+
new HTMLPlugin({
26+
template: 'src/index.template.html',
27+
inject: process.env.NODE_ENV !== 'production' ? 'body' : false,
28+
minify: {
29+
collapseWhitespace: true
30+
},
31+
environment: process.env.NODE_ENV
32+
}),
33+
new ExtractTextPlugin('styles.[hash].css')
34+
])
35+
})
36+
37+
if (process.env.NODE_ENV !== 'production') {
38+
return module.exports = config
39+
}
40+
41+
// Use ExtractTextPlugin to extract CSS into a single file
42+
// so it's applied on initial render
43+
44+
// vueConfig is already included in the config via LoaderOptionsPlugin
45+
// here we overwrite the loader config for <style lang="stylus">
46+
// so they are extracted.
47+
vueConfig.loaders = {
48+
stylus: ExtractTextPlugin.extract({
49+
loader: 'css-loader!stylus-loader',
50+
fallbackLoader: "vue-style-loader" // <- this is a dep of vue-loader
51+
}),
52+
sass: ExtractTextPlugin.extract({
53+
loader: 'css-loader!sass-loader',
54+
fallbackLoader: "vue-style-loader" // <- this is a dep of vue-loader
55+
})
56+
}
57+
58+
module.exports = config

build/webpack.server.config.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const webpack = require('webpack')
2+
const base = require('./webpack.base.config')
3+
4+
module.exports = Object.assign({}, base, {
5+
target: 'node',
6+
devtool: false,
7+
entry: './src/server-entry.js',
8+
output: Object.assign({}, base.output, {
9+
filename: 'server-bundle.js',
10+
libraryTarget: 'commonjs2'
11+
}),
12+
externals: Object.keys(require('../package.json').dependencies),
13+
plugins: (base.plugins || []).concat([
14+
new webpack.DefinePlugin({
15+
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
16+
'process.env.VUE_ENV': '"server"'
17+
})
18+
])
19+
})

package.json

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
{
2+
"name": "dalimo",
3+
"description": "A Vue.js project",
4+
"author": "litvinenkow <[email protected]>",
5+
"version": "0.0.0",
6+
"scripts": {
7+
"dev": "node server",
8+
"start": "cross-env NODE_ENV=production node server",
9+
"build": "rimraf dist && npm run build:client && npm run build:server",
10+
"build:client": "cross-env NODE_ENV=production webpack --config build/webpack.client.config.js --progress --hide-modules",
11+
"build:server": "cross-env NODE_ENV=production webpack --config build/webpack.server.config.js --progress --hide-modules"
12+
},
13+
"engines": {
14+
"node": ">=6.0",
15+
"npm": ">=3.0"
16+
},
17+
"dependencies": {
18+
"@websanova/vue-auth": "^2.8.2-beta",
19+
"axios": "^0.15.3",
20+
"compression": "^1.6.2",
21+
"cookie-parser": "^1.4.3",
22+
"es6-promise": "^4.0.5",
23+
"express": "^4.14.0",
24+
"jsonwebtoken": "^7.4.1",
25+
"lru-cache": "^4.0.2",
26+
"serialize-javascript": "^1.3.0",
27+
"serve-favicon": "^2.3.2",
28+
"vue-auth": "^2.0.0-alpha.1",
29+
"vue-axios": "^2.0.1",
30+
"vue-cookie": "^1.1.4"
31+
},
32+
"devDependencies": {
33+
"autoprefixer": "^6.5.3",
34+
"buble": "^0.15.1",
35+
"buble-loader": "^0.4.0",
36+
"cross-env": "^3.1.3",
37+
"css-loader": "^0.26.0",
38+
"extract-text-webpack-plugin": "^2.0.0-beta.3",
39+
"file-loader": "^0.9.0",
40+
"html-minifier": "^3.2.2",
41+
"html-webpack-plugin": "^2.24.1",
42+
"node-sass": "^4.0.0",
43+
"pug": "^2.0.0-beta3",
44+
"rimraf": "^2.5.4",
45+
"sass-loader": "^4.0.2",
46+
"script-loader": "^0.7.0",
47+
"style-loader": "^0.13.1",
48+
"stylus": "^0.54.5",
49+
"stylus-loader": "^2.4.0",
50+
"url-loader": "^0.5.7",
51+
"vue": "^2.2.0",
52+
"vue-loader": "^10.0.2",
53+
"vue-router": "^2.1.1",
54+
"vue-server-renderer": "^2.1.8",
55+
"vue-template-compiler": "^2.1.8",
56+
"vuetify": "^0.9.1",
57+
"vuex": "^2.0.0",
58+
"vuex-router-sync": "^4.0.2",
59+
"webpack": "2.2.1",
60+
"webpack-dev-middleware": "^1.9.0",
61+
"webpack-hot-middleware": "^2.14.0"
62+
}
63+
}

public/api.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE0OTgwNDQwNzcsImp0aSI6InptN09GQW9uODFWV28zZHl5MTQ4dm5lZWQ2d29mNHpwdjVtc254WjJnQW89IiwibmJmIjoxNDk4MDQ0MDc5LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIiwibmFtZSI6IiBcdTA0MTBcdTA0MzRcdTA0M2NcdTA0MzhcdTA0M2RcdTA0MzhcdTA0NDFcdTA0NDJcdTA0NDBcdTA0MzBcdTA0NDJcdTA0M2VcdTA0NDAgIiwicm9sZXMiOlsiYWRtaW4iXX19fQ.V4zBNah-kQkHQAsG1oya42MztqRf2eeXOmSdxiMyHIc","user":{"id":"1","name":" \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 ","roles":["admin"]}}

public/cart.jpg

1.35 KB
Loading

public/catalog.jpg

1.19 KB
Loading

public/home.jpg

1.21 KB
Loading

public/search.jpg

1.21 KB
Loading

0 commit comments

Comments
 (0)