Skip to content

Commit

Permalink
2.3.0 - Update libraries and create multiple enviroments for webpack …
Browse files Browse the repository at this point in the history
…build
  • Loading branch information
caiobiodere committed Jan 18, 2019
1 parent 3cc49ad commit b484c0f
Show file tree
Hide file tree
Showing 7 changed files with 419 additions and 182 deletions.
17 changes: 15 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cordova-template-framework7-vue-webpack",
"version": "2.1.2",
"version": "2.3.0",
"description": "Cordova template with framework7, vue 2 and webpack 2.",
"main": "index.js",
"scripts": {
Expand All @@ -20,7 +20,20 @@
"template",
"webpack",
"vue.js",
"vue"
"vue",
"mobile",
"framework",
"framework7",
"ios",
"iphone",
"ipad",
"apple",
"phonegap",
"touch",
"app",
"f7",
"material",
"android"
],
"author": "Caio Biodere",
"license": "Apache-2.0"
Expand Down
6 changes: 3 additions & 3 deletions template_src/hooks/hookers.js
Original file line number Diff line number Diff line change
Expand Up @@ -202,11 +202,11 @@ module.exports = function (ctx) {
let defer = new Q.defer(),
outText = '',
isResultFound = false,
args = [`"${webpackDevServerPath}"`, '--hot', '--inline', '--env.devserver', '--' + platform, `--public ${getRouterIpAddr()}:8081`],
args = [`"${webpackDevServerPath}"`, '--hot', '--inline', '--env.devserver', '--' + platform, `--public ${getRouterIpAddr()}:8081`, '--env.devserver'],
run = epipeBombPath

if (os.platform() === 'win32') {
args = ['--hot', '--inline', '--env.devserver', '--' + platform, `--public ${getRouterIpAddr()}:8081`]
args = ['--hot', '--inline', '--env.devserver', '--' + platform, `--public ${getRouterIpAddr()}:8081`, '--env.devserver']
run = `"${webpackDevServerPath}.cmd"`
}

Expand Down Expand Up @@ -428,4 +428,4 @@ module.exports = function (ctx) {
}

return deferral.promise
}
}
20 changes: 10 additions & 10 deletions template_src/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
"babel-preset-env": "^1.6.1",
"cheerio": "^1.0.0-rc.2",
"chokidar": "^2.0.4",
"clean-webpack-plugin": "^0.1.15",
"css-loader": "^1.0.0",
"current-device": "^0.7.8",
"clean-webpack-plugin": "^1.0.0",
"css-loader": "^2.1.0",
"current-device": "^0.8.0",
"epipebomb": "^1.0.0",
"extract-text-webpack-plugin": "next",
"file-loader": "^2.0.0",
"extract-text-webpack-plugin": "4.0.0-beta.0",
"file-loader": "^3.0.1",
"html-loader": "^0.5.1",
"html-webpack-plugin": "^3.2.0",
"node-sass": "^4.5.0",
Expand All @@ -44,12 +44,12 @@
},
"dependencies": {
"font-awesome": "^4.7.0",
"framework7": "^3.4.0",
"framework7-icons": "^0.9.1",
"framework7-vue": "^3.4.0",
"material-design-icons": "^3.0.1",
"framework7": "^3.6.5",
"framework7-icons": "^2.1.1",
"framework7-vue": "^3.6.5",
"loglevel": "^1.4.1",
"material-design-icons": "^3.0.1",
"vue": "^2.5.17",
"vuex": "^3.0.1"
"vuex": "^3.1.0"
}
}
124 changes: 124 additions & 0 deletions template_src/webpack.config.dev.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
const path = require('path');
const fs = require('fs');

const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CordovaHtmlOutputPlugin = require('./webpack/plugins/CordovaHtmlOutputPlugin.js');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const CleanPlugin = require('clean-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin');

const entryFile = path.join(__dirname, 'src/main.js');
const devServerPort = 8081;

module.exports = {
entry: entryFile,
mode: 'development',

resolve: {
extensions: ['.js', '.json', '.vue'],
modules: [path.join(__dirname, 'src'), 'node_modules'],
alias: {
'vue$': 'vue/dist/vue.common.js',
'src': path.resolve(__dirname, 'src/'),
'assets': path.resolve(__dirname, 'src/assets/'),
'pages': path.resolve(__dirname, 'src/assets/vue/pages/'),
'components': path.resolve(__dirname, 'src/assets/vue/components/')
}
},

output: {
pathinfo: true,
devtoolLineToLine: true,
filename: '[hash].[name].js',
sourceMapFilename: "[hash].[name].js.map",
path: path.join(__dirname, 'www')
},

module: {
rules: [
{
test: /\.(png|jpe?g|gif)$/,
loader: 'file-loader',
options: { name: '[name].[ext]?[hash]' }
},
{
test: /\.(woff2?|eot|ttf|otf|mp3|wav)(\?.*)?$/,
loader: 'file-loader',
options: { name: '[name].[ext]?[hash]' }
},
{
test: /\.svg$/,
loader: 'url-loader'
},
{
test: /\.scss$/,
loader: ['vue-style-loader', 'css-loader', 'sass-loader']
},
{
test: /\.sass$/,
loader: ['vue-style-loader', 'css-loader', 'sass-loader?indentedSyntax']
},
{
test: /\.vue$/,
exclude: /node_modules/,
loader: 'vue-loader',
options: {
loaders: {
js: {
loader: 'babel-loader',
options: {
presets: ['env'],
plugins: ['transform-object-rest-spread']
}
}
}
}
},
{
test: /\.js$/,
exclude: /node_modules(\/|\\)(?!(framework7|framework7-vue|template7|dom7)(\/|\\)).*/,
use: {
loader: 'babel-loader',
options: {
presets: ['env'],
plugins: ['transform-runtime', 'transform-object-rest-spread']
}
}
},
{
test: /\.css$/, use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
}
]
},

plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('development')
}
}),
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'src/index.ejs',
platform: process.argv.length > 5 ? process.argv[5].replace(/[- ]/g, '') : "",
inject: true,
minify: {
removeComments: true,
removeScriptTypeAttributes: true,
removeAttributeQuotes: true,
useShortDoctype: true,
decodeEntities: true,
collapseWhitespace: true,
minifyCSS: true
}
}),
new VueLoaderPlugin(),
new CordovaHtmlOutputPlugin(),
new ExtractTextPlugin("styles.css")
]
}
174 changes: 7 additions & 167 deletions template_src/webpack.config.js
Original file line number Diff line number Diff line change
@@ -1,169 +1,9 @@
const path = require('path');
const fs = require('fs');

