Beispiel #1
0
		_.each(configs, (config) => {
			_.defaultsDeep(config, {
				// context: brickyard.dirs.tempModules,
				// bail: true,
				entry: [`${brickyard.dirs.tempModules}/main.js`],
				output: {
					path: www_dir,
					filename: 'lib/[name].[chunkhash:6].js',
				},
				resolve: {
					modules: ['web_modules', 'node_modules'],
					extensions: ['.js', '.json'],
					alias,
				},
				module: { loaders: [] },
				node: {
					__filename: true,
					__dirname: true,
					fs: 'empty',
				},
			})
			brickyard.events.emit('build-webpack-config', config)
			if (!brickyard.argv.debug) {
				config.plugins.push(new webpack.DefinePlugin({
					'process.env': {
						NODE_ENV: '"production"',
					},
				}))
				if (!brickyard.argv.noUglify) {
					config.plugins.push(new webpack.optimize.UglifyJsPlugin({
						comments: false,
					}))
				}
			}
		})
Beispiel #2
0
	webpack_build_with_config: function(cb) {
		const webpack = require('webpack')
		compiler = webpack(configs)

		const outputOption = {
			// output options
			assets: true,
			colors: true,
			version: true,
			hash: true,
			timings: true,
			chunks: false
		}
		if (brickyard.argv.watch) {
			if (brickyard.modules.buildtask['webpack-dev-server']) {
				brickyard.events.emit('build-webpack-dev-server', compiler)
				cb()
				return
			}
			let callback = cb
			compiler.watch({
				poll: brickyard.argv.polling,
			}, function(err, stats) {
				if (err) throw err
				console.info('webpack watch', stats.toString(outputOption))
				if (callback) {
					callback()
					callback = null
				}
			})
		} else {
			compiler.run(function(err, stats) {
				if (err) throw err
				console.info('webpack build', stats.toString(outputOption))
				cb()
			})
		}
	},
Beispiel #3
0
	'.scss',
]

function tester(ext) {
	return (absPath) => {
		for (let i = 0; i < exts.length; i++) {
			if (absPath.toLowerCase().endsWith(exts[i])) {
				return exts[i] === ext
			}
		}
		return false
	}
}


brickyard.events.on('build-webpack-config', function(config) {
	const ExtractTextPlugin = require('extract-text-webpack-plugin')
	const etp = new ExtractTextPlugin('lib/style-scss.[contenthash:6].css')

	_.defaultsDeep(config, { module: { loaders: [] }, plugins: [] })
	config.module.loaders.push({
		test: tester(exts[0]),
		loader: 'style-loader/useable!css-loader!sass-loader',
	})
	config.module.loaders.push({
		test: tester(exts[1]),
		loader: etp.extract('css-loader!resolve-url-loader!sass-loader?sourceMap'),
	})
	config.plugins.push(etp)
})
Beispiel #4
0
const _ = require('lodash')
const brickyard = require('brickyard')

brickyard.events.on('build-webpack-config', (config) => {
	_.defaultsDeep(config, { module: { loaders: [] } })
	config.module.loaders.push({
		test: /\.js$/,
		loaders: ['babel-loader?presets[]=es2015&presets[]=react&presets[]=react-native&presets[]=stage-1'],
	})
	config.resolve.alias['react-native'] = 'react-native-web'
	config.entry.unshift('babel-polyfill')
})
Beispiel #5
0
			hostname: config.host,
			port: config.port,
		})
	}
	return config
}

brickyard.events.on('build-webpack-config', (config) => {
	if (!brickyard.argv.debug) {
		return
	}
	// no hash, ref to https://github.com/webpack/webpack-dev-server/issues/377
	config.output.filename = 'lib/[name].js'
	// config.output.chunkname = '[name].js'
	if (!config.hot) {
		return
	}

	const webpack = require('webpack')
	_.defaultsDeep(config, { plugins: [] })
	config.entry.push(`webpack-hot-middleware/client?${getConfig().serverUrl}&reload=true`)
	config.entry.push('webpack/hot/dev-server')
	config.plugins.push(new webpack.HotModuleReplacementPlugin())
})

