mirror of
https://github.com/nuxt/nuxt.git
synced 2024-12-05 20:07:16 +00:00
112 lines
3.0 KiB
JavaScript
Executable File
112 lines
3.0 KiB
JavaScript
Executable File
// Some parts brought from https://github.com/vuejs/vue/blob/dev/build/config.js
|
|
const { resolve } = require('path')
|
|
const rollupBabel = require('rollup-plugin-babel')
|
|
const rollupAlias = require('rollup-plugin-alias')
|
|
const rollupCommonJS = require('rollup-plugin-commonjs')
|
|
const rollupReplace = require('rollup-plugin-replace')
|
|
const rollupNodeResolve = require('rollup-plugin-node-resolve')
|
|
const packageJson = require('../package.json')
|
|
|
|
const dependencies = Object.keys(packageJson.dependencies)
|
|
const version = packageJson.version || process.env.VERSION
|
|
|
|
// -----------------------------
|
|
// Banner
|
|
// -----------------------------
|
|
const banner =
|
|
'/*!\n' +
|
|
' * Nuxt.js v' + version + '\n' +
|
|
' * Released under the MIT License.\n' +
|
|
' */'
|
|
|
|
// -----------------------------
|
|
// Aliases
|
|
// -----------------------------
|
|
const rootDir = resolve(__dirname, '..')
|
|
const libDir = resolve(rootDir, 'lib')
|
|
const distDir = resolve(rootDir, 'dist')
|
|
|
|
const aliases = {
|
|
core: resolve(libDir, 'core/index.js'),
|
|
builder: resolve(libDir, 'builder/index.js'),
|
|
common: resolve(libDir, 'common/index.js'),
|
|
utils: resolve(libDir, 'common/utils.js'),
|
|
app: resolve(libDir, 'app')
|
|
}
|
|
|
|
// -----------------------------
|
|
// Builds
|
|
// -----------------------------
|
|
const builds = {
|
|
nuxt: {
|
|
entry: resolve(libDir, 'index.js'),
|
|
file: resolve(distDir, 'nuxt.js')
|
|
},
|
|
core: {
|
|
entry: resolve(libDir, 'core/index.js'),
|
|
file: resolve(distDir, 'core.js')
|
|
}
|
|
}
|
|
|
|
// -----------------------------
|
|
// Default config
|
|
// -----------------------------
|
|
function genConfig (opts) {
|
|
const config = {
|
|
input: opts.entry,
|
|
output: {
|
|
file: opts.file,
|
|
format: 'cjs',
|
|
sourcemap: true
|
|
},
|
|
external: ['fs', 'path', 'http', 'module', 'vue-server-renderer/server-plugin', 'vue-server-renderer/client-plugin']
|
|
.concat(dependencies, opts.external),
|
|
banner: opts.banner || banner,
|
|
name: opts.modulename || 'Nuxt',
|
|
plugins: [
|
|
rollupAlias(Object.assign({
|
|
resolve: ['.js', '.json', '.jsx', '.ts']
|
|
}, aliases, opts.alias)),
|
|
|
|
rollupNodeResolve({ preferBuiltins: true }),
|
|
|
|
rollupCommonJS(),
|
|
|
|
rollupBabel(Object.assign({
|
|
exclude: 'node_modules/**',
|
|
plugins: [
|
|
['transform-runtime', { 'helpers': false, 'polyfill': false }],
|
|
'transform-async-to-generator',
|
|
'array-includes',
|
|
'external-helpers'
|
|
],
|
|
presets: [
|
|
['es2015', { modules: false }]
|
|
],
|
|
'env': {
|
|
'test': {
|
|
'plugins': [ 'istanbul' ]
|
|
}
|
|
}
|
|
}, opts.babel)),
|
|
|
|
rollupReplace({ __VERSION__: version })
|
|
].concat(opts.plugins || [])
|
|
}
|
|
|
|
if (opts.env) {
|
|
config.plugins.push(rollupReplace({
|
|
'process.env.NODE_ENV': JSON.stringify(opts.env)
|
|
}))
|
|
}
|
|
|
|
return config
|
|
}
|
|
|
|
if (process.env.TARGET) {
|
|
module.exports = genConfig(builds[process.env.TARGET])
|
|
} else {
|
|
exports.getBuild = name => genConfig(builds[name])
|
|
exports.getAllBuilds = () => Object.keys(builds).map(name => genConfig(builds[name]))
|
|
}
|