mirror of https://github.com/doccano/doccano.git
pythondatasetsactive-learningtext-annotationdatasetnatural-language-processingdata-labelingmachine-learningannotation-tool
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.4 KiB
76 lines
2.4 KiB
const fs = require('fs');
|
|
const path = require('path');
|
|
const process = require('process');
|
|
const BundleTracker = require('webpack-bundle-tracker');
|
|
const VueLoaderPlugin = require('vue-loader/lib/plugin')
|
|
const { ContextReplacementPlugin } = require('webpack');
|
|
const hljsLanguages = require('./components/hljsLanguages');
|
|
|
|
const devMode = process.env.DEBUG !== 'False';
|
|
const hotReload = process.env.HOT_RELOAD === '1';
|
|
const webpackHost = process.env.WEBPACK_HOST || '127.0.0.1';
|
|
const webpackPort = process.env.WEBPACK_PORT ? parseInt(process.env.WEBPACK_PORT, 10) : 8080;
|
|
const pollMillis = process.env.WEBPACK_POLL_MILLIS ? parseInt(process.env.WEBPACK_POLL_MILLIS, 10) : false;
|
|
const noSourceMap = process.env.SOURCE_MAP === 'False';
|
|
|
|
const pagesRoot = path.join(__dirname, 'pages');
|
|
const entryPoints = {};
|
|
fs.readdirSync(pagesRoot).forEach((scriptName) => {
|
|
const bundleName = path.parse(scriptName).name;
|
|
const scriptPath = path.join(pagesRoot, scriptName)
|
|
entryPoints[bundleName] = scriptPath;
|
|
});
|
|
|
|
module.exports = {
|
|
mode: devMode ? 'development' : 'production',
|
|
entry: entryPoints,
|
|
output: {
|
|
publicPath: hotReload ? `http://127.0.0.1:${webpackPort}/` : '',
|
|
path: path.join(__dirname, 'bundle'),
|
|
filename: '[name].js'
|
|
},
|
|
devtool: noSourceMap ? false : (devMode ? 'cheap-eval-source-map' : 'source-map'),
|
|
devServer: {
|
|
port: webpackPort,
|
|
host: webpackHost,
|
|
hot: true,
|
|
quiet: false,
|
|
headers: { 'Access-Control-Allow-Origin': '*' }
|
|
},
|
|
watchOptions: {
|
|
poll: pollMillis,
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.pug$/,
|
|
loader: 'pug-plain-loader'
|
|
},
|
|
{
|
|
test: /\.css$/,
|
|
use: [
|
|
'vue-style-loader',
|
|
'css-loader'
|
|
]
|
|
},
|
|
{
|
|
test: /\.vue$/,
|
|
loader: 'vue-loader'
|
|
}
|
|
]
|
|
},
|
|
plugins: [
|
|
new ContextReplacementPlugin(
|
|
/highlight\.js\/lib\/languages$/,
|
|
new RegExp(`^./(${hljsLanguages.join('|')})$`)
|
|
),
|
|
new BundleTracker({ filename: './webpack-stats.json' }),
|
|
new VueLoaderPlugin()
|
|
],
|
|
resolve: {
|
|
extensions: ['.js', '.vue'],
|
|
alias: {
|
|
vue$: 'vue/dist/vue.esm.js',
|
|
},
|
|
},
|
|
}
|