2018-11-28 15:03:02 +01:00
|
|
|
try {
|
|
|
|
const ts = require('typescript')
|
|
|
|
const extname = require('path').extname
|
2019-09-04 16:00:54 +02:00
|
|
|
|
|
|
|
// previously next-server/tsconfig.json
|
|
|
|
const config = {
|
|
|
|
compilerOptions: {
|
|
|
|
strict: true,
|
|
|
|
module: 'esnext',
|
|
|
|
target: 'ES2017',
|
|
|
|
esModuleInterop: true,
|
|
|
|
moduleResolution: 'node',
|
2019-11-11 04:24:53 +01:00
|
|
|
jsx: 'react',
|
2019-09-04 16:00:54 +02:00
|
|
|
},
|
2019-11-11 04:24:53 +01:00
|
|
|
exclude: ['./dist/**', './*.d.ts', './constants.d.ts'],
|
2019-09-04 16:00:54 +02:00
|
|
|
}
|
2018-11-28 15:03:02 +01:00
|
|
|
|
2019-11-11 04:24:53 +01:00
|
|
|
module.exports = function(task) {
|
|
|
|
// eslint-disable-next-line require-yield
|
|
|
|
task.plugin('typescript', { every: true }, function*(file, options) {
|
2018-11-28 15:03:02 +01:00
|
|
|
const opts = {
|
|
|
|
fileName: file.base,
|
|
|
|
compilerOptions: {
|
|
|
|
...config.compilerOptions,
|
2019-11-11 04:24:53 +01:00
|
|
|
...options,
|
|
|
|
},
|
2018-11-28 15:03:02 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
const ext = extname(file.base)
|
2019-04-25 17:51:36 +02:00
|
|
|
|
|
|
|
// Include declaration files as they are
|
|
|
|
if (file.base.endsWith('.d.ts')) return
|
|
|
|
|
2018-11-28 15:03:02 +01:00
|
|
|
// For example files without an extension don't have to be rewritten
|
|
|
|
if (ext) {
|
|
|
|
// Replace `.ts` with `.js`
|
|
|
|
const extRegex = new RegExp(ext.replace('.', '\\.') + '$', 'i')
|
|
|
|
file.base = file.base.replace(extRegex, '.js')
|
|
|
|
}
|
|
|
|
|
|
|
|
// compile output
|
|
|
|
const result = ts.transpileModule(file.data.toString(), opts)
|
|
|
|
|
|
|
|
if (opts.compilerOptions.sourceMap && result.sourceMapText) {
|
|
|
|
// add sourcemap to `files` array
|
|
|
|
this._.files.push({
|
|
|
|
dir: file.dir,
|
|
|
|
base: `${file.base}.map`,
|
2019-11-11 04:24:53 +01:00
|
|
|
data: Buffer.from(JSON.stringify(result.sourceMapText), 'utf8'),
|
2018-11-28 15:03:02 +01:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
// update file's data
|
2019-05-29 13:57:26 +02:00
|
|
|
file.data = Buffer.from(
|
|
|
|
result.outputText.replace(
|
2019-08-12 22:53:11 +02:00
|
|
|
/process\.env\.__NEXT_VERSION/g,
|
2019-05-29 13:57:26 +02:00
|
|
|
`"${require('./package.json').version}"`
|
|
|
|
),
|
|
|
|
'utf8'
|
|
|
|
)
|
2018-11-28 15:03:02 +01:00
|
|
|
})
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
console.error(err)
|
|
|
|
}
|