@omnia/tooling-vue
Version:
Used to bundle and serve manifests web component that build on Vue framework.
234 lines (233 loc) • 9.98 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.cacheKeys = exports.buildContext = exports.convertManifestPathToEntryPath = exports.getBaseWebpackConfigForManifestMetadata = void 0;
const tslib_1 = require("tslib");
const globby = tslib_1.__importStar(require("globby"));
const $ = tslib_1.__importStar(require("./variables"));
const ts_loader_1 = tslib_1.__importDefault(require("./webpack-loaders/ts-loader"));
const tsx_loader_1 = tslib_1.__importDefault(require("./webpack-loaders/tsx-loader"));
function getBaseWebpackConfigForManifestMetadata(entry, bundleOutputDir, wcDomProps, enableTreeShaking = false) {
return {
devtool: false,
mode: 'development',
context: $.tooling.utils.root(""),
entry: entry,
//cache: {
// type: "filesystem"
//},
//performance: {
// hints: 'error',
// maxEntrypointSize: 10000000,
// maxAssetSize: 10000000 // ~ 10Mb
//},
//stats: 'errors-only',
//stats: {
// //all: false,
// ////modules: true,
// //maxModules: 0,
// //errors: true,
// warnings: false,
// //moduleTrace: true,
// //errorDetails: true
//},
//ignoreWarnings: [
// {
// module: /DEP_WEBPACK_MODULE_ID/ // A RegExp
// },
// {
// module: /[DEP_WEBPACK_COMPILATION_OPTIMIZE_CHUNK_ASSETS]/ // A RegExp
// },
// (warning) => { console.log('marning', warning); return true;}
//],
optimization: Object.assign({
removeAvailableModules: false,
removeEmptyChunks: false,
splitChunks: false,
}),
resolve: {
modules: $.tooling.core.getWebpackResolveModules(),
extensions: ['.ts', '.tsx', '.js', '.jsx'],
//extensions: ['.js', '.jsx', '.ts', '.tsx', '.html', '.vue', '.less', '.styl'],
symlinks: false,
cacheWithContext: true,
descriptionFiles: ['package.json'],
alias: Object.assign({}, $.tooling.core.getWebpackResolveAlias(), {
'tiptap$': 'tiptap/dist/tiptap.esm.js',
'tiptap-utils$': 'tiptap-utils/dist/utils.esm.js',
'tiptap-extensions$': 'tiptap-extensions/dist/extensions.esm.js',
'tiptap-commands$': 'tiptap-commands/dist/commands.esm.js',
//'prosemirror-model$': $.path.resolve($.tooling.utils.root(""), 'node_modules/prosemirror-model/dist/index.es.js'),
//'rope-sequence$': 'rope-sequence/dist/index.js',
//'tiptap$': 'tiptap/dist/tiptap.esm.js',
//'tiptap$': 'tiptap/dist/tiptap.esm.js',
//'tiptap$': 'tiptap/dist/tiptap.esm.js',
//'tiptap$': 'tiptap/dist/tiptap.esm.js',
'axios$': 'axios/dist/axios.js',
'typestyle$': 'typestyle/lib.es2015/index.js',
'vue$': 'vue/dist/vue.esm.js',
'rope-sequence$': 'rope-sequence/dist/index.js',
'w3c-keyname$': $.path.resolve($.tooling.utils.root(""), 'node_modules/w3c-keyname/index.es.js'),
'orderedmap$': 'orderedmap/index.js',
'@microsoft/signalr': '@microsoft/signalr/dist/webworker/signalr.js',
"vue-tsx-support/enable-check": $.isExtensionEnv ? $.path.resolve($.tooling.utils.root(""), "node_modules/@omnia/tooling-vue/internal-do-not-import-from-here/tasks/materials//dummy-vue-tsx-support-enable-check.js") : $.path.resolve($.tooling.utils.root(""), "client/tooling/vue/tasks/materials/dummy-vue-tsx-support-enable-check.js")
//'w3c-keyname$': 'w3c-keyname/index.es.js',
//'orderedmap$': 'orderedmap/index.js'
}),
//mainFields: ['main', 'browser', 'module']
},
output: {
pathinfo: false,
path: $.tooling.utils.root(bundleOutputDir),
filename: '[name].js'
},
externals: [
function ({ context, request }, callback) {
if (request.indexOf("node_modules") > -1 || (/\.(sass|scss|styl|less|css)$/i).test(request)) {
return callback(null, 'commonjs ' + request);
}
callback();
}
],
//optimization: {
// removeAvailableModules: false,
// removeEmptyChunks: false,
// splitChunks: false,
//},
module: {
noParse: /wwwroot(.*)/,
rules: [
//{
// parser: {
// amd: false,
// harmony: false
// }
//},
{
test: /\.m?js$/,
resolve: {
fullySpecified: false, // disable the behaviour
},
},
...(0, ts_loader_1.default)(enableTreeShaking),
...(0, tsx_loader_1.default)(enableTreeShaking, wcDomProps),
{
test: /\.jsx$/,
exclude: /(node_modules|bower_components)/,
use: [
//{
// loader: 'cache-loader'
//},
{
loader: 'babel-loader',
options: {
cacheDirectory: true,
//presets: ["@babel/preset-env"],
//presets: [["@babel/preset-env", {
// "targets": {
// "chrome": "59"
// }
//}]],
plugins: ["syntax-jsx", "jsx-v-model", "transform-vue-jsx"]
}
}
]
},
//{
// test: /\.vue$/,
// use: [
// {
// loader: 'vue-loader',
// options: {
// hotReload: false,
// loaders: {
// ts: 'ts-loader',
// sass: 'vue-style-loader!css-loader!sass-loader!less-loader', // <style lang="scss">
// }
// }
// }
// ]
//},
{
test: /\.styl$/,
use: [
//'style-loader',
//'css-loader',
'stylus-loader'
]
},
...($.isExtensionEnv ? [] : [{
test: /\.s(c|a)ss$/,
use: [
{
loader: 'sass-loader',
options: {
implementation: require('sass'),
sassOptions: {
//fiber: require('fibers'),
indentedSyntax: true
}
//fiber: require('fibers')
}
}
]
}]),
{
test: /\.less$/,
use: [
//'style-loader',
//'css-loader',
'less-loader'
]
},
{
test: /\.css$/,
use: [
//'style-loader',
{
loader: 'css-loader'
}
]
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader'
},
{
test: /\.(ico|gif|png|jpe?g|svg)$/i,
use: [{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: "../images/",
publicPath: '/omnia/images/'
}
}]
//loader: 'url-loader'
}
]
}
};
}
exports.getBaseWebpackConfigForManifestMetadata = getBaseWebpackConfigForManifestMetadata;
function convertManifestPathToEntryPath(pathToManifest, pathsInManifest) {
if (!pathsInManifest)
return [];
let pathsToSearch = [];
pathsInManifest.forEach(p => {
pathsToSearch.push((p[0] === '!' ? '!./' : './') + (p.indexOf("./") > -1 || p.indexOf(".\\") > -1 ? $.path.join(pathToManifest.substring(0, pathToManifest.lastIndexOf('/')), p.replace(/^!/, '')).replace(/\\/g, "/")
: p.replace(/^!/, '').replace(/\\/g, "/")));
});
let result = globby.sync(pathsToSearch.concat(["!./**/*.manifest.+(js|ts)"]));
if (!result || result.length === 0) {
throw new Error("Path: " + pathsInManifest.join(', ') + " in manifest: " + pathToManifest + " resolved as " + result + " which was not found");
}
return result;
}
exports.convertManifestPathToEntryPath = convertManifestPathToEntryPath;
exports.buildContext = {
isManifestsChanged: false
};
exports.cacheKeys = {
//buildManifestMetadatas: "buildManifestMetadatas",
bundleManifests: "bundleManifests"
};
;