brickyard.events.on('build-webpack-dev-server', (compiler) => {
	const express = require('express')
	const webpackDevMiddleware = require("webpack-dev-middleware")
	const webpackHotMiddleware = require("webpack-hot-middleware")
	const proxy = require('http-proxy-middleware')
	const morgan = require('morgan')
Beispiel #6
0
'use strict'

const _ = require('lodash')
const brickyard = require('brickyard')

brickyard.events.on('build-webpack-config', function(config) {
	_.defaultsDeep(config, { module: { loaders: [] }, plugins: [] })
	config.module.loaders.push({
		test: /\.template\.html$/i,
		loader: 'ng-cache-loader?prefix=*',
	})
})
Beispiel #7
0
brickyard.ensureVersion('4.0.0-alpha')

const watchConfig = brickyard.argv.polling ? {
	usePolling: true,
	interval: typeof (brickyard.argv.polling) === 'number' ? brickyard.argv.polling : 1500,
} : {}


/**
 * 监听生成目录,一旦变更触发livereload插件的运行
 * @param cb
 */
brickyard.events.once('watch-output', () => {
	if (!brickyard.modules.buildtask['buildtask-build-browserify']) { return }
	const livereload = require('gulp-livereload')
	livereload.listen()
	require('chokidar').watch(`${brickyard.dirs.dest}/www/`, watchConfig)
		.on('change', _.debounce(path => livereload.changed(path), 500))
})

// rebuild if plan/buildtask/backend codes update
brickyard.events.once('watch-backend', () => {
	const mds = _.filter(brickyard.modules, md => ['plan', 'buildtask', 'backend'].indexOf(md.type) !== -1)
	const watchee = _.map(mds, md => `${md.path}/`)
	console.log('watch plan, buildtask and backend modules', watchee)

	const onChange = _.debounce((path) => {
		console.log('File Changed:', path)
		process.send(BRICKYARD_CHILD_PROCESS_RUN_AGAIN)
		process.exit(0)
	}, 500)
Beispiel #8
0
brickyard.events.on('build-webpack-config', function(config) {
	_.defaultsDeep(config, { module: { loaders: [] } })
	let npm_config = JSON.parse(fs.readFileSync(`${brickyard.dirs.dest}/package.json`))
	let bower_config = JSON.parse(fs.readFileSync(`${brickyard.dirs.dest}/bower.json`))
	let dependencies = _.extend(npm_config.dependencies, npm_config.devDependencies)
	dependencies = _.extend(npm_config.dependencies, bower_config.dependencies)
	// console.log(dependencies)
	if (dependencies.jquery) {
		config.module.loaders.push({
			test: require.resolve('jquery'),
			loader: 'expose-loader?jQuery!expose-loader?$',
		})
	}
	if (dependencies.bootstrap && dependencies.jquery) {
		config.module.loaders.push({
			test: require.resolve('bootstrap'),
			loader: 'imports-loader?jQuery=jquery',
		})
	}
	if (dependencies.angular && dependencies.jquery) {
		// 这里的作用是生成以下代码
		// var jQuery = require('jquery')
		// require(angular)
		// module.exports = angular
		// 作用是:
		// 1. 加载angular前加载jquery,这样不用用户手动引入jquery
		// 2. 把全局的angular对象作为模块的返回,否则外部调用var angular=require('angular');会出问题
		config.module.loaders.push({
			test: require.resolve('angular'),
			loader: 'imports-loader?jQuery=jquery',
		})
	}
	if (dependencies.ztree_v3) {
		config.resolve.alias.ztree_v3 = path.join(base, 'ztree_v3/js/jquery.ztree.all.js')
	}
	if (dependencies.wowjs) {
		config.module.loaders.push({
			test: require.resolve('wowjs'),
			loader: 'expose-loader?WOW!exports-loader?this.WOW',
		})
	}
	if (dependencies.respond) {
		config.module.loaders.push({
			test: path.join(base, 'respond', 'dest', 'respond.src.js'),
			loader: 'imports-loader?this=>window',
		})
	}
})
Beispiel #9
0
const _ = require('lodash')
const brickyard = require('brickyard')

brickyard.events.on('build-webpack-config', (config) => {
	_.defaultsDeep(config, { module: { loaders: [] }, plugins: [] })
	config.resolve.extensions.push('.ts', '.tsx')
	config.module.loaders.push({
		test: /\.ts$/,
		loaders: [`awesome-typescript-loader?configFileName=${__dirname}/tsconfig.json`, 'angular2-template-loader', 'angular-router-loader'],
	}, {
		test: /\.html$/,
		loader: 'html-loader?minimize=false',
	}, {
		test: /\.component\.css$/,
		loader: 'raw-loader',
	})
})