UNPKG

@kkt/scope-plugin-options

Version:

This will modify the CRA ModuleScopePlugin plugin that prevents to import modules from outside the `src` directory.

95 lines (72 loc) 2.55 kB
<p align="center"> <h1>@kkt/scope-plugin-options</h1> </p> <p align="center"> <a href="https://www.npmjs.com/package/@kkt/scope-plugin-options"> <img src="https://img.shields.io/npm/v/@kkt/scope-plugin-options.svg" alt="npm version"> </a> </p> This will modify the CRA ModuleScopePlugin plugin that prevents to import modules from outside the `src` directory, useful if you use a different directory. This is the setting for the Plug-in `new ModuleScopePlugin`. Prevents users from importing files from outside of src/ (or node_modules/). This often causes confusion because we only process files within src/ with babel. To fix this, we prevent you from importing files out of src/ -- if you'd like to, please link the files into your node_modules/ and let module-resolution kick in. Make sure your source files are compiled, as they will not be processed in any way. ### Installation ```bash yarn add --dev @kkt/scope-plugin-options # or use npm if you don't have yarn yet npm install --save-dev @kkt/scope-plugin-options ``` ### Usage In the `.kktrc.js` or `.kktrc.ts` you created for `kkt` add this code: ```js import path from 'path'; import scopePluginOptions from '@kkt/scope-plugin-options'; export default (conf, evn, options) => { return scopePluginOptions(conf, evn, { allowedFiles: [ path.resolve(process.cwd(), 'README.md') ] }); } ``` In `package.json`, add a separate npm script to build library ```js { "scripts": { ... "build": "kkt build", "start": "kkt start", ... } } ``` And you can now use CRA to build your library ### Configurations ```js import path from 'path'; import scopePluginOptions from '@kkt/scope-plugin-options'; export default (conf, evn, options) => { return scopePluginOptions(conf, evn, false); } ``` Disable scopePlugin ```js import path from 'path'; import { disableScopePlugin } from '@kkt/scope-plugin-options'; export default (conf, evn, options) => { return disableScopePlugin(conf); } ``` ### API ```ts import { Configuration } from 'webpack'; import { LoaderConfOptions } from 'kkt'; export declare type ReactLibraryOptions = LoaderConfOptions & { allowedFiles?: ReadonlyArray<string>; allowedPaths?: ReadonlyArray<string>; appSrcs?: string | ReadonlyArray<string>; }; export declare function disableScopePlugin(conf: Configuration): Configuration; export default function scopePluginOptions(conf: Configuration, env: string, options: ReactLibraryOptions): Configuration; ``` ### License Licensed under the MIT License