pub struct NpmBuild { /* private fields */ }
Expand description
Executes npm
commands before collecting resources.
Example usage:
Add build.rs
with call to bundle resources:
use static_files::NpmBuild;
fn main() {
NpmBuild::new("./web")
.install().unwrap() // runs npm install
.run("build").unwrap() // runs npm run build
.target("./web/dist")
.to_resource_dir()
.build().unwrap();
}
Include generated code in main.rs
:
include!(concat!(env!("OUT_DIR"), "/generated.rs"));
Implementations§
Source§impl NpmBuild
impl NpmBuild
pub fn new<P: AsRef<Path>>(package_json_dir: P) -> Self
Sourcepub fn executable(self, executable: &str) -> Self
pub fn executable(self, executable: &str) -> Self
Allow the user to set their own npm-like executable (like yarn, for instance)
Sourcepub fn change_detection(self) -> Self
pub fn change_detection(self) -> Self
Generates change detection instructions.
It includes package.json
directory, ignores by default node_modules
, package.json
and package-lock.json
and target directory.
Each time npm
changes timestamps on these files, so if we do not ignore them - it runs npm
each time.
It is recommended to put your dist files one level deeper. For example, if you have web
with package.json
and dist
just below that, you better generate you index.html somewhere in web\dist\sub_path\index.html
.
Reason is the same, npm
touches dist
each time and it touches the parent directory which in its turn triggers the build each time.
For complete example see: Angular Router Sample.
If default behavior does not work for you, you can use change-detection directly.
Sourcepub fn target<P: AsRef<Path>>(self, target_dir: P) -> Self
pub fn target<P: AsRef<Path>>(self, target_dir: P) -> Self
Sets target (default is node_modules).
Sourcepub fn stderr<S: Into<Stdio>>(self, stdio: S) -> Self
pub fn stderr<S: Into<Stdio>>(self, stdio: S) -> Self
Sets stderr for the next command.
You should set it again, if you need also redirect output for the next command.
Sourcepub fn stdout<S: Into<Stdio>>(self, stdio: S) -> Self
pub fn stdout<S: Into<Stdio>>(self, stdio: S) -> Self
Sets stdout for the next command.
You should set it again, if you need also redirect output for the next command.
Sourcepub fn to_resource_dir(self) -> ResourceDir
pub fn to_resource_dir(self) -> ResourceDir
Converts to ResourceDir
.