const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CordovaHtmlOutputPlugin = require('./webpack/plugins/CordovaHtmlOutputPlugin.js');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const CleanPlugin = require('clean-webpack-plugin');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const VueLoaderPlugin = require('vue-loader/lib/plugin');

const entryFile = path.join(__dirname, 'src/main.js');
const devServerPort = 8081;

let config = function (env) {
let returner = {
entry: entryFile,
mode: (env && typeof env.release !== 'undefined' && env.release) ? "production" : "development",

resolve: {
extensions: ['.js', '.json', '.vue'],
modules: [path.join(__dirname, 'src'), 'node_modules'],
alias: {
'vue$': 'vue/dist/vue.common.js',
'src': path.resolve(__dirname, 'src/'),
'assets': path.resolve(__dirname, 'src/assets/'),
'pages': path.resolve(__dirname, 'src/assets/vue/pages/'),
'components': path.resolve(__dirname, 'src/assets/vue/components/')
}
},

output: {
pathinfo: true,
devtoolLineToLine: true,
filename: '[hash].[name].js',
sourceMapFilename: "[hash].[name].js.map",
path: path.join(__dirname, 'www')
},

module: {
rules: [
{
test: /\.(png|jpe?g|gif)$/,
loader: 'file-loader',
options: { name: '[name].[ext]?[hash]' }
},
{
test: /\.(woff2?|eot|ttf|otf|mp3|wav)(\?.*)?$/,
loader: 'file-loader',
options: { name: '[name].[ext]?[hash]' }
},
{
test: /\.svg$/,
loader: 'url-loader'
},
{
test: /\.scss$/,
loader: ['vue-style-loader', 'css-loader', 'sass-loader']
},
{
test: /\.sass$/,
loader: ['vue-style-loader', 'css-loader', 'sass-loader?indentedSyntax']
},
{
test: /\.vue$/,
exclude: /node_modules/,
loader: 'vue-loader',
options: {
loaders: {
js: {
loader: 'babel-loader',
options: {
presets: ['env'],
plugins: ['transform-object-rest-spread']
}
}
}
}
},
{
test: /\.js$/,
exclude: /node_modules(\/|\\)(?!(framework7|framework7-vue|template7|dom7)(\/|\\)).*/,
use: {
loader: 'babel-loader',
options: {
presets: ['env'],
plugins: ['transform-runtime', 'transform-object-rest-spread']
}
}
}
]
},

plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify((env && typeof env !== "undefined" && env.release) ? 'production' : 'development')
}
}),
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'src/index.ejs',
platform: process.argv.length > 5 ? process.argv[5].replace(/[- ]/g, '') : "",
inject: true,
minify: {
removeComments: true,
removeScriptTypeAttributes: true,
removeAttributeQuotes: true,
useShortDoctype: true,
decodeEntities: true,
collapseWhitespace: true,
minifyCSS: true
}
}),
new VueLoaderPlugin()
]
}

module.exports = function (env) {
if (typeof env === 'undefined' || typeof env.devserver === 'undefined') {
returner.plugins.push(new CordovaHtmlOutputPlugin())
returner.plugins.push(new ExtractTextPlugin("styles.css"))
returner.module.rules.push({
test: /\.css$/, use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
})
}

if (env) {
if (typeof env.devserver !== 'undefined' && env.devserver) {
returner.module.rules.push({
test: /\.css$/, loader: ['style-loader', 'css-loader']
})
returner.entry = [
entryFile,
]
returner.output.publicPath = "/"
returner.devtool = "eval"
returner.devServer = {
contentBase: path.join(__dirname, "www"),
port: devServerPort,
stats: { colors: true },
watchOptions: {
aggregateTimeout: 300,
poll: 100,
ignored: /node_modules|platforms/,
},
headers: {
"Access-Control-Allow-Origin": "*"
},
host: "0.0.0.0"
}
returner.plugins.push(new webpack.NamedModulesPlugin())
} else if (typeof env.release !== 'undefined' && env.release) {
returner.plugins.push(new CleanPlugin("www", {
root: path.join(__dirname, "."),
dry: false,
verbose: false,
exclude: ["index.html"]
}))
returner.plugins.push(new UglifyJsPlugin())
}
return require('./webpack.config.dev');
} else if (typeof env.devserver !== 'undefined' && env.devserver) {
return require('./webpack.config.server');
} else if (typeof env.release !== 'undefined' && env.release) {
return require('./webpack.config.release');
}

return returner
}

module.exports = config
}
Loading

0 comments on commit b484c0f

Please sign in to comment.