Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const HappyPack = require('happypack');
const webpackServerConfig = require('./server/server.config');
const lib = require('./config/lib.dependencies');
const HappyThreadPool = HappyPack.ThreadPool({ size: 6 });
// 判断当前运行环境是开发模式还是生产模式
const nodeEnv = process.env.NODE_ENV || 'development';
const __DEV__ = nodeEnv !== 'production';
console.log('当前运行环境:', __DEV__ ? 'development' : 'production');
// 是否使用preact
const __PREACT__ = false;
// 区别path和 publicPath的作用
// path 用来存放打包后文件的输出目录
// publicPath 用来定义静态资源的引用地址
const externals = {
axios: 'axios',
react: 'React',
StyleLintPlugin = require('stylelint-webpack-plugin'),
TimeFixPlugin = require('time-fix-plugin'),
BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin,
UglifyJsPlugin = require('uglifyjs-webpack-plugin'),
configs = require('./webpack.config.js'),
// 是否生产环境
isProduction = process.env.NODE_ENV === 'production',
// 并行执行loader
HappyPack = require('happypack'),
os = require('os'),
happyThreadPool = HappyPack.ThreadPool({
size: os.cpus().length
}),
processEntity = `${configs.versionControl || 'branch'}--${configs.name || 'anonymous'}--[${process.env.NODE_ENV}]`,
// 当前目录相对于JS输出模块的路径,因大部分资源的生成路径相对于JS输出模块路径
cwdRalativeOutputPath = path.relative(path.resolve(__dirname, '../', configs.outputPath), __dirname);
require('node-bash-title')(processEntity);
console.log(processEntity, '\n');
// failOnError使用起来不方便
configs.lint.css.failOnError = false;
configs.lint.js.failOnError = false;
const webpack = require('webpack');
const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const SimpleProgressPlugin = require('webpack-simple-progress-plugin');
const ThemePlugin = require('@alifd/next-theme-webpack-plugin');
const os = require('os');
const HappyPack = require('happypack');
HappyPack.SERIALIZABLE_OPTIONS = HappyPack.SERIALIZABLE_OPTIONS.concat([
'postcss',
]);
const happyThreadPool = HappyPack.ThreadPool({
size: os.cpus().length,
});
const DEV = process.env.DEV;
const LIVELOAD = process.env.LIVELOAD;
const cwd = process.cwd();
const entry = {};
// 获取 package.json 中的主题配置文件
let theme = '';
try {
const pkg = require('./package.json');
if (pkg && pkg.buildConfig && pkg.buildConfig.theme) {
theme = pkg.buildConfig.theme;
}
} catch (e) {
const webpack = require('webpack');
const path = require('path');
const globby = require('globby');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const SimpleProgressPlugin = require('webpack-simple-progress-plugin');
const ThemePlugin = require('@alifd/next-theme-webpack-plugin');
const os = require('os');
const HappyPack = require('happypack');
const colors = require('colors');
const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length });
const DEV = process.env.DEV;
const LIVELOAD = process.env.LIVELOAD;
const SINGLE_PAGE = process.env.SINGLE_PAGE;
const cwd = process.cwd();
const entry = {};
// 获取 package.json 中的主题配置文件
let theme = '';
try {
const pkg = require('./package.json');
if (pkg && pkg.buildConfig && pkg.buildConfig.theme) {
theme = pkg.buildConfig.theme;
} else {
const fieConfig = require('./fie.config.js');
if (fieConfig && fieConfig.toolkitConfig && fieConfig.toolkitConfig.theme) {
const path = require('path')
const webpack = require('webpack')
const str = JSON.stringify
const { DefinePlugin } = webpack
const WebpackBar = require('webpackbar')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const GitRevisionPlugin = require('git-revision-webpack-plugin')
const gitRevisionPlugin = new GitRevisionPlugin()
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')
const initMonacoPluginConfig = require('./monaco-plugin-config/initialOptions')
const HappyPack = require('happypack')
const os = require('os')
const execSync = require('child_process').execSync
const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length })
const PROJECT_ROOT = path.resolve(__dirname, '..')
// const ICO_PATH = path.join(PROJECT_ROOT, 'static/favicon.ico')
// const ICO_PATH = '//studio-res.coding.net/StudioWebResource/Images/favicon.ico'
module.exports = function(options = {}) {
const {
mainEntryHtmlName = 'workspace.html',
dashboardEntryHtmlName = 'dashboard.html',
accountEntryHtmlName = 'account.html',
loginEntryHtmlName = 'login.html',
introEntryHtmlName = 'intro.html',
changelogEntryHtmlName = 'changelog.html',
maintainEntryHtmlName = 'maintain.html',
workspacesEntryHtmlName = 'index.html',
staticDir = 'rs',
filename = '[name].[hash].js',
const path = require('path');
const webpack = require('webpack');
const bs = require('browser-sync').create();
const proxyMiddleware = require('http-proxy-middleware');
const webpackDevMiddleware = require('webpack-dev-middleware');
const webpackHotMiddleware = require('webpack-hot-middleware');
const ProgressBarPlugin = require('progress-bar-webpack-plugin');
const HappyPack = require('happypack');
const color = require('cli-color');
const debug = require('../src/utils/debug');
const clientConfig = require('./client');
const serverConfig = require('./server');
const domain = [color.magentaBright('webpack'), '::', color.redBright('server')].join('');
const domainClient = [color.magentaBright('webpack'), '::', color.yellow('client')].join('');
const threadPool = HappyPack.ThreadPool({ size: 8 }); // eslint-disable-line
// Get ports
const port = (parseInt(process.env.PORT, 10) || 3000) - 1;
const proxyPort = port + 1;
const useHappyPack = process.env.HAPPY !== '0';
// Logging
const log = (...args) => debug(domain, ...args);
const logClient = (...args) => debug(domainClient, ...args);
// Use happy or not
if (useHappyPack) {
// Loaders that we should happypackivide
const samples = ['.js', '.css', '.scss', '.json'];
const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin');
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
const paths = require('./paths');
const getClientEnvironment = require('./env');
const { getPagesFileEntry } = require('./fileReady');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
const publicPath = paths.servedPath;
var HappyPack = require('happypack');
var happyThreadPool = HappyPack.ThreadPool({ size: 5 });
const shouldUseRelativeAssetPaths = publicPath === './';
const shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';
// `publicUrl` is just like `publicPath`, but we will provide it to our app
// as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript.
// Omit trailing slash as %PUBLIC_URL%/xyz looks better than %PUBLIC_URL%xyz.
const publicUrl = publicPath.slice(0, -1);
// Get environment variables to inject into our app.
const env = getClientEnvironment(publicUrl);
// Assert this just to be safe.
// Development builds of React are slow and not intended for production.
if (env.stringified['process.env'].NODE_ENV !== '"production"') {
throw new Error('Production builds must have NODE_ENV=production.');
}
// We have multiple happypack plugins, its' better to use one shared thread pool
const HappyPack = require('happypack');
const os = require('os');
const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length - 1 });
module.exports = happyThreadPool;
const HappyPack = require('happypack')
const happyThreadPool = HappyPack.ThreadPool({ size: 3 })
module.exports = function (opts) {
return {
id: opts.id,
threadPool: happyThreadPool,
loaders: opts.loaders
}
}
function makeHappy(args, context, loaders) {
if (!context.userConfig.happypack.enabled && !args.happy) {
return [];
}
const happyThreadPool = HappyPack.ThreadPool({size: context.userConfig.happypack.cpus});
return loaders
.filter(l => l.happy)
.map(l => new HappyPack({
id: l.happy.id,
threadPool: happyThreadPool,
tempDir: path.join(context.projectDir, '.tarec/happypack'),
cache: context.userConfig.happypack.cache
}))
}