Skip to content

Commit

Permalink
fix: normalize the file argument of transformScript, fix Windows …
Browse files Browse the repository at this point in the history
…compatibility (#5424)
  • Loading branch information
sodatea committed May 8, 2020
1 parent 3c286d6 commit 5e93d70
Showing 1 changed file with 27 additions and 3 deletions.
30 changes: 27 additions & 3 deletions packages/@vue/cli/lib/GeneratorAPI.js
Expand Up @@ -8,7 +8,7 @@ const mergeDeps = require('./util/mergeDeps')
const runCodemod = require('./util/runCodemod')
const stringifyJS = require('./util/stringifyJS')
const ConfigTransform = require('./ConfigTransform')
const { semver, getPluginLink, toShortPluginId, loadModule } = require('@vue/cli-shared-utils')
const { semver, error, getPluginLink, toShortPluginId, loadModule } = require('@vue/cli-shared-utils')

const isString = val => typeof val === 'string'
const isFunction = val => typeof val === 'function'
Expand Down Expand Up @@ -81,6 +81,20 @@ class GeneratorAPI {
this.generator.fileMiddlewares.push(middleware)
}

/**
* Normalize absolute path, Windows-style path
* to the relative path used as index in this.files
* @param {string} p the path to normalize
*/
_normalizePath (p) {
if (path.isAbsolute(p)) {
p = path.relative(this.generator.context, p)
}
// The `files` tree always use `/` in its index.
// So we need to normalize the path string in case the user passes a Windows path.
return p.replace(/\\/g, '/')
}

/**
* Resolve path for a project.
*
Expand Down Expand Up @@ -373,10 +387,20 @@ class GeneratorAPI {
* @param {object} options additional options for the codemod
*/
transformScript (file, codemod, options) {
const normalizedPath = this._normalizePath(file)

this._injectFileMiddleware(files => {
files[file] = runCodemod(
if (typeof files[normalizedPath] === 'undefined') {
error(`Cannot find file ${normalizedPath}`)
return
}

files[normalizedPath] = runCodemod(
codemod,
{ path: this.resolve(file), source: files[file] },
{
path: this.resolve(normalizedPath),
source: files[normalizedPath]
},
options
)
})
Expand Down

0 comments on commit 5e93d70

Please sign in to comment.