1.0.2 • Published 4 years ago

@bananajs/nxvue v1.0.2

Weekly downloads
1
License
MIT
Repository
-
Last release
4 years ago

Nx Plus Vue

First class support for Vue in your Nx workspace.

Contents

Prerequisite

If you have not already, create an Nx workspace with the following:

npx create-nx-workspace@^10.0.0

When creating your Nx workspace you may be prompted to choose a preset, we do not support the oss preset at this time.

Getting Started

Install Plugin

# npm
npm install @bananajs/nxvue --save-dev

# yarn
yarn add @bananajs/nxvue --dev

Generate Your App

nx g @bananajs/nxvue:app my-app

Serve Your App

nx serve my-app

Nx Dependency Graph Support

Nx's dep-graph does not support .vue files. To patch support for .vue files, add the following npm script to your package.json:

"postinstall": "node node_modules/@bananajs/nxvue/patch-nx-dep-graph.js"

Help us! We dislike this hack just as much as you do. Please give this Nx issue a 👍 so that we can remove this hack in the future.

Schematics (i.e. code generation)

Application

nx g @bananajs/nxvue:app <name> [options]

ArgumentsDescription
<name>The name of your app.
OptionsDefaultDescription
--tags-Tags to use for linting (comma-delimited).
--directoryappsA directory where the project is placed.
--stylecssThe file extension to be used for style files.
--unitTestRunnerjestTest runner to use for unit tests.
--e2eTestRunnercypressTest runner to use for end to end (e2e) tests.
--routingfalseGenerate routing configuration.
--skipFormatfalseSkip formatting files.

Vuex

nx g @bananajs/nxvue:vuex <project> [options]

ArgumentsDescription
<project>The name of the project you would like to add Vuex to.
OptionsDefaultDescription
--skipFormatfalseSkip formatting files.

Library

nx g @bananajs/nxvue:lib <name> [options]

ArgumentsDescription
<name>The name of your library.
OptionsDefaultDescription
--tags-Tags to use for linting (comma-delimited).
--directorylibsA directory where the project is placed.
--unitTestRunnerjestTest runner to use for unit tests.
--skipFormatfalseSkip formatting files.
--skipTsConfigfalseDo not update tsconfig.json for development experience.
--publishablefalseCreate a buildable library.

Builders (i.e. task runners)

Dev Server

nx serve <name> [options]

ArgumentsDescription
<name>The name of your app.
OptionsDefaultDescription
--openfalseOpen browser on server start.
--copyfalseCopy url to clipboard on server start.
--stdinfalseClose when stdin ends.
--modedevelopmentSpecify env mode (default: development).
--host0.0.0.0Specify host (default: 0.0.0.0).
--port8080Specify port (default: 8080).
--httpsfalseUse https (default: false).
--public-Specify the public network URL for the HMR client.
--skipPlugins-Comma-separated list of plugin names to skip for this run.
--browserTarget-Target to serve.
--watchtrueWatch for changes.
--publicPath/The base URL your application bundle will be deployed at.
css.requireModuleExtensiontrueBy default, only files that end in *.module.[ext] are treated as CSS modules. Setting this to false will allow you to drop .module in the filenames and treat all *.(css\|scss\|sass\|less\|styl(us)?) files as CSS modules.
css.extractfalseWhether to extract CSS in your components into a standalone CSS file (instead of inlined in JavaScript and injected dynamically).
css.sourceMapfalseWhether to enable source maps for CSS. Setting this to true may affect build performance.
css.loaderOptions{}Pass options to CSS-related loaders.
devServer{}All options for webpack-dev-server are supported.

Browser

nx build <name> [options]

ArgumentsDescription
<name>The name of your app.
OptionsDefaultDescription
--modedevelopmentSpecify env mode (default: development).
--dest-Specify output directory.
--cleantrueRemove the dist directory before building the project.
--reportfalseGenerate report.html to help analyze bundle content.
--reportJsonfalseGenerate report.json to help analyze bundle content.
--skipPlugins-Comma-separated list of plugin names to skip for this run.
--watchfalseWatch for changes.
--index-The path of a file to use for the application's HTML index. The filename of the specified path will be used for the generated file and will be created in the root of the application's configured output path.
--main-The full path for the main entry point to the app, relative to the current workspace.
--tsConfig-The full path for the TypeScript configuration file, relative to the current workspace.
--publicPath/The base URL your application bundle will be deployed at.
--filenameHashingfalseGenerated static assets contain hashes in their filenames for better caching control.
--productionSourceMapfalseSetting this to false can speed up production builds if you don't need source maps for production.
css.requireModuleExtensiontrueBy default, only files that end in *.module.[ext] are treated as CSS modules. Setting this to false will allow you to drop .module in the filenames and treat all *.(css\|scss\|sass\|less\|styl(us)?) files as CSS modules.
css.extractfalseWhether to extract CSS in your components into a standalone CSS file (instead of inlined in JavaScript and injected dynamically).
css.sourceMapfalseWhether to enable source maps for CSS. Setting this to true may affect build performance.
css.loaderOptions{}Pass options to CSS-related loaders.
--stdinfalseClose when stdin ends.

Library

nx build <name> [options]

ArgumentsDescription
<name>The name of your library.
OptionsDefaultDescription
--dest-Specify output directory.
--cleantrueRemove the dist directory before building the project.
--reportfalseGenerate report.html to help analyze bundle content.
--reportJsonfalseGenerate report.json to help analyze bundle content.
--skipPlugins-Comma-separated list of plugin names to skip for this run.
--watchfalseWatch for changes.
--entry-The full path for the main entry point to your library, relative to the current workspace.
--tsConfig-The full path for the TypeScript configuration file, relative to the current workspace.
--inlineVuefalseInclude the Vue module in the final bundle of library.
--formatscommonjs,umd,umd-minList of output formats for library builds.
--name-Name for library.
--filename-File name for output.
css.requireModuleExtensiontrueBy default, only files that end in *.module.[ext] are treated as CSS modules. Setting this to false will allow you to drop .module in the filenames and treat all *.(css\|scss\|sass\|less\|styl(us)?) files as CSS modules.
css.extracttrueWhether to extract CSS in your components into a standalone CSS file (instead of inlined in JavaScript and injected dynamically).
css.sourceMapfalseWhether to enable source maps for CSS. Setting this to true may affect build performance.
css.loaderOptions{}Pass options to CSS-related loaders.

Linting

nx lint <name> [options]

We use @nrwl/linter for linting, so the options are as documented here.

Unit Testing

nx test <name> [options]

We use @nrwl/jest for unit testing, so the options are as documented here.

E2E Testing

nx e2e <name> [options]

We use @nrwl/cypress for e2e testing, so the options are as documented here.

Modify the Webpack Configuration

Modify the webpack config by exporting an Object or Function from your project's configure-webpack.js file.

If your project does not have a configure-webpack.js file, then simply add it at the root of your project.

If the value is an Object, it will be merged into the final config using webpack-merge.

If the value is a function, it will receive the resolved config as the argument. The function can either mutate the config and return nothing, OR return a cloned or merged version of the config.

For more information see the Vue CLI documentation.

Updating Nx Plus Vue

Nx Plus Vue provides migrations which help you stay up to date with the latest version of Nx Plus Vue.

Not only do we migrate the version of Nx Plus Vue, but we also update the versions of dependencies which we install such as vue and vue-router.

We recommend waiting for Nx Plus Vue to update these dependencies for you as we verify that these versions work together.

How to Migrate

Generate migrations.json

All you have to do to update Nx Plus Vue to the latest version is run the following:

nx migrate @bananajs/nxvue
nx migrate @bananajs/nxvue@version # you can also specify version

This will fetch the specified version of @bananajs/nxvue, analyze the dependencies and fetch all the dependent packages. The process will keep going until the whole tree of dependencies is resolved. This will result in:

  • package.json being updated
  • migrations.json being generated

At this point, no packages have been installed, and no other files have been touched.

Now, you can inspect package.json to see if the changes make sense and install the packages by running npm install or yarn.

Run Migrations

migrations.json contains the transformations that must run to prepare the workspace to the newly installed versions of packages. To run all the migrations, invoke:

nx migrate --run-migrations=migrations.json