rsnext/packages/next/taskfile-babel.js
Luis Fernando Alvarez D 08a6066681 Replace the typescript compiler with @babel/preset-typescript (#7016)
* Added babel typescript for the core files

* Add __NEXT_VERSION

* Added noop.js to the babel taskfile

* Only include dynamic-import-node for the bin task

* Added babel-plugin-dynamic-import-node

* Use loose option to prevent Object.defineProperty

* Enable loose in preset and enable compact mode

* Disable compact and loose to compare

* Re-enable compact and loose
2019-04-23 09:05:49 +02:00

36 lines
1.2 KiB
JavaScript

// taskr babel plugin with Babel 7 support
// https://github.com/lukeed/taskr/pull/305
'use strict'
const extname = require('path').extname
const transform = require('@babel/core').transform
module.exports = function (task) {
task.plugin('babel', {}, function * (file, babelOpts, { stripExtension } = {}) {
const options = {
...babelOpts,
compact: true,
babelrc: false,
configFile: false,
filename: file.base
}
const output = transform(file.data, options)
const ext = extname(file.base)
// Replace `.ts|.tsx` with `.js` in files with an extension
if (ext) {
const extRegex = new RegExp(ext.replace('.', '\\.') + '$', 'i')
// Remove the extension if stripExtension is enabled or replace it with `.js`
file.base = file.base.replace(extRegex, stripExtension ? '' : '.js')
}
// Workaround for noop.js loading
if (file.base === 'next-dev.js') output.code = output.code.replace('// REPLACE_NOOP_IMPORT', `import('./noop');`)
file.data = Buffer.from(setNextVersion(output.code))
})
}
function setNextVersion (code) {
return code.replace(/process\.env\.__NEXT_VERSION/, `"${require('./package.json').version}"`)
}