Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
.parse(process.argv)
const entryPointsComponents = program.linkAll ? componentsFullPath(PWD) : []
const [componentID] = program.args
const [category, component] = componentID.split('/')
if (!category || !component) {
console.log('The correct command is $ sui-studio dev [category]/[component]')
}
const studioDevConfig = {
...config,
context: path.join(__dirname, '..', 'workbench', 'src'),
plugins: [
...config.plugins,
new webpack.DefinePlugin({__COMPONENT_ID__: JSON.stringify(componentID)})
],
resolve: {
...config.resolve,
alias: {
...config.resolve.alias,
component: path.join(PWD, 'components', category, component, 'src'),
package: path.join(
PWD,
'components',
category,
component,
'package.json'
),
demo: path.join(PWD, 'demo', category, component)
}
const [componentID] = program.args
const [category, component] = componentID.split('/')
if (!category || !component) {
console.log('The correct command is $ sui-studio dev [category]/[component]')
}
const studioDevConfig = {
...config,
context: path.join(__dirname, '..', 'workbench', 'src'),
plugins: [
...config.plugins,
new webpack.DefinePlugin({__COMPONENT_ID__: JSON.stringify(componentID)})
],
resolve: {
...config.resolve,
alias: {
...config.resolve.alias,
component: path.join(PWD, 'components', category, component, 'src'),
package: path.join(
PWD,
'components',
category,
component,
'package.json'
),
demo: path.join(PWD, 'demo', category, component)
}
}
}
startDevServer({
if (!category || !component) {
console.log('The correct command is $ sui-studio dev [category]/[component]')
}
const studioDevConfig = {
...config,
context: path.join(__dirname, '..', 'workbench', 'src'),
plugins: [
...config.plugins,
new webpack.DefinePlugin({__COMPONENT_ID__: JSON.stringify(componentID)})
],
resolve: {
...config.resolve,
alias: {
...config.resolve.alias,
component: path.join(PWD, 'components', category, component, 'src'),
package: path.join(
PWD,
'components',
category,
component,
'package.json'
),
demo: path.join(PWD, 'demo', category, component)
}
}
}
startDevServer({
config: studioDevConfig,
packagesToLink: [...entryPointsComponents, ...program.linkPackage]
module.exports = ({address, page, port}) =>
webpack({
...devConfig,
context: path.resolve(process.cwd(), 'pages', page),
entry: [`./index.js`],
output: {
path: '/',
publicPath: `http://${address}:${port}/`,
filename: 'bundle.js',
jsonpFunction: `webpackJsonp-${page}-dev`
},
plugins: pipe(removePlugin('HtmlWebpackPlugin'))(devConfig.plugins)
})
)
const entry = {app: MAIN_ENTRY_POINT}
if (config.vendor) {
entry['vendor'] = config.vendor
}
return webpack({
...prodConfig,
context: path.resolve(process.cwd(), 'pages', page),
resolve: {
...prodConfig.resolve,
alias: globalConfig.alias
},
entry,
output: {
...prodConfig.output,
path: path.resolve(process.cwd(), 'public', page),
publicPath: remoteCdn
? `${remoteCdn}/${page}/`
: prodConfig.output.publicPath,
jsonpFunction: `webpackJsonp-${page}`
},
optimization: {
...prodConfig.optimization,
minimizer: [
uglifyJsPlugin,
new OptimizeCSSAssetsPlugin({
cssProcessorOptions: {
zindex: false
}
})
]
entry['vendor'] = config.vendor
}
return webpack({
...prodConfig,
context: path.resolve(process.cwd(), 'pages', page),
resolve: {
...prodConfig.resolve,
alias: globalConfig.alias
},
entry,
output: {
...prodConfig.output,
path: path.resolve(process.cwd(), 'public', page),
publicPath: remoteCdn
? `${remoteCdn}/${page}/`
: prodConfig.output.publicPath,
jsonpFunction: `webpackJsonp-${page}`
},
optimization: {
...prodConfig.optimization,
minimizer: [
uglifyJsPlugin,
new OptimizeCSSAssetsPlugin({
cssProcessorOptions: {
zindex: false
}
})
]
},
plugins: pipe(
removePlugin('HtmlWebpackPlugin'),
removePlugin('ScriptExtHtmlWebpackPlugin'),
context: path.resolve(process.cwd(), 'pages', page),
resolve: {
...prodConfig.resolve,
alias: globalConfig.alias
},
entry,
output: {
...prodConfig.output,
path: path.resolve(process.cwd(), 'public', page),
publicPath: remoteCdn
? `${remoteCdn}/${page}/`
: prodConfig.output.publicPath,
jsonpFunction: `webpackJsonp-${page}`
},
optimization: {
...prodConfig.optimization,
minimizer: [
uglifyJsPlugin,
new OptimizeCSSAssetsPlugin({
cssProcessorOptions: {
zindex: false
}
})
]
},
plugins: pipe(
removePlugin('HtmlWebpackPlugin'),
removePlugin('ScriptExtHtmlWebpackPlugin'),
removePlugin('PreloadWebpackPlugin')
)(prodConfig.plugins)
})
}
optimization: {
...prodConfig.optimization,
minimizer: [
uglifyJsPlugin,
new OptimizeCSSAssetsPlugin({
cssProcessorOptions: {
zindex: false
}
})
]
},
plugins: pipe(
removePlugin('HtmlWebpackPlugin'),
removePlugin('ScriptExtHtmlWebpackPlugin'),
removePlugin('PreloadWebpackPlugin')
)(prodConfig.plugins)
})
}
module.exports = ({page, remoteCdn, globalConfig = {}}) => {
const config = requireOrDefault(
path.resolve(process.cwd(), 'pages', page, 'package')
)
const entry = {app: MAIN_ENTRY_POINT}
if (config.vendor) {
entry['vendor'] = config.vendor
}
return webpack({
...prodConfig,
context: path.resolve(process.cwd(), 'pages', page),
resolve: {
...prodConfig.resolve,
alias: globalConfig.alias
},
entry,
output: {
...prodConfig.output,
path: path.resolve(process.cwd(), 'public', page),
publicPath: remoteCdn
? `${remoteCdn}/${page}/`
: prodConfig.output.publicPath,
jsonpFunction: `webpackJsonp-${page}`
},
optimization: {
...prodConfig.optimization,
minimizer: [
uglifyJsPlugin,
new OptimizeCSSAssetsPlugin({
module.exports = ({outputPath}) =>
webpack({
...serverConfig,
entry: path.join(__dirname, '..', 'server'),
output: {
...serverConfig.output,
path: outputPath,
chunkFilename: '[name].js',
filename: 'index.js'
},
externals: undefined,
resolve: {
...serverConfig.resolve,
modules: [
path.join(__dirname, '..', 'server'),
path.join(__dirname, '..', 'node_modules'),
path.join(process.cwd(), 'src'),
path.join(process.cwd(), 'node_modules'),
'node_modules'
]
}
})