Commit eaa00b24 authored by Mike Greiling's avatar Mike Greiling

prettify all node scripts

parent 208e9ef8
{
"presets": [
["latest", { "es2015": { "modules": false } }],
"stage-2"
],
"presets": [["latest", { "es2015": { "modules": false } }], "stage-2"],
"env": {
"coverage": {
"plugins": [
["istanbul", {
"exclude": [
"spec/javascripts/**/*",
"app/assets/javascripts/locale/**/app.js"
]
}],
["transform-define", {
"process.env.BABEL_ENV": "coverage"
}]
[
"istanbul",
{
"exclude": ["spec/javascripts/**/*", "app/assets/javascripts/locale/**/app.js"]
}
],
[
"transform-define",
{
"process.env.BABEL_ENV": "coverage"
}
]
]
}
}
......
......@@ -5,7 +5,7 @@ var ROOT_PATH = path.resolve(__dirname, '..');
// remove problematic plugins
if (webpackConfig.plugins) {
webpackConfig.plugins = webpackConfig.plugins.filter(function (plugin) {
webpackConfig.plugins = webpackConfig.plugins.filter(function(plugin) {
return !(
plugin instanceof webpack.optimize.CommonsChunkPlugin ||
plugin instanceof webpack.optimize.ModuleConcatenationPlugin ||
......@@ -24,7 +24,7 @@ module.exports = function(config) {
var karmaConfig = {
basePath: ROOT_PATH,
browsers: ['ChromeHeadlessCustom'],
browsers: ['ChromeHeadlessCustom'],
customLaunchers: {
ChromeHeadlessCustom: {
base: 'ChromeHeadless',
......@@ -34,7 +34,7 @@ module.exports = function(config) {
// escalated kernel privileges (e.g. docker run --cap-add=CAP_SYS_ADMIN)
'--no-sandbox',
],
}
},
},
frameworks: ['jasmine'],
files: [
......@@ -55,7 +55,7 @@ module.exports = function(config) {
reports: ['html', 'text-summary'],
dir: 'coverage-javascript/',
subdir: '.',
fixWebpackSourcePaths: true
fixWebpackSourcePaths: true,
};
karmaConfig.browserNoActivityTimeout = 60000; // 60 seconds
}
......
'use strict';
const crypto = require('crypto');
const fs = require('fs');
const path = require('path');
......@@ -27,10 +25,10 @@ let watchAutoEntries = [];
function generateEntries() {
// generate automatic entry points
const autoEntries = {};
const pageEntries = glob.sync('pages/**/index.js', { cwd: path.join(ROOT_PATH, 'app/assets/javascripts') });
watchAutoEntries = [
path.join(ROOT_PATH, 'app/assets/javascripts/pages/'),
];
const pageEntries = glob.sync('pages/**/index.js', {
cwd: path.join(ROOT_PATH, 'app/assets/javascripts'),
});
watchAutoEntries = [path.join(ROOT_PATH, 'app/assets/javascripts/pages/')];
function generateAutoEntries(path, prefix = '.') {
const chunkPath = path.replace(/\/index\.js$/, '');
......@@ -38,25 +36,23 @@ function generateEntries() {
autoEntries[chunkName] = `${prefix}/${path}`;
}
pageEntries.forEach(( path ) => generateAutoEntries(path));
pageEntries.forEach(path => generateAutoEntries(path));
// EE-specific auto entries
const eePageEntries = glob.sync('pages/**/index.js', {
cwd: path.join(ROOT_PATH, 'ee/app/assets/javascripts'),
});
eePageEntries.forEach(path => generateAutoEntries(path, 'ee'));
watchAutoEntries.concat(
path.join(ROOT_PATH, 'ee/app/assets/javascripts/pages/'),
);
watchAutoEntries.concat(path.join(ROOT_PATH, 'ee/app/assets/javascripts/pages/'));
autoEntriesCount = Object.keys(autoEntries).length;
const manualEntries = {
common: './commons/index.js',
main: './main.js',
raven: './raven/index.js',
webpack_runtime: './webpack.js',
ide: './ide/index.js',
common: './commons/index.js',
main: './main.js',
raven: './raven/index.js',
webpack_runtime: './webpack.js',
ide: './ide/index.js',
};
return Object.assign(manualEntries, autoEntries);
......@@ -100,8 +96,8 @@ const config = {
{
loader: 'worker-loader',
options: {
inline: true
}
inline: true,
},
},
{ loader: 'babel-loader' },
],
......@@ -112,7 +108,7 @@ const config = {
loader: 'file-loader',
options: {
name: '[name].[hash].[ext]',
}
},
},
{
test: /katex.css$/,
......@@ -122,8 +118,8 @@ const config = {
{
loader: 'css-loader',
options: {
name: '[name].[hash].[ext]'
}
name: '[name].[hash].[ext]',
},
},
],
},
......@@ -133,7 +129,7 @@ const config = {
loader: 'file-loader',
options: {
name: '[name].[hash].[ext]',
}
},
},
{
test: /monaco-editor\/\w+\/vs\/loader\.js$/,
......@@ -141,7 +137,7 @@ const config = {
{ loader: 'exports-loader', options: 'l.global' },
{ loader: 'imports-loader', options: 'l=>{},this=>l,AMDLoader=>this,module=>undefined' },
],
}
},
],
noParse: [/monaco-editor\/\w+\/vs\//],
......@@ -159,10 +155,10 @@ const config = {
source: false,
chunks: false,
modules: false,
assets: true
assets: true,
});
return JSON.stringify(stats, null, 2);
}
},
}),
// prevent pikaday from including moment.js
......@@ -179,7 +175,7 @@ const config = {
new NameAllModulesPlugin(),
// assign deterministic chunk ids
new webpack.NamedChunksPlugin((chunk) => {
new webpack.NamedChunksPlugin(chunk => {
if (chunk.name) {
return chunk.name;
}
......@@ -196,9 +192,12 @@ const config = {
const pagesBase = path.join(ROOT_PATH, 'app/assets/javascripts/pages');
if (m.resource.indexOf(pagesBase) === 0) {
moduleNames.push(path.relative(pagesBase, m.resource)
.replace(/\/index\.[a-z]+$/, '')
.replace(/\//g, '__'));
moduleNames.push(
path
.relative(pagesBase, m.resource)
.replace(/\/index\.[a-z]+$/, '')
.replace(/\//g, '__')
);
} else {
moduleNames.push(path.relative(m.context, m.resource));
}
......@@ -206,7 +205,8 @@ const config = {
chunk.forEachModule(collectModuleNames);
const hash = crypto.createHash('sha256')
const hash = crypto
.createHash('sha256')
.update(moduleNames.join('_'))
.digest('hex');
......@@ -224,7 +224,10 @@ const config = {
// copy pre-compiled vendor libraries verbatim
new CopyWebpackPlugin([
{
from: path.join(ROOT_PATH, `node_modules/monaco-editor/${IS_PRODUCTION ? 'min' : 'dev'}/vs`),
from: path.join(
ROOT_PATH,
`node_modules/monaco-editor/${IS_PRODUCTION ? 'min' : 'dev'}/vs`
),
to: 'monaco-editor/vs',
transform: function(content, path) {
if (/\.js$/.test(path) && !/worker/i.test(path) && !/typescript/i.test(path)) {
......@@ -237,29 +240,29 @@ const config = {
);
}
return content;
}
}
},
},
]),
],
resolve: {
extensions: ['.js'],
alias: {
'~': path.join(ROOT_PATH, 'app/assets/javascripts'),
'emojis': path.join(ROOT_PATH, 'fixtures/emojis'),
'empty_states': path.join(ROOT_PATH, 'app/views/shared/empty_states'),
'icons': path.join(ROOT_PATH, 'app/views/shared/icons'),
'images': path.join(ROOT_PATH, 'app/assets/images'),
'vendor': path.join(ROOT_PATH, 'vendor/assets/javascripts'),
'vue$': 'vue/dist/vue.esm.js',
'spec': path.join(ROOT_PATH, 'spec/javascripts'),
'~': path.join(ROOT_PATH, 'app/assets/javascripts'),
emojis: path.join(ROOT_PATH, 'fixtures/emojis'),
empty_states: path.join(ROOT_PATH, 'app/views/shared/empty_states'),
icons: path.join(ROOT_PATH, 'app/views/shared/icons'),
images: path.join(ROOT_PATH, 'app/assets/images'),
vendor: path.join(ROOT_PATH, 'vendor/assets/javascripts'),
vue$: 'vue/dist/vue.esm.js',
spec: path.join(ROOT_PATH, 'spec/javascripts'),
// EE-only
ee: path.join(ROOT_PATH, 'ee/app/assets/javascripts'),
ee_empty_states: path.join(ROOT_PATH, 'ee/app/views/shared/empty_states'),
ee_icons: path.join(ROOT_PATH, 'ee/app/views/shared/icons'),
ee_images: path.join(ROOT_PATH, 'ee/app/assets/images'),
}
},
},
// sqljs requires fs
......@@ -274,13 +277,13 @@ if (IS_PRODUCTION) {
new webpack.NoEmitOnErrorsPlugin(),
new webpack.LoaderOptionsPlugin({
minimize: true,
debug: false
debug: false,
}),
new webpack.optimize.UglifyJsPlugin({
sourceMap: true
sourceMap: true,
}),
new webpack.DefinePlugin({
'process.env': { NODE_ENV: JSON.stringify('production') }
'process.env': { NODE_ENV: JSON.stringify('production') },
})
);
......@@ -299,7 +302,7 @@ if (IS_DEV_SERVER) {
headers: { 'Access-Control-Allow-Origin': '*' },
stats: 'errors-only',
hot: DEV_SERVER_LIVERELOAD,
inline: DEV_SERVER_LIVERELOAD
inline: DEV_SERVER_LIVERELOAD,
};
config.plugins.push(
// watch node_modules for changes if we encounter a missing module compile error
......@@ -315,10 +318,12 @@ if (IS_DEV_SERVER) {
];
// report our auto-generated bundle count
console.log(`${autoEntriesCount} entries from '/pages' automatically added to webpack output.`);
console.log(
`${autoEntriesCount} entries from '/pages' automatically added to webpack output.`
);
callback();
})
});
},
}
);
......
......@@ -18,12 +18,7 @@ const execGitCmd = args =>
module.exports = {
getStagedFiles: fileExtensionFilter => {
const gitOptions = [
'diff',
'--name-only',
'--cached',
'--diff-filter=ACMRTUB',
];
const gitOptions = ['diff', '--name-only', '--cached', '--diff-filter=ACMRTUB'];
if (fileExtensionFilter) gitOptions.push(...fileExtensionFilter);
return execGitCmd(gitOptions);
},
......
......@@ -22,9 +22,7 @@ const availableExtensions = Object.keys(config.parsers);
console.log(`Loading ${allFiles ? 'All' : 'Staged'} Files ...`);
const stagedFiles = allFiles
? null
: getStagedFiles(availableExtensions.map(ext => `*.${ext}`));
const stagedFiles = allFiles ? null : getStagedFiles(availableExtensions.map(ext => `*.${ext}`));
if (stagedFiles) {
if (!stagedFiles.length || (stagedFiles.length === 1 && !stagedFiles[0])) {
......@@ -41,15 +39,10 @@ let files;
if (allFiles) {
const ignore = config.ignore;
const patterns = config.patterns;
const globPattern =
patterns.length > 1 ? `{${patterns.join(',')}}` : `${patterns.join(',')}`;
files = glob
.sync(globPattern, { ignore })
.filter(f => allFiles || stagedFiles.includes(f));
const globPattern = patterns.length > 1 ? `{${patterns.join(',')}}` : `${patterns.join(',')}`;
files = glob.sync(globPattern, { ignore }).filter(f => allFiles || stagedFiles.includes(f));
} else {
files = stagedFiles.filter(f =>
availableExtensions.includes(f.split('.').pop()),
);
files = stagedFiles.filter(f => availableExtensions.includes(f.split('.').pop()));
}
if (!files.length) {
......@@ -81,7 +74,7 @@ prettier
} else if (!prettier.check(input, options)) {
if (!didWarn) {
console.log(
'\n===============================\nGitLab uses Prettier to format all JavaScript code.\nPlease format each file listed below or run "yarn prettier-staged-save"\n===============================\n',
'\n===============================\nGitLab uses Prettier to format all JavaScript code.\nPlease format each file listed below or run "yarn prettier-staged-save"\n===============================\n'
);
didWarn = true;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment