@oracle/oraclejet-tooling
Advanced tools
Comparing version 14.0.1 to 14.1.0
@@ -39,5 +39,5 @@ /** | ||
if (_isSvgFile(srcDir)) { | ||
fs.copySync(srcDir, destDir, { overwrite: false, errorOnExist: false }); | ||
fs.copySync(srcDir, destDir, { overwrite: false, errorOnExist: false, dereference: true }); | ||
} else { | ||
fs.copySync(srcDir, destDir, { overwrite: true }); | ||
fs.copySync(srcDir, destDir, { overwrite: true, dereference: true }); | ||
} | ||
@@ -98,3 +98,3 @@ } | ||
try { | ||
fs.copySync(src, dest); | ||
fs.copySync(src, dest, { dereference: true }); | ||
resolve(); | ||
@@ -122,6 +122,6 @@ } catch (error) { | ||
const commonDest = path.join(destBase, CONSTANTS.COMMON_THEME_DIRECTORY); | ||
fs.copySync(commonSrc, commonDest); | ||
fs.copySync(commonSrc, commonDest, { dereference: true }); | ||
} | ||
fs.copySync(defaultFontsSrc, defaultFontsDest); | ||
fs.copySync(defaultImagesSrc, defaultImagesDest); | ||
fs.copySync(defaultFontsSrc, defaultFontsDest, { dereference: true }); | ||
fs.copySync(defaultImagesSrc, defaultImagesDest, { dereference: true }); | ||
} | ||
@@ -154,3 +154,3 @@ | ||
}); | ||
fs.copySync(componentDirPath, destPath); | ||
fs.copySync(componentDirPath, destPath, { dereference: true }); | ||
} | ||
@@ -183,3 +183,3 @@ return Promise.resolve(); | ||
if (fileStat.isDirectory() || !/scss/.test(path.extname(file))) { | ||
fs.copySync(path.join(srcBase, file), path.join(destBase, file)); | ||
fs.copySync(path.join(srcBase, file), path.join(destBase, file), { dereference: true }); | ||
} | ||
@@ -220,3 +220,3 @@ }); | ||
const dest = util.destPath(path.join(stagingPath, config('paths').src.styles, singleTheme.name, singleTheme.version, themePlatform, '/')); | ||
fs.copySync(src, dest); | ||
fs.copySync(src, dest, { dereference: true }); | ||
@@ -227,3 +227,3 @@ // copy common dir | ||
if (util.fsExistsSync(commonSrc)) { | ||
fs.copySync(commonSrc, commonDest); | ||
fs.copySync(commonSrc, commonDest, { dereference: true }); | ||
} | ||
@@ -258,3 +258,3 @@ }); | ||
const rwdest = _getThemeDestPath(rwood, stgPath, ext, livereload, platform, opts.destination); | ||
fs.copySync(rwsrc, rwdest); | ||
fs.copySync(rwsrc, rwdest, { dereference: true }); | ||
} | ||
@@ -267,3 +267,3 @@ | ||
const stdest = _getThemeDestPath(stable, stgPath, ext, livereload, platform, opts.destination); | ||
fs.copySync(stsrc, stdest); | ||
fs.copySync(stsrc, stdest, { dereference: true }); | ||
} | ||
@@ -303,6 +303,6 @@ // copy to themes | ||
if (fs.existsSync(preactSrc)) { | ||
fs.copySync(preactSrc, preactDest); | ||
fs.copySync(preactSrc, preactDest, { dereference: true }); | ||
if (buildType === 'release') { | ||
// Preact images need to be a peer of the code bundle.js | ||
fs.copySync(path.join(preactSrc, 'images'), path.join(stgPath, 'images')); | ||
fs.copySync(path.join(preactSrc, 'images'), path.join(stgPath, 'images'), { dereference: true }); | ||
} | ||
@@ -323,3 +323,3 @@ } | ||
const dest = path.join(srcBase, `locale_${file}`); | ||
fs.copySync(src, dest, { overwrite: true }); | ||
fs.copySync(src, dest, { overwrite: true, dereference: true }); | ||
fs.removeSync(src); | ||
@@ -716,3 +716,3 @@ }); | ||
paths.forEach(([src, dest]) => { | ||
fs.copySync(src, dest); | ||
fs.copySync(src, dest, { dereference: true }); | ||
}); | ||
@@ -867,5 +867,5 @@ util.log('Copied local resource components'); | ||
if (util.fsExistsSync(npmPckgSrcPath)) { | ||
fs.copySync(npmPckgSrcPath, destNpmpckgDirPath); | ||
fs.copySync(npmPckgSrcPath, destNpmpckgDirPath, { dereference: true }); | ||
} else if (util.fsExistsSync(npmPckgSrcPath.concat('.js'))) { | ||
fs.copySync(npmPckgSrcPath.concat('.js'), destNpmpckgDirPath.concat('.js')); | ||
fs.copySync(npmPckgSrcPath.concat('.js'), destNpmpckgDirPath.concat('.js'), { dereference: true }); | ||
} | ||
@@ -872,0 +872,0 @@ } |
@@ -416,6 +416,7 @@ /** | ||
if (apiDocDir && !context.opts[CONSTANTS.OMIT_COMPONENT_VERSION_FLAG]) { | ||
const componentVersion = util.getComponentVersion({ pack, component }); | ||
if (component && pack) { | ||
apiDocDir = path.join(components, pack, componentVersion, component); | ||
const packVersion = util.getComponentVersion({ component: pack }); | ||
apiDocDir = path.join(components, pack, packVersion, component); | ||
} else if (component) { | ||
const componentVersion = util.getComponentVersion({ component }); | ||
apiDocDir = path.join(apiDocDir, componentVersion); | ||
@@ -521,5 +522,7 @@ } | ||
path.join(componentSrc, file), | ||
path.join(componentDest, file) | ||
path.join(componentDest, file), | ||
{ dereference: true } | ||
); | ||
}); | ||
_ensureMonoPackInfoDefaultIntoCCAComponent(files, componentDest); | ||
util.log(`Copied ${componentName} runtime resources from ${componentSrc} to ${componentDest}`); | ||
@@ -565,5 +568,7 @@ } | ||
path.join(applicationSrc, file), | ||
path.join(applicationDest, file) | ||
path.join(applicationDest, file), | ||
{ dereference: true } | ||
); | ||
}); | ||
_ensureMonoPackInfoDefaultIntoCCAComponent(files, applicationDest); | ||
util.log(`Copied runtime resources from /${typescriptFolder} to /${javascriptFolder}`); | ||
@@ -576,2 +581,28 @@ } | ||
/** | ||
* ## _ensureMonoPackInfoDefaultIntoCCAComponent | ||
* | ||
* This method ensures that mono-pack version and jetVersion are properly | ||
* propagated to its CCA components. This is done so because on creating the | ||
* component in the pack, these details are left out. | ||
* | ||
* @private | ||
* @param {Array} files a list of files to copy to js folder | ||
* @param {string} destPath staging js path | ||
*/ | ||
function _ensureMonoPackInfoDefaultIntoCCAComponent(files, destPath) { | ||
const jsonFiles = files.filter(file => file.endsWith('component.json')); | ||
jsonFiles.forEach((jsonFile) => { | ||
const json = fs.readJSONSync(path.join(destPath, jsonFile)); | ||
if (json.pack) { | ||
const { componentJson } = util.getComponentsCache()[json.pack]; | ||
if (componentJson.type === 'mono-pack') { | ||
json.version = componentJson.version; | ||
json.jetVersion = componentJson.jetVersion; | ||
fs.writeJSONSync(path.join(destPath, jsonFile), json); | ||
} | ||
} | ||
}); | ||
} | ||
/** | ||
* ## _copyVComponentComponentJsonToJs | ||
@@ -578,0 +609,0 @@ * |
@@ -230,3 +230,4 @@ /** | ||
'transform', | ||
'extension' | ||
'extension', | ||
'implicitBusyContext' | ||
]); | ||
@@ -233,0 +234,0 @@ if (requiredSubAttributes.has(subAttribute)) { |
@@ -928,3 +928,3 @@ /** | ||
// Is it a component of a type 'pack' or mono-pack? | ||
// Is it a component of a type 'pack' or 'mono-pack'? | ||
if ((componentMetadata.type === CONSTANTS.PACK_TYPE.MONO_PACK || componentMetadata.type === 'pack') && | ||
@@ -931,0 +931,0 @@ // Pack content is already known, avoid infinite loop. Loop explanation: |
@@ -46,3 +46,3 @@ /** | ||
if (_isIndexHtml(filePath)) { | ||
fs.copySync(filePath, defaultDest); | ||
fs.copySync(filePath, defaultDest, { dereference: true }); | ||
buildPromise = buildCommon.injectTheme(buildContext) | ||
@@ -52,3 +52,3 @@ .then(buildCommon.injectLocalhostCspRule) | ||
} else if (_isMainJs(filePath)) { | ||
fs.copySync(filePath, defaultDest); | ||
fs.copySync(filePath, defaultDest, { dereference: true }); | ||
buildPromise = buildCommon.injectPaths(buildContext); | ||
@@ -81,3 +81,4 @@ } else if (util.isPathCCA(path.join(pathComponents.mid, pathComponents.end))) { | ||
filePath, | ||
filePathDest | ||
filePathDest, | ||
{ dereference: true } | ||
); | ||
@@ -121,7 +122,8 @@ if (isTypescriptFile) { | ||
filePath, | ||
filePathDestJs | ||
filePathDestJs, | ||
{ dereference: true } | ||
); | ||
} | ||
} else if (isTypescriptFile) { | ||
fs.copySync(filePath, defaultDest); | ||
fs.copySync(filePath, defaultDest, { dereference: true }); | ||
// eslint-disable-next-line no-param-reassign | ||
@@ -138,3 +140,3 @@ buildContext.serving = true; | ||
// copy to web/ts to prevent override during post-typescript copy | ||
fs.copySync(filePath, defaultDest); | ||
fs.copySync(filePath, defaultDest, { dereference: true }); | ||
// copy to web/js since post-typescript copy not run | ||
@@ -153,6 +155,7 @@ const relativePathToFile = path.relative( | ||
filePath, | ||
filePathDest | ||
filePathDest, | ||
{ dereference: true } | ||
); | ||
} else { | ||
fs.copySync(filePath, defaultDest); | ||
fs.copySync(filePath, defaultDest, { dereference: true }); | ||
} | ||
@@ -159,0 +162,0 @@ buildPromise |
{ | ||
"name": "@pack@", | ||
"version": "1.0.0", | ||
"jetVersion": "14.0.1", | ||
"jetVersion": "14.1.0", | ||
"type": "pack", | ||
@@ -6,0 +6,0 @@ "displayName": "A user friendly, translatable name of the pack.", |
@@ -17,3 +17,3 @@ { | ||
"oj-c/*": ["./node_modules/@oracle/oraclejet-core-pack/oj-c/types/*"], | ||
"preact": ["./node_modules/@oracle/oraclejet/dist/js/libs/preact"] | ||
"preact": ["./node_modules/preact"] | ||
}, | ||
@@ -20,0 +20,0 @@ "declaration": true, |
@@ -667,3 +667,3 @@ #! /usr/bin/env node | ||
createMultipartData(componentOrPackName) | ||
createMultipartData(componentOrPackName, opts) | ||
.then((data) => { | ||
@@ -680,3 +680,3 @@ util.log(`Uploading '${componentOrPackName}' into Exchange.`); | ||
response, | ||
() => { return exchangeUtils.uploadToExchange(componentName, opts); }, // eslint-disable-line | ||
() => { return exchangeUtils.uploadToExchange(componentOrPackName, opts); }, // eslint-disable-line | ||
() => { | ||
@@ -719,4 +719,5 @@ util.checkForHttpErrors(response, responseData.responseBody, () => { | ||
if (i < archivesToPublish.length) { | ||
const readStream = fs.createReadStream(path.join(CONSTANTS.PUBLISH_TEMP_DIRECTORY, | ||
archivesToPublish[i])); | ||
const readStream = opts.path ? fs.createReadStream(opts.path) : | ||
fs.createReadStream(path.join(CONSTANTS.PUBLISH_TEMP_DIRECTORY, | ||
archivesToPublish[i])); | ||
readStream.on('open', () => { | ||
@@ -723,0 +724,0 @@ multipart.append('file', readStream); |
@@ -9,2 +9,4 @@ /** | ||
// eslint-disable-next-line global-require | ||
const buildCommon = require('../buildCommon'); | ||
// eslint-disable-next-line global-require | ||
const ojetUtils = require('../util'); | ||
@@ -17,18 +19,25 @@ // eslint-disable-next-line global-require | ||
ojetUtils.log('Building with Webpack'); | ||
const { context, webpack, webpackConfig } = setup({ options, platform: 'web' }); | ||
webpack(webpackConfig, (err, stats) => { | ||
if (err) { | ||
console.error(err.stack || err); | ||
if (err.details) { | ||
console.error(err.details); | ||
} | ||
reject(err.details); | ||
} | ||
if (stats.compilation.errors && stats.compilation.errors.length > 0) { | ||
console.error(stats.compilation.errors); | ||
reject(stats.compilation.errors); | ||
} | ||
console.log(stats.toString()); | ||
resolve(context); | ||
}); | ||
const buildContext = webpackUtils.createContext({ options, platform: 'web' }); | ||
return buildCommon.copy(buildContext) | ||
.then(() => buildCommon.copyLibs(buildContext)) | ||
.then(() => buildCommon.css(buildContext)) | ||
.then(() => buildCommon.copyThemes(buildContext)) | ||
.then(() => { | ||
const { context, webpack, webpackConfig } = setup({ options, platform: 'web' }); | ||
webpack(webpackConfig, (err, stats) => { | ||
if (err) { | ||
console.error(err.stack || err); | ||
if (err.details) { | ||
console.error(err.details); | ||
} | ||
reject(err.details); | ||
} | ||
if (stats.compilation.errors && stats.compilation.errors.length > 0) { | ||
console.error(stats.compilation.errors); | ||
reject(stats.compilation.errors); | ||
} | ||
console.log(stats.toString()); | ||
resolve(context); | ||
}); | ||
}); | ||
}).then(() => { | ||
@@ -35,0 +44,0 @@ if (ojetUtils.isTypescriptApplication()) { |
@@ -9,2 +9,6 @@ /** | ||
// eslint-disable-next-line global-require | ||
const webpackUtils = require('./utils'); | ||
// eslint-disable-next-line global-require | ||
const buildCommon = require('../buildCommon'); | ||
// eslint-disable-next-line global-require | ||
const setup = require('./setup'); | ||
@@ -17,13 +21,19 @@ // eslint-disable-next-line global-require | ||
ojetUtils.log('Serving with Webpack'); | ||
const { webpack, webpackConfig } = setup({ platform: 'web', options }); | ||
const compiler = webpack(webpackConfig); | ||
if (webpackConfig.devServer) { | ||
const devServerOptions = { ...webpackConfig.devServer }; | ||
const server = new WebpackDevServer(devServerOptions, compiler); | ||
const port = devServerOptions.port || 8001; | ||
const host = devServerOptions.host || '127.0.0.1'; | ||
server.start(port, host); | ||
} else { | ||
ojetUtils.log.error( | ||
` | ||
const serveContext = webpackUtils.createContext({ options, platform: 'web' }); | ||
return buildCommon.copy(serveContext) | ||
.then(() => buildCommon.copyLibs(serveContext)) | ||
.then(() => buildCommon.css(serveContext)) | ||
.then(() => buildCommon.copyThemes(serveContext)) | ||
.then(() => { | ||
const { webpack, webpackConfig } = setup({ platform: 'web', options }); | ||
const compiler = webpack(webpackConfig); | ||
if (webpackConfig.devServer) { | ||
const devServerOptions = { ...webpackConfig.devServer }; | ||
const server = new WebpackDevServer(devServerOptions, compiler); | ||
const port = devServerOptions.port || 8001; | ||
const host = devServerOptions.host || '127.0.0.1'; | ||
server.start(port, host); | ||
} else { | ||
ojetUtils.log.error( | ||
` | ||
Serving with the --release flag is currently not supported. Please | ||
@@ -33,4 +43,5 @@ run 'ojet build --release' and then serve the built folder | ||
`.replace(/\n/g, '').replace(/\s+/g, ' ')); | ||
} | ||
} | ||
}); | ||
}); | ||
}; |
@@ -12,24 +12,7 @@ /** | ||
const config = require('../config'); | ||
const valid = require('../validations'); | ||
const generateComponentsCache = require('../buildCommon/generateComponentsCache'); | ||
const constants = require('../constants'); | ||
const buildCommon = require('../buildCommon'); | ||
const configPaths = ojetUtils.getConfiguredPaths(); | ||
function createContext({ | ||
options, | ||
platform | ||
}) { | ||
config.loadOraclejetConfig(platform); | ||
const validPlatform = valid.platform(platform); | ||
const validOptions = valid.buildOptions(options, validPlatform); | ||
const validBuildType = valid.buildType(validOptions); | ||
return { | ||
buildType: validBuildType, | ||
opts: validOptions, | ||
platform: validPlatform | ||
}; | ||
} | ||
module.exports = ({ | ||
@@ -39,3 +22,3 @@ options, | ||
}) => { | ||
const context = createContext({ | ||
const context = webpackUtils.createContext({ | ||
options, | ||
@@ -47,4 +30,4 @@ platform | ||
})); | ||
let webpackConfig; | ||
config.set('_context', context); | ||
let webpackConfig; | ||
if (context.buildType === 'release') { | ||
@@ -59,20 +42,21 @@ // eslint-disable-next-line global-require | ||
// Process theme files and copy them to staging: | ||
buildCommon.copy(context); | ||
buildCommon.copyLibs(context); | ||
buildCommon.css(context); | ||
buildCommon.copyThemes(context); | ||
webpackUtils.copyRequiredAltaFilesToStaging(context); | ||
const entryFilesArray = webpackConfig.entry.main; | ||
const themeStyleArray = webpackUtils.getThemeStyleArray(context); | ||
if (themeStyleArray.length !== 0) { | ||
webpackConfig.entry.styles = []; | ||
// Add path(s) to the chosen theme(s) as entry point as well: | ||
themeStyleArray.forEach((theme) => { | ||
const pathToThemeInWeb = path.resolve(configPaths.staging.web, theme); | ||
if (fs.existsSync(pathToThemeInWeb)) { | ||
webpackConfig.entry.styles.push(pathToThemeInWeb); | ||
} | ||
}); | ||
} | ||
// Add path to app.css or app-min.css as part of the entry files: | ||
const pathToAppCSS = webpackUtils.getAppCssFilesPath(context); | ||
// Add path to app.css or app-min.css as part of the entry files: | ||
entryFilesArray.push(pathToAppCSS); | ||
// Add path(s) to the chosen theme(s) as entry point as well: | ||
themeStyleArray.forEach((theme) => { | ||
const pathToThemeInWeb = path.resolve(configPaths.staging.web, theme); | ||
if (fs.existsSync(pathToThemeInWeb)) { | ||
entryFilesArray.push(pathToThemeInWeb); | ||
} | ||
}); | ||
if (fs.existsSync(pathToAppCSS)) { | ||
webpackConfig.entry.app = pathToAppCSS; | ||
} | ||
@@ -79,0 +63,0 @@ const pathToOjetConfig = path.resolve(constants.PATH_TO_OJET_CONFIG); |
@@ -13,2 +13,3 @@ /** | ||
const config = require('../config'); | ||
const valid = require('../validations'); | ||
const constants = require('../constants'); | ||
@@ -184,6 +185,27 @@ | ||
destPath = !context.opts[constants.OMIT_COMPONENT_VERSION_FLAG] ? path.join(destPath, `${ojetUtils.getJETVersion()}`, folder) : path.join(destPath, folder); | ||
fs.copySync(scrPath, destPath); | ||
fs.copySync(scrPath, destPath, { dereference: true }); | ||
}); | ||
} | ||
/** | ||
* ## createContext | ||
* | ||
* @param {Object} options | ||
* @param {String} platform | ||
*/ | ||
function createContext({ | ||
options, | ||
platform | ||
}) { | ||
config.loadOraclejetConfig(platform); | ||
const validPlatform = valid.platform(platform); | ||
const validOptions = valid.buildOptions(options, validPlatform); | ||
const validBuildType = valid.buildType(validOptions); | ||
return { | ||
buildType: validBuildType, | ||
opts: validOptions, | ||
platform: validPlatform | ||
}; | ||
} | ||
module.exports = { | ||
@@ -205,3 +227,4 @@ isWebComponent, | ||
injectCDNCssUrl, | ||
copyRequiredAltaFilesToStaging | ||
copyRequiredAltaFilesToStaging, | ||
createContext | ||
}; |
@@ -14,2 +14,3 @@ /** | ||
const HtmlWebpackPlugin = ojetUtils.requireLocalFirst('html-webpack-plugin'); | ||
const MiniCssExtractPlugin = ojetUtils.requireLocalFirst('mini-css-extract-plugin'); | ||
const HtmlReplaceWebpackPlugin = ojetUtils.requireLocalFirst('html-replace-webpack-plugin'); | ||
@@ -20,5 +21,2 @@ const webpack = ojetUtils.requireLocalFirst('webpack'); | ||
const isTypescriptApplication = ojetUtils.isTypescriptApplication(); | ||
const { | ||
CleanWebpackPlugin | ||
} = ojetUtils.requireLocalFirst('clean-webpack-plugin'); | ||
@@ -39,2 +37,15 @@ module.exports = { | ||
}, | ||
optimization: { | ||
runtimeChunk: 'single', | ||
splitChunks: { | ||
chunks: 'all', | ||
cacheGroups: { | ||
commons: { | ||
test: /[\\/]node_modules[\\/]/, | ||
name: 'libs/index', | ||
chunks: 'all', | ||
}, | ||
}, | ||
}, | ||
}, | ||
module: { | ||
@@ -54,3 +65,3 @@ rules: [{ | ||
use: [ | ||
'style-loader', | ||
MiniCssExtractPlugin.loader, | ||
'css-loader', | ||
@@ -144,36 +155,13 @@ { | ||
template: path.resolve(configPaths.src.common, 'index.html'), | ||
inject: 'body' | ||
}), | ||
new HtmlReplaceWebpackPlugin( | ||
[{ | ||
pattern: '<!-- This injects script tags for the main javascript files -->', | ||
replacement: '' | ||
}, | ||
{ | ||
pattern: '<!-- endinjector -->', | ||
replacement: '' | ||
}, | ||
{ | ||
pattern: '<!-- injector:theme -->', | ||
replacement: webpackUtils.injectCDNCssUrl() | ||
}, | ||
{ | ||
pattern: '<!-- This is the main css file for the default theme -->', | ||
replacement: '' | ||
}, | ||
{ | ||
pattern: '<!-- This is where you would add any app specific styling -->', | ||
replacement: '' | ||
}, | ||
{ | ||
pattern: webpackUtils.htmlAppCssLinkTokenPattern, | ||
replacement: '' | ||
}, | ||
{ | ||
pattern: /^\s*\n/gm, | ||
replacement: '' | ||
}]), | ||
new CleanWebpackPlugin({ | ||
cleanAfterEveryBuildPatterns: ['web/**'], | ||
dry: true, | ||
verbose: true, | ||
[ | ||
{ | ||
pattern: '<!-- css:redwood | stable | custom theme -->', | ||
replacement: webpackUtils.injectCDNCssUrl() | ||
} | ||
]), | ||
new MiniCssExtractPlugin({ | ||
filename: `${configPaths.src.styles}/[name].[fullhash].css` | ||
}), | ||
@@ -180,0 +168,0 @@ // This plugin sets options for the ojL10n-loader (in this case, just the locale name) |
@@ -16,3 +16,2 @@ /** | ||
const webpack = ojetUtils.requireLocalFirst('webpack'); | ||
const MiniCssExtractPlugin = ojetUtils.requireLocalFirst('mini-css-extract-plugin'); | ||
const CompressionPlugin = ojetUtils.requireLocalFirst('compression-webpack-plugin'); | ||
@@ -32,38 +31,3 @@ const configPaths = ojetUtils.getConfiguredPaths(); | ||
clean: true | ||
}, | ||
module: { | ||
rules: [{ | ||
test: /\.css$/i, | ||
use: [ | ||
MiniCssExtractPlugin.loader, | ||
'css-loader', | ||
{ | ||
loader: 'css-fix-url-loader', | ||
// There is no path to images/../../redwood/images/<avatar[id].png>. | ||
// Enable webpack to resolve it as images/<avatar[id].png>. | ||
options: { | ||
from: 'images/../../redwood/images', | ||
to: 'images', | ||
} | ||
}, | ||
{ | ||
loader: 'css-fix-url-loader', | ||
// There is no 'images' folder under the created theme's folder. | ||
// Redirect the path to the alta's images subfolder. | ||
options: { | ||
from: 'images/animated-overlay.gif', | ||
to: `../../../alta/${ojetUtils.getJETVersion()}/common/images/animated-overlay.gif`, | ||
} | ||
}, | ||
{ | ||
loader: 'css-fix-url-loader', | ||
options: { | ||
from: '../../css/redwood/images/AI-Sparkle.gif', | ||
to: './images/AI-Sparkle.gif', | ||
} | ||
}, | ||
], | ||
}], | ||
}, | ||
plugins: [ | ||
@@ -83,5 +47,2 @@ new CompressionPlugin({ | ||
}), | ||
new MiniCssExtractPlugin({ | ||
filename: `${configPaths.src.styles}/[name].[fullhash].css` | ||
}), | ||
new webpack.optimize.ModuleConcatenationPlugin(), | ||
@@ -88,0 +49,0 @@ new CleanWebpackPlugin({ |
{ | ||
"name": "@oracle/oraclejet-tooling", | ||
"version": "14.0.1", | ||
"version": "14.1.0", | ||
"license": "UPL-1.0", | ||
@@ -5,0 +5,0 @@ "description": "Programmatic API to build and serve Oracle JET web and mobile applications", |
@@ -1,2 +0,2 @@ | ||
# @oracle/oraclejet-tooling 14.0.1 | ||
# @oracle/oraclejet-tooling 14.1.0 | ||
@@ -9,3 +9,3 @@ ## About the tooling API | ||
## Installation | ||
This module will be automatically installed when you scaffold a web or hybrid mobile app following the [Oracle JET Developers Guide](http://www.oracle.com/pls/topic/lookup?ctx=jet1401&id=homepage). | ||
This module will be automatically installed when you scaffold a web or hybrid mobile app following the [Oracle JET Developers Guide](http://www.oracle.com/pls/topic/lookup?ctx=jet1410&id=homepage). | ||
@@ -12,0 +12,0 @@ ## [Contributing](https://github.com/oracle/oraclejet-tooling/blob/master/CONTRIBUTING.md) |
## Release Notes for oraclejet-tooling ## | ||
### 14.0.1 | ||
### 14.1.0 | ||
@@ -5,0 +5,0 @@ ### 11.0.0 |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
657191
18414
84