Fixed check for requires outside of plugin folder when shared library is used
Summary: There was a error on bundling plugins which references a shared lib, because of wrong check during babel transformation. Reviewed By: passy Differential Revision: D22041443 fbshipit-source-id: c157675c05e9d9653b65ed30293e3b8b09bae260
This commit is contained in:
committed by
Facebook GitHub Bot
parent
8003e7eb34
commit
c628ad7cbd
@@ -46,20 +46,21 @@ module.exports = () => ({
|
||||
// require a file not a pacakge
|
||||
args[0].value.indexOf('/') > -1 &&
|
||||
// in the plugin itself and not inside one of its dependencies
|
||||
state.file.opts.filename.indexOf('node_modules') === -1 &&
|
||||
state.file.opts.filename.startsWith(state.file.opts.root) &&
|
||||
// the resolved path for this file is outside the plugins root
|
||||
!resolve(
|
||||
!resolve(dirname(state.file.opts.filename), args[0].value).startsWith(
|
||||
state.file.opts.root,
|
||||
dirname(state.file.opts.filename),
|
||||
args[0].value,
|
||||
).startsWith(state.file.opts.root)
|
||||
)
|
||||
) {
|
||||
throw new Error(
|
||||
`Plugins cannot require files from outside their folder. Attempted to require ${resolve(
|
||||
state.file.opts.root,
|
||||
dirname(state.file.opts.filename),
|
||||
args[0].value,
|
||||
)} which isn't inside ${state.file.opts.root}`,
|
||||
`Plugins cannot require files from outside their folder. ` +
|
||||
`Attempted to require "${args[0].value}" ` +
|
||||
`from file "${state.file.opts.filename}" resolved to ` +
|
||||
`"${resolve(
|
||||
dirname(state.file.opts.filename),
|
||||
args[0].value,
|
||||
)}" ` +
|
||||
`which isn't inside plugin dir "${state.file.opts.root}".`,